WIP: operator collaboration #457
Closed
decentral1se
wants to merge 1 commits from
opcollab1 into main
pull from: opcollab1
merge into: :main
:main
:renovate/golang-1.27
:renovate/github.com-charmbracelet-bubbletea-2.x
:fix/492
:local-integration-testing
:renovate/github.com-charmbracelet-lipgloss-2.x
:renovate/otel-weaver-0.x
:renovate/codespell-2.x
:renovate/tonistiigi-xx-1.x
:renovate/alpine-3.x
:renovate/github.com-charmbracelet-log-2.x
:chore-deps
:fix/deps
:fix/613
No Reviewers
Labels
Clear labels
bug
build
ci/cd
critical fix
design
documentation
duplicate
easy-first-issue
enhancement
help wanted
i10n
i18n
installer
invalid
question
release
release-candidate
security
tech-debt
test
wontfix
Something is not working
go build related issues
Building things with CI/CD
https://docs.coopcloud.tech/federation/resolutions/passed/010/
UI/UX
Documenting all the things
This issue or pull request already exists
Something for new people to get stuck into. We hope it's easy!
New feature
Need some help
Everything to do with localisation
Everything to do with internationalisation
Everything to do with the install script.
Something is wrong
More information is needed
Release management
Related to the new release candidate
Security related
Unit/integration testing
This won't be fixed
No labels
Milestone
No items
No Milestone
Projects
Clear projects
No projects
Assignees
3wordchant
aadil (Aadil Ayub)
abra-bot (Abra Bot)
ammaratef45
amras (Sarma)
Apfelwurm
BornDeleuze
Brooke
carla
cas (Cassowary)
coopcloud
cyrnel
decentral1se (d1)
dede
devydave
fauno (fauno)
iexos
jade (Jade Ambrose)
jjsfunhouse
jmakdah2 (Jackie Makdah)
joe-irving (Joe Irving)
kawaiipunk (KawaiiPunk)
knoflook
kolaente
lambdabundesverband
linnealovespie (April)
moosemower
moritz
notplants
oxaliq (sorrel)
p4u1
pharaohgraphy (Andrew 🐦🔥❤️🔥✴️)
renovate-bot (Comrade Renovate Bot)
ripclap
simon
sixsmith (Sixsmith)
stevensting
trav (Trav Fryer)
val (val (he/him))
yksflip
Clear assignees
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: toolshed/abra#457
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
coop-cloud/organising#467
RFC
OK, I'm not going for the "full automation from the start" approach. There were many great ideas explored on the ticket and elsewhere but I fear that established manual workflows might be radically different. I don't want to break those by bringing out some One True Automation Way implemented in
abra?So, this is the first step, the commands that allow you to (hopefully) do what you're already doing with
/usr/bin/gitbut now withabraand a bit of convenience slapped on. Hopefully this allows us to figure out what we really need going ahead.Two Git repo configs are supported.
$ABRA_DIR/servers/.git$ABRA_DIR/servers/<server>/.gitSymlinks are honoured. You can also mix and match, apparently Git knows what to do! I've tested this briefly.
There are (so far) 2 new commands and they operate on specific apps. This is an attempt to minimise the merge conflict space while we get started.
abra app diff <domain>diffs the unstaged changesabra app push <domain>commits/pushes changes (it diffs, asks for confirmation and a commit message (or pass--msg/-m))It's possible to
add/commit/pusha single file while there are unstaged / untracked files elsewhere in the git repo.This is already pretty useful due to toolshed/organising#625 (and further work). When you do a
deploy/undeploy/upgrade/rollback, the version is written to the.envof the app.However, when you
git pull, this is for the whole git repo. So, my design starts to break down for pulling in changes from others 😭 Got any ideas?abra pull <repo>?2908ff0a9dto4d7c812fe2I think it's a great idea to start with a cli workflow before going on full-automation! Operator collaboration is much more complex than it looked like in the beginning.
Just some thoughts thought out loud. ..
It looks difficult to map the two models of server and app to one git repo.
Having sub-repo per app would be maybe the right mapping, but it feels overcomplicated and very difficult to use outside of abra.
Maybe pull is rather a server action? But it feels a bit wrong to not be able to pull an app directly, when all other versioning actions are per app.
From a cli / workflow perspective i'd prefer a
abra app pull <domain>. Idk how likely it is to run here into conflicts if we'd justgit pullhere. But it could definitly be very misleading if suddenly conflicts from a different app .env appear.From a design perspective I'd prefer
abra server pullNote that we at K & M are using
$ABRA_DIR/.git. But maybe we could also switch to$ABRA_DIR/servers/.git. I would prefer it if it were flexible.In general I'm not sure if it is too early to implement full operator sync in abra. I would be interested how different collectives handle this currently and where are the main pain
For us one pain point is, that people may forget to pull before deploying. A simple fix for that could be to check if there are remote commits, that are not local and then ask for
Maybe we could focus save abra + git usage before trying to automate this?
Will need to think about this some more, and I'm also interested what others think :)
For git repo detection we could check if the
.envfile is inside a git repoAmazing stuff folx, thanks for weighing in. From this and a quick chat on the Matrix tech channel, I think it is now clear to me that we "don't know what we're dealing with".
I will take time during the upcoming kite flying hour to write up some questions that I will send to you all (and publish to the network for more feedback). Then we can try once more to come back with a proposal / design which does meet concrete needs.
Also, it'll be fun to see everyones whacky workflows 😂 Feel free to keep bringing in feedback on this ticket, I'll read it!
Removing from the upcoming release planning for now. We do have toolshed/organising#661 in the meantime, which is a pretty significant leap forward.
Pull request closed