Operator collaboration #467

Open
opened 2023-07-19 16:32:47 +00:00 by yksflip · 12 comments
Owner

Hey,

As mentioned in the sharing abra - you're on your own! section, sharing server folders via git repos is a manual process.

This is very error prone and I forget it all the time. Ofc we could write some Makefile or anything to supplement this, but I think this would be nice for abra to have.

Also we tried to keep a manual Changelog for each server wich is very tedious! Couldn't abra also do that with a good git history?

here the rough idea:

  • abra server add foo
    introduces a git repo url parameter

  • abra app new foo
    git add / commit / push the new .env file

  • abra app config
    git add / commit / push the modified .env file

  • abra app deploy
    git commit --allow-empty -m "some useful informations about the deployment here?"

  • abra server changelog
    could show a git log with all the changes from a server

  • abra app changelog
    shows the git log of a individual app

  • maybe some command to leave a custom message

and absolutely git pull all the time.

this relates to #267 #271

Hey, As mentioned in the [_sharing abra - you're on your own!_ section]( https://docs.coopcloud.tech/operators/handbook/#sharing-abra), sharing server folders via git repos is a manual process. This is very error prone and I forget it all the time. Ofc we could write some Makefile or anything to supplement this, but I think this would be nice for abra to have. Also we tried to keep a manual Changelog for each server wich is very tedious! Couldn't abra also do that with a good git history? here the rough idea: * `abra server add foo` introduces a _git repo url_ parameter * `abra app new foo` git add / commit / push the new .env file * `abra app config` git add / commit / push the modified .env file * `abra app deploy` `git commit --allow-empty -m "some useful informations about the deployment here?"` * `abra server changelog` could show a `git log` with all the changes from a server * `abra app changelog` shows the `git log` of a individual app * maybe some command to leave a custom message and absolutely `git pull` all the time. this relates to #267 #271
yksflip added the
enhancement
abra
labels 2023-07-19 16:33:40 +00:00
Owner

Wow, yeh, that could be incredibly useful for collectively doing stuff. I can just imagine all the go-git bugs now 😆 For the abra server add foo: introduces a git repo url parameter, i'm wondering how to support the "all the server files in one repo" use case which is maybe more of what #267 is going for. Love the git command design so far!

Wow, yeh, that could be incredibly useful for collectively doing stuff. I can just imagine all the `go-git` bugs now 😆 For the `abra server add foo: introduces a git repo url parameter`, i'm wondering how to support the "all the server files in one repo" use case which is maybe more of what https://git.coopcloud.tech/coop-cloud/organising/issues/267 is going for. Love the git command design so far!
decentral1se added this to the Medium/large enhancements project 2023-07-19 22:26:53 +00:00
Owner

Yeh just not having a way to remember what was previously deployed is such a drag. I forget all the time instantly after deploying something and then am lost in the entropy. Idk where this complaint should go but I think solving just that, whether with Git or some other way via ideas in https://docs.coopcloud.tech/operators/handbook/#sharing-abra would be amazing.

Yeh just not having a way to remember what was previously deployed is such a drag. I forget all the time instantly after deploying something and then am lost in the entropy. Idk where this complaint should go but I think solving just that, whether with Git or some other way via ideas in https://docs.coopcloud.tech/operators/handbook/#sharing-abra would be amazing.
Owner
https://git.coopcloud.tech/coop-cloud/organising/issues/434#issuecomment-18253
decentral1se self-assigned this 2023-10-05 12:59:01 +00:00
decentral1se changed title from operator collaboration / syncing the server directory / server changelog to Operator collaboration 2023-10-05 12:59:20 +00:00
Owner

and absolutely git pull all the time

@yksflip how will we deal with merge conflicts? Just bail out gracefully and be like "ok, now you're on your own again until you solve this shit"?

I've got a proposal WIP for this https://pad.riseup.net/p/VewCbdPI-_RWR7ooe6v0-keep

> and absolutely git pull all the time @yksflip how will we deal with merge conflicts? Just bail out gracefully and be like "ok, now you're on your own again until you solve this shit"? I've got a proposal WIP for this https://pad.riseup.net/p/VewCbdPI-_RWR7ooe6v0-keep
Author
Owner

hmm, I guess so. I mean hopefully there wont be many conflicts as we perform git pull all the time? But stuff will go wrong and I think then it's the best to let the operator fix things and not assume anything.
Proposal looks great! nice you're tackling this :)

hmm, I guess so. I mean hopefully there wont be many conflicts as we perform `git pull` all the time? But stuff will go wrong and I think then it's the best to let the operator fix things and not assume anything. Proposal looks great! nice you're tackling this :)
Owner

A wild doubt appears #267 (comment)

A wild doubt appears https://git.coopcloud.tech/coop-cloud/organising/issues/267#issuecomment-18267
decentral1se modified the project from Medium/large enhancements to (deleted) 2023-10-06 09:27:58 +00:00
Member
  • abra app new foo
    git add / commit / push the new .env file

  • abra app config
    git add / commit / push the modified .env file

There should be a flag to deactivate this functionality to avoid loads of pushed commits while tinkering with configs. I would prefer to only commit a finished config instead of committing each little config changes (many undos and redos). And maybe an abra server commit command if you edit files manually.

> * `abra app new foo` > git add / commit / push the new .env file > > * `abra app config` > git add / commit / push the modified .env file There should be a flag to deactivate this functionality to avoid loads of pushed commits while tinkering with configs. I would prefer to only commit a finished config instead of committing each little config changes (many undos and redos). And maybe an `abra server commit` command if you edit files manually.
Owner

If adding the repo url is at server add time, and it is optional, and it can be added to the server after the server has been created without one (by either just git init in the server's directory, or putting it into a git repository, or with an abra command), and commits/pushes are on demand rather than cooked into other operations without an additional flag to those operations (so that tinkering, the setup loop, and other things don't create a ton of commits), I'm in favor of this mechanic. I could see warning if an operation would not commit/push the changes to the env file or if it's been N hours since a commit/push has been done and there are changes.

I think a bonus point would be to also create a remote on the server in question (again, at the operators discretion) so that abra could discover not only the canonical remote for that server but also the configurations for that server at abra add server time (for example if I switched my computer but forgot to bring my abra config).

If adding the repo url is at server add time, *and* it is optional, *and* it can be added to the server after the server has been created without one (by either just git init in the server's directory, or putting it into a git repository, or with an abra command), *and* commits/pushes are on demand rather than cooked into other operations without an additional flag to those operations (so that tinkering, the setup loop, and other things don't create a ton of commits), I'm in favor of this mechanic. I could see warning if an operation would not commit/push the changes to the env file or if it's been N hours since a commit/push has been done and there are changes. I think a bonus point would be to also create a remote on the server in question (again, at the operators discretion) so that abra could discover not only the canonical remote for that server but also the configurations for that server at `abra add server` time (for example if I switched my computer but forgot to bring my abra config).
Owner

Yeh, nice. The more explicit invocation of syncing could be a way to go. Still need to think this through...

I think a bonus point would be to also create a remote on the server in question (again, at the operators discretion) so that abra could discover not only the canonical remote for that server but also the configurations for that server at abra add server time (for example if I switched my computer but forgot to bring my abra config).

Super interesting idea! I would love to have a way to bootstrap a shared SSH config into a developer machine (imagine a Include ~/.abra/ssh/config which is appended to the ~/.ssh/config?) and having a way to grab server configurations (one or all) could potentially really speed up onboarding to get access...

Yeh, nice. The more explicit invocation of syncing could be a way to go. Still need to think this through... > I think a bonus point would be to also create a remote on the server in question (again, at the operators discretion) so that abra could discover not only the canonical remote for that server but also the configurations for that server at abra add server time (for example if I switched my computer but forgot to bring my abra config). Super interesting idea! I would **love** to have a way to bootstrap a shared SSH config into a developer machine (imagine a `Include ~/.abra/ssh/config` which is appended to the `~/.ssh/config`?) and having a way to grab server configurations (one or all) could potentially really speed up onboarding to get access...
Owner

@cas @moritz @yksflip @3wordchant et. al here is a design proposal:

https://pad.riseup.net/p/IebZQkpe3OOpYyVT8f1j-keep

Feedback welcome!

I went for a trimmed down version, focusing on syncing the version of the app for the deploy/upgrade/rollback commands.

It isn't on demand as you mentioned @cas as I fear folks might forget to sync the versions manually. The compromise is that there is much less syncing going on than in the original design above. Sync of other details could certainly be on demand in future.

Can move towards a resolution/budget if consensus starts to emerge 🌞

UPDATE: https://docs.coopcloud.tech/federation/resolutions/in-progress/013/

@cas @moritz @yksflip @3wordchant et. al here is a design proposal: > https://pad.riseup.net/p/IebZQkpe3OOpYyVT8f1j-keep Feedback welcome! I went for a trimmed down version, focusing on syncing the version of the app for the `deploy`/`upgrade`/`rollback` commands. It isn't on demand as you mentioned @cas as I fear folks might forget to sync the versions manually. The compromise is that there is much less syncing going on than in the original design above. Sync of other details could certainly be on demand in future. Can move towards a resolution/budget if consensus starts to emerge 🌞 **UPDATE**: https://docs.coopcloud.tech/federation/resolutions/in-progress/013/
Author
Owner

great! I think this should tackle the overall pain points :)

great! I think this should tackle the overall pain points :)
decentral1se removed their assignment 2023-11-27 10:43:28 +00:00
decentral1se removed this from the (deleted) project 2023-11-27 10:43:31 +00:00
Owner

The proposal is still under consideration, there seems to be some concerns around it still. Polling for support in the federation channel. Please also see latest minutes: https://pad.autonomic.zone/dKJl5gKVStiV1yGmK-ya9Q?both

The proposal is still under consideration, there seems to be some concerns around it still. Polling for support in the federation channel. Please also see latest minutes: https://pad.autonomic.zone/dKJl5gKVStiV1yGmK-ya9Q?both
Sign in to join this conversation.
No Milestone
No project
No Assignees
4 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: coop-cloud/organising#467
No description provided.