Improving the recipe release process #663
Closed
opened 2025-01-01 15:43:39 +00:00 by decentral1se
·
11 comments
Labels
Clear labels
abra
awaiting-feedback
backups
bug
build
ci/cd
community organising
contributing
coopcloud.tech
design
documentation
duplicate
enhancement
fedi
fedi-infra
finance
funding
good first issue
help wanted
installer
legal
performance
proposal
question
security
test
wontfix
Everything to do with abra
Ping/pong on comms
Something is not working
Go build related issues
Getting the robots into the mix
Opening this thing up
Contributors stuff
Our main website
Design thinking required
Let's write things together
This issue or pull request already exists
New feature
Democratic decision making
Money things
Anything related to grant funding
Easy start with development
Need some help
Installation related issues
Performance related
Large change which requires feedback & decisin making
More information is needed
Securing our shit
Unit or integration test suite
This won't be fixed
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/organising#663
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.
/cc @3wordchant @iexos
Less magic (and things breaking) in
abra recipe releaseand a clear separation in the pushing of changes to a remote.We should also take this opportunity to improve clean up in the release process, when things go wrong? I think it might make sense to rollback the commit if something breaks. A brainstorm on testing scenarios for integration testing is welcome!
Thoughts?
For me it makes total sense to seperate
recipe releaseandrecipe publish. Though on the naming I am not sure, I associate "making a release" with publishing as well.Is there any reason why
recipe sync, which does nothing but change the version label iirc, should be seperated from creating the commit (i.e. release)? Doesrecipe releasewithout publish anything more than creating that commit (and i think asking for release notes)?My proposal right now:
recipe upgradeas it isrecipe syncchange the label like before but also create the commitrecipe releasecheck if push and tagging will work, then create the tag and push itrecipe publishinstead, it might make the transition clearer. Alsosynccould then be namedreleaseinstead, though that might reintroduce confusionIt creates the git tag.
I'm torn about this. Being able to test
abra app upgradewithout pushing is useful. But, I've seen multiple situations where people release an upgrade but don't push the tag, which is very nonideal. Happy to defer to whoever has a clear vision here.This is actually the reason I brought it up. How does this actually happen? I image just using
git pushwithout--tags?Releases should be
Each of these fails sometimes.
I feel we need a common workflow that enables both and is supported and pushed for by
abra.I try to break it down to what is happening right now, maybe we find some clarity as to what would be the ideal release flow:
abra recipe upgradeand/or manual)abra recipe sync)abra recipe release)abra recipe release)abra recipe releaseabra recipe release)abra recipe release --publish)abra recipe releasealready done or fails in some way, need to dogit push --tagsI am not sure if all of this is correct, please add anything that is missing or wrong!
So here is another try at a new flow:
abra recipe upgrade:abra recipe release, which does all of this:abra recipe check? "did you actually test this? ;)")releases/nextabra recipe releaseagain later. It should recognize release commitsOf course this needs thorough testing so we actually trust this. The release process is complex. I feel the more we automate it, the easier it will be for maintainers to not mess up. I think its worth the additional complexity in
abra, though easy for me to say as I don't maintain it 😅amazing @iexos tysm for writing this all out
join me in this rabbit hole #514
And related, there is also the WIP maintainers proposal:
We're due a collective brain dump here, let's try to get ourselves into the next kite flying hour?
Move `--publish/-p` to a new `abra recipe publish`to Improving the recipe release processHey, just jumping into the discussion here.
What do you think of delegating the actual release tagging to Drone?
I think all the recipe development tasks we do shouldn't depend on actual tags, e.g. checking if an upgrade works or else. I'd love to be able to work on branches, have pull requests with automated checks, quality gates and optionally reviews. A release/new tag should therefore only be created when merged into main.
So either I'd like to manually start a drone job from the UI or it might be able to check for a new version in the compose.yml label for the app?
And with that, I'd love to be able to have feature-branch deployments. So when specifing a version in the .env-file, I could add the branch name to always deploy the latest version from the branch?
Might also allow to ommit the -C flag for alle those commands in that situation?
Lots of rambling around here, but I'd love to talk about this in a kite-flying session!
PS: I previously worked in a team where we've made it so fast and fluent to deploy stuff via CI/CD, that we all preferred to use those tools over manual deployments or release processes. Really loved that actually
@simon nice! check #514 I think that'd be going more in that direction. We need some sort of semi-automated process with human review in the middle or towards the end somehow.
FYI I'm leaning towards the "new flow" in #663 (comment) from @iexos 👏
two small improvements:
abra recipe release -pfails it will now soft reset to remove the commit and delete the tag, allowing you to run the command again (after you unbork your SSH setup) to complete the publishing (without a manual git work-around)abra recipe syncwill show all the proposed changes as a visual aid to decide which kind of bump it should be@3wordchant I don't see why this is would be needed, isn't it the same as using
abra app deploy --force --chaoswith the unreleased version? I am working on breaking down my proposal and would like to make--publishthe default and remove the flag.Alright, I bombarded the abra issue tracker with some stuff I mentioned above 😅
toolshed/abra#682 toolshed/abra#683 toolshed/abra#684 toolshed/abra#685
These are all local changes to abra, not touching the subject of CI/deploy testing which might actually be more important (but also more involved).
Thanks @iexos, let's run with those tickets and close this galaxy brain one. Thanks all!