Prepare for a release #14
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Prepare for a release | |
on: | |
workflow_dispatch: | |
inputs: | |
component: | |
type: choice | |
options: | |
- OpenTelemetry.Exporter.Geneva | |
- OpenTelemetry.Exporter.InfluxDB | |
- OpenTelemetry.Exporter.Instana | |
- OpenTelemetry.Exporter.OneCollector | |
- OpenTelemetry.Exporter.Stackdriver | |
- OpenTelemetry.Extensions | |
- OpenTelemetry.Extensions.AWS | |
- OpenTelemetry.Extensions.Enrichment | |
- OpenTelemetry.Instrumentation.AspNet | |
- OpenTelemetry.Instrumentation.AspNet.TelemetryHttpModule | |
- OpenTelemetry.Instrumentation.AspNetCore | |
- OpenTelemetry.Instrumentation.AWS | |
- OpenTelemetry.Instrumentation.AWSLambda | |
- OpenTelemetry.Instrumentation.Cassandra | |
- OpenTelemetry.Instrumentation.ElasticsearchClient | |
- OpenTelemetry.Instrumentation.EntityFrameworkCore | |
- OpenTelemetry.Instrumentation.EventCounters | |
- OpenTelemetry.Instrumentation.GrpcCore | |
- OpenTelemetry.Instrumentation.GrpcNetClient | |
- OpenTelemetry.Instrumentation.Hangfire | |
- OpenTelemetry.Instrumentation.Http | |
- OpenTelemetry.Instrumentation.MassTransit | |
- OpenTelemetry.Instrumentation.MySqlData | |
- OpenTelemetry.Instrumentation.Owin | |
- OpenTelemetry.Instrumentation.Process | |
- OpenTelemetry.Instrumentation.Quartz | |
- OpenTelemetry.Instrumentation.Runtime | |
- OpenTelemetry.Instrumentation.SqlClient | |
- OpenTelemetry.Instrumentation.StackExchangeRedis | |
- OpenTelemetry.Instrumentation.Wcf | |
- OpenTelemetry.PersistentStorage.Abstractions | |
- OpenTelemetry.PersistentStorage.FileSystem | |
- OpenTelemetry.Resources.AWS | |
- OpenTelemetry.Resources.Azure | |
- OpenTelemetry.Resources.Container | |
- OpenTelemetry.Resources.Gcp | |
- OpenTelemetry.Resources.Host | |
- OpenTelemetry.Resources.Process | |
- OpenTelemetry.Resources.ProcessRuntime | |
- OpenTelemetry.Sampler.AWS | |
- OpenTelemetry.SemanticConventions | |
description: 'Release component' | |
required: true | |
version: | |
type: string | |
description: 'Release version' | |
required: true | |
pull_request: | |
types: | |
- closed | |
issue_comment: | |
types: | |
- created | |
permissions: | |
contents: write | |
pull-requests: write | |
jobs: | |
prepare-release-pr: | |
if: github.event_name == 'workflow_dispatch' | |
runs-on: windows-latest | |
steps: | |
- name: check out code | |
uses: actions/checkout@v4 | |
- name: Create GitHub Pull Request to prepare release | |
shell: pwsh | |
run: | | |
Import-Module .\build\scripts\prepare-release.psm1 | |
CreatePullRequestToUpdateChangelogsAndPublicApis ` | |
-component '${{ inputs.component }}' ` | |
-version '${{ inputs.version }}' ` | |
-targetBranch '${{ github.ref_name }}' | |
env: | |
GH_TOKEN: ${{ github.token }} | |
lock-pr-and-post-notice-to-create-release-tag: | |
if: | | |
github.event_name == 'pull_request' | |
&& github.event.action == 'closed' | |
&& github.event.pull_request.user.login == 'github-actions[bot]' | |
&& github.event.pull_request.merged == true | |
&& startsWith(github.event.pull_request.title, '[repo] Prepare release ') | |
runs-on: windows-latest | |
steps: | |
- name: check out code | |
uses: actions/checkout@v4 | |
- name: Lock GitHub Pull Request to prepare release | |
shell: pwsh | |
run: | | |
Import-Module .\build\scripts\prepare-release.psm1 | |
LockPullRequestAndPostNoticeToCreateReleaseTag ` | |
-pullRequestNumber '${{ github.event.pull_request.number }}' | |
env: | |
GH_TOKEN: ${{ github.token }} | |
create-release-tag-unlock-pr-post-notice: | |
if: | | |
github.event_name == 'issue_comment' | |
&& github.event.issue.pull_request | |
&& github.event.issue.locked == true | |
&& contains(github.event.comment.body, '/CreateReleaseTag') | |
&& startsWith(github.event.issue.title, '[repo] Prepare release ') | |
&& github.event.issue.pull_request.merged_at | |
runs-on: windows-latest | |
outputs: | |
tag: ${{ steps.create-tag.outputs.tag }} | |
steps: | |
- name: check out code | |
uses: actions/checkout@v4 | |
with: | |
# Note: By default GitHub only fetches 1 commit which fails the git tag operation below | |
fetch-depth: 0 | |
- name: Create release tag | |
id: create-tag | |
shell: pwsh | |
run: | | |
Import-Module .\build\scripts\prepare-release.psm1 | |
$tag = '' | |
CreateReleaseTag ` | |
-pullRequestNumber '${{ github.event.issue.number }}' ` | |
-actionRunId '${{ github.run_id }}' ` | |
-tag ([ref]$tag) | |
echo "tag=$tag" >> $env:GITHUB_OUTPUT | |
env: | |
GH_TOKEN: ${{ github.token }} | |
invoke-package-workflow: | |
needs: create-release-tag-unlock-pr-post-notice | |
uses: ./.github/workflows/publish-packages.yml | |
with: | |
tag: ${{ needs.create-release-tag-unlock-pr-post-notice.outputs.tag }} | |
secrets: inherit | |
post-packages-ready-notice: | |
needs: | |
- create-release-tag-unlock-pr-post-notice | |
- invoke-package-workflow | |
runs-on: windows-latest | |
steps: | |
- name: check out code | |
uses: actions/checkout@v4 | |
- name: Post notice when packages are ready | |
shell: pwsh | |
run: | | |
Import-Module .\build\scripts\prepare-release.psm1 | |
PostPackagesReadyNotice ` | |
-pullRequestNumber '${{ github.event.issue.number }}' ` | |
-tag '${{ needs.create-release-tag-unlock-pr-post-notice.outputs.tag }}' ` | |
-packagesUrl '${{ needs.invoke-package-workflow.outputs.artifact-url }}' | |
env: | |
GH_TOKEN: ${{ github.token }} |