Comments (13)
Possible solution to this discussed with @adierkens:
Set a status on all open PRs to fail while release is in progress. This way a user cannot merge until this status turns green.
Kinda weird but would fix the problem
from auto.
That's certainly one solution. I'm trying to handle this at the CI level by queuing master builds. Unfortunately Circle doesn't provide a native mechanism for this, but @eddiewebb created an orb to handle it.
You can checkout reaction to see our setup. I'm not 100% certain that it solves the problem (especially if instead of checking out master the steps are checking out a hash) but I hope it gets us close.
from auto.
If you queue the master build you run into the issue where you're first CI build of master makes commits on top of the stuff that's already been merged (to bump versions) -- or could hit merge conflicts in the release.
Not sure if there's a clean way of doing it
from auto.
Also:
- Merge PR 1 with
patch
label - Merge PR 2 with
minor
label - CI runs and calculates a
minor
bump and includes both PRs - CI runs again and publishes a
patch
with no changes
Should be:
- Merge PR 1 with
patch
label - Merge PR 2 with
minor
label - CI runs and calculates a
patch
bump and includes only PR 1 - CI runs and calculates a
minor
bump and includes only PR 2
from auto.
Yeah, that's certainly a concern... You'd need a way to update the hash that CI build is pointing to. That or have a similar gated mechanism to the queuing that kills incoming builds and have the end of the release process trigger another CI build if there are pending things to be released.
Granted, that's not a general solution. It implies a lot of specific implementation around CI.
from auto.
Could auto-release
publish multiple versions in a single CI build?
from auto.
Maybe, the problem is a lot of this behavior is CI dependent and auto
doesn't interact with the CI it just runs on it.
from auto.
I was thinking in the context of Travis CI specifically, where pushing interrupts the current build. In that case, auto-release
should be able to detect that the patch
PR was merged before the minor
PR and appropriately perform two releases as expected. AFAICT, this behavior wouldn't conflict with other CI services that don't interrupt the current build on push.
from auto.
In that case this should already work for travis:
minor
merged, starts CI runpatch
merged, travis interrupts CI run before theminor
gets tagged or released to GitHubauto version
finds the latest release to be the one beforeminor
was merged- a
minor
version is released with both the minor and patch
The case where you might run into problems is where the second PR is merged between the publish hook and auto release
. But in this case we might already have code that can handle that.
from auto.
If you re-read my comment, you'll see I said "patch before minor" (not the opposite).
from auto.
The case where "minor before patch" is more important though. if the minor
is the first PR we need to respect that label more.
But re-reading what you want is on the second CI run detect the interrupted run and perform two separate shipit
s for each release, regardless of release type. Am i correct?
from auto.
The case where "minor before patch" is more important though. if the minor is the first PR we need to respect that label more.
What unwanted effect would you be avoiding in that scenario?
But re-reading what you want is on the second CI run detect the interrupted run and perform two separate shipits for each release, regardless of release type. Am i correct?
Actually, you would be detecting the patch
PR being not yet released. The cause (eg: interrupted CI build) is irrelevant to auto-release
, I think. You could still merge two PRs of the same release type (eg: minor) into the same version if you detect that neither is released yet.
from auto.
🚀 Issue was released in v7.15.1 🚀
from auto.
Related Issues (20)
- Custom PR description message for canary releases HOT 5
- Have auto ignore commits older than a certain commit HOT 2
- [Question] Why pr-check doesn't have an option to throw an error? HOT 1
- Chrome plugin does not support next/prerelease HOT 1
- auto release breaks due to silent lerna upgrade HOT 2
- Gitea support
- Auto fails to keep the latest prerelease (next) version of independant package after new commit
- auto version skipRelease behaviour HOT 6
- Auto cannot push to a protected branch HOT 1
- Auto not bumping version HOT 2
- Generalise versioning scheme past semver (e.g. calver, unitary, or alphabetical release) HOT 2
- Allow skipped releases to be treated as success HOT 2
- 11.0.2 fails to create github release HOT 4
- [Q or Feature Request] Need to bump version separately from `shipit` - currently get double bump HOT 9
- Error: Working directory is not clean, make sure all files are committed HOT 1
- Default labels conflict with Dependabot HOT 1
- Git-tag does not use latest tag when multiple tags on same commit
- Release process fails if release notes created by auto grow too big HOT 2
- NPM: Auto doesn't set latest GH release when publishing
- Github Actions - Error when creating release & Github package HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from auto.