-
Notifications
You must be signed in to change notification settings - Fork 29
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
How to release (and version) this repo #22
Comments
I'm not sure I have a way to detect changes in Java since we don't check anything in -- maybe we can compare the build result with the last release (will have to wait till we have an actual release), as the build is configured to be reproducible. Sometimes projects with multiple artifacts (within java) tend to just do releases across the whole suite since it feels consistent (but not functionally different for many artifacts). I'm okay just always doing releases on all languages if the proto changes or even if one language requires a build update. |
Would also like to figure out the pre-GA strat so I can import and use this stuff in sigstore-java. |
Ahh, I assume pre-GA strat will be "semver lite" (minor version bumps => breaking change, patch bumps => anything nonbreaking) but no guarantees. |
I think your proposal looks good @znewman01, the bundle mime time as of no is proposed to only contain major and minor version, which I think is ok with your proposal, as patch versions should not change the generated code. We should document how to work with releases, and make sure that we capture how the mime type should follow the same versioning as the release it self. |
Copying from #26. @tetsuo-cpp writes>
|
So what's the plan on credentials. Do we want release builds to run on cloud build in the sigtsore gcp project and use secrets from there to do releases? |
My 0.02c on releases and versions:
|
I’ll echo William on both counts. If secrets and build config etc can live in GitHub that simplifies things a lot (fewer things to keep track of). But if that’s not really going to work for Java we can make google cloud work
|
Some open questions about triggering a release Do releases automatically trigger on new tags OR should each release be manually initiated
|
I used to be in favor of automatic releases on new matching tags (i.e.
IMO this is a good reason to not keep tags/versions between all packages in strict lockstep. A pattern I've used before here is to have a distinct release pattern for each package in the repository, e.g.:
...where only the major version component indicates compatibility with a particular (matching) version of the protobuf specs. But that deviates slightly from what @znewman01 proposed 🙂 |
Can you elaborate a bit more on this? I'm not really following. Would there be one workflow for the Release and another which pulls the artifacts and publishes them to each language's canonical package registry?
We could have a workflow that does not publish anything before all builds succeeds right? |
There's also the case that the language specific release workflow could break and needs an update. |
I'm not sure if was in this issue or somewhere else, but we also talked about having a single |
I.e each update to the repo would publish a new development version. |
What I mean is something like In that case, there's only one workflow for the release, and the workflow does its own build for the release internally. Since this repo has multiple languages/packages, we'd probably want |
I am okay abandoning the "one tag for all releases" model and it sounds like given the complexity across many different packages the "semi-manual" flow makes sense. |
In that case, I can throw together some metadata + CI work to get an initial alpha version of the Python package published! I'll have that ready this afternoon, if that works for everyone else. |
(I'll need to coordinate with one of the repo owners/admins to get the PyPI API token added to the repo's secrets.) |
I am one of those folks so happy to be that person. Just sent you a message on Slack. |
Alright, so after some discussion, I think this is the strategy python and java will do:
|
See sigstore#22. Signed-off-by: Zachary Newman <zjn@chainguard.dev>
See #22. Signed-off-by: Zachary Newman <zjn@chainguard.dev> Signed-off-by: Zachary Newman <zjn@chainguard.dev>
PyPI appears to work! https://pypi.org/project/sigstore-protobuf-specs/0.0.1a1/ (CC @woodruffw) |
Awesome! Thanks a ton @znewman01! |
Based on the conversation above, I think this issue can be resolved. To summarize:
Does that sound correct/accurate to you @znewman01 @loosebazooka? |
We're going to publish libraries across a lot of ecosystems. Don't want a manual process here. Also want the versions that clients see to make sense/generally align. Somewhat tricky because there are two distinct things we're publishing:
Proposal (post-1.0):
v1.0.3
or similar (we have to follow Go conventions because Go needs you to know it's the most important)Annoyingly, a bump to the protoc version might cause a patch change for one language but be a noop for others...in such cases, we can either (a) do a noop release, or (b) skip that release (we will never publish that version for this language, the releases might go
1.0.3
to1.0.5
)CC @loosebazooka
The text was updated successfully, but these errors were encountered: