-
Notifications
You must be signed in to change notification settings - Fork 296
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
[repo] Automate release process #1841
[repo] Automate release process #1841
Conversation
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #1841 +/- ##
==========================================
+ Coverage 73.91% 73.96% +0.05%
==========================================
Files 267 294 +27
Lines 9615 10825 +1210
==========================================
+ Hits 7107 8007 +900
- Misses 2508 2818 +310 Flags with carried forward coverage won't be shown. Click here to find out more. |
- OpenTelemetry.Resources.AWS | ||
- OpenTelemetry.Resources.Azure | ||
- OpenTelemetry.Resources.Container | ||
- OpenTelemetry.Resources.Gcp | ||
- OpenTelemetry.Resources.Host | ||
- OpenTelemetry.Resources.Process | ||
- OpenTelemetry.Resources.ProcessRuntime |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just FYI I went with OpenTelemetry.Resources
for all of these here. Seems like we'll be there soon. For ones that aren't updated, they can still be released doing everything manually the old way. Or we could just use the existing names and fix them up as we go. I thought this might save a bit of work.
I like overall idea of releasing through GitHub pages. Based on what I see, the whole process has to be either fully handled by new pipeline or fully in the old way. The new way is IMO great for packages owned and released by maintainers. It works great.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM as the first step. Additional comments already posted.
- OpenTelemetry.Instrumentation.AspNet | ||
- OpenTelemetry.Instrumentation.AspNet.TelemetryHttpModule |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is kid of misleading. This packages are released always together.
Similar thing for OpenTelemetry.PersistentStorage.*
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Agree. Really this list should be the tag prefixes not components. I decided to go with components though because a) in most cases that is what users will be looking for (probably?) and b) it makes it easy to keep this list in sync with the other places it is mirrored (issue templates). I was hoping there was a way in yaml to pull in a list of items from another file so we could have a single source of truth for the set of known components but it doesn't seem possible 😢
How it works is you pick a component. The workflow will look for a csproj for that component. Then it will find the MinVerTagPrefix
for that project. The release is then performed for that MinVerTagPrefix
. So when it comes to OpenTelemetry.Instrumentation.AspNet*
and OpenTelemetry.PersistentStorage*
you have to kick off the job for one of the components in the set (doesn't matter which) and the job will release both. It is a bit odd, but I think the benefits outweigh the quirk(s)?
Let me respond to some of the other comments on here...
Based on what I see, the whole process has to be either fully handled by new pipeline or fully in the old way.
Not true! When you kick off the job a PR will be opened to update CHANGELOGs and public api files (for stable releases). Someone has to merge that. Then the bot will ask you if you want it to create the tag. If you choose to not have the bot create the tag, you can do everything the manual way. Probably easier to let the bot do it, but it isn't forced 😄
Allow created end-users requests as described in
Agree with this. To kick off this new job you need to be a collaborator in the repo (write access). This will help maintainers but it won't be widely useful. What I am thinking is add an issue template for "Request release" end users may use to request a release be done. I'm hoping the flow will be users select a component, and then the bot can look for code owners for the selected component to approve before kicking off the job. That would give us a nice flow/mechanism. Going to look at that as a follow-up.
Bulk releases
I think this is already covered by: https://github.com/open-telemetry/opentelemetry-dotnet-contrib/actions/workflows/core-version-update.yml
Maintainers can kick that workflow off anytime a core release happens and it will generate the PR to bump all the components. My goal is to have the main repo automatically call this but that isn't in place yet.
Changes
prepare-release.yml
workflow which has this flow (for some selected component + version):/CreateReleaseTag
on that PR and packages will be created and uploaded to NuGet and a release created. For stable releases a follow-up PR is opened to updatePackageValidationBaselineVersion
for the released projects.Here's a test run: CodeBlanch#32
If someone was so inclined, it should be possible to release from a phone now 😄