[repo/examples] Prepare to .NET9 #1717
Workflow file for this run
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.ConfluentKafka | |
- 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.OperatingSystem | |
- OpenTelemetry.Resources.Process | |
- OpenTelemetry.Resources.ProcessRuntime | |
- OpenTelemetry.Sampler.AWS | |
- OpenTelemetry.SemanticConventions | |
description: 'Release component' | |
required: true | |
version: | |
type: string | |
description: 'Release version' | |
required: true | |
releaseIssue: | |
type: string | |
description: 'Release request issue' | |
required: false | |
pull_request: | |
types: | |
- closed | |
issues: | |
types: | |
- opened | |
- edited | |
issue_comment: | |
types: | |
- created | |
jobs: | |
automation: | |
uses: ./.github/workflows/automation.yml | |
secrets: inherit | |
prepare-release-pr: | |
runs-on: ubuntu-latest | |
needs: automation | |
if: github.event_name == 'workflow_dispatch' && needs.automation.outputs.enabled | |
env: | |
GH_TOKEN: ${{ secrets[needs.automation.outputs.token-secret-name] }} | |
steps: | |
- name: check out code | |
uses: actions/checkout@v4 | |
with: | |
token: ${{ secrets[needs.automation.outputs.token-secret-name] }} | |
- name: Create GitHub Pull Request to prepare release | |
shell: pwsh | |
run: | | |
Import-Module .\build\scripts\prepare-release.psm1 | |
CreatePullRequestToUpdateChangelogsAndPublicApis ` | |
-gitRepository '${{ github.repository }}' ` | |
-component '${{ inputs.component }}' ` | |
-version '${{ inputs.version }}' ` | |
-requestedByUserName '${{ github.event.sender.login }}' ` | |
-releaseIssue '${{ inputs.releaseIssue }}' ` | |
-targetBranch '${{ github.ref_name }}' ` | |
-gitUserName '${{ needs.automation.outputs.username }}' ` | |
-gitUserEmail '${{ needs.automation.outputs.email }}' | |
lock-pr-and-post-notice-to-create-release-tag: | |
runs-on: ubuntu-latest | |
needs: automation | |
if: | | |
github.event_name == 'pull_request' | |
&& github.event.action == 'closed' | |
&& github.event.pull_request.user.login == needs.automation.outputs.username | |
&& github.event.pull_request.merged == true | |
&& startsWith(github.event.pull_request.title, '[release] Prepare release ') | |
&& needs.automation.outputs.enabled | |
env: | |
GH_TOKEN: ${{ secrets[needs.automation.outputs.token-secret-name] }} | |
steps: | |
- name: check out code | |
uses: actions/checkout@v4 | |
with: | |
token: ${{ secrets[needs.automation.outputs.token-secret-name] }} | |
- name: Lock GitHub Pull Request to prepare release | |
shell: pwsh | |
run: | | |
Import-Module .\build\scripts\prepare-release.psm1 | |
LockPullRequestAndPostNoticeToCreateReleaseTag ` | |
-gitRepository '${{ github.repository }}' ` | |
-pullRequestNumber '${{ github.event.pull_request.number }}' ` | |
-botUserName '${{ needs.automation.outputs.username }}' | |
create-release-tag-unlock-pr-post-notice: | |
runs-on: ubuntu-latest | |
needs: automation | |
if: | | |
github.event_name == 'issue_comment' | |
&& github.event.issue.pull_request | |
&& github.event.issue.locked == true | |
&& github.event.comment.user.login != needs.automation.outputs.username | |
&& contains(github.event.comment.body, '/CreateReleaseTag') | |
&& startsWith(github.event.issue.title, '[release] Prepare release ') | |
&& github.event.issue.pull_request.merged_at | |
&& needs.automation.outputs.enabled | |
env: | |
GH_TOKEN: ${{ secrets[needs.automation.outputs.token-secret-name] }} | |
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 | |
token: ${{ secrets[needs.automation.outputs.token-secret-name] }} | |
- name: Create release tag | |
id: create-tag | |
shell: pwsh | |
run: | | |
Import-Module .\build\scripts\prepare-release.psm1 | |
CreateReleaseTagAndPostNoticeOnPullRequest ` | |
-gitRepository '${{ github.repository }}' ` | |
-pullRequestNumber '${{ github.event.issue.number }}' ` | |
-botUserName '${{ needs.automation.outputs.username }}' ` | |
-gitUserName '${{ needs.automation.outputs.username }}' ` | |
-gitUserEmail '${{ needs.automation.outputs.email }}' | |
update-changelog-release-dates-on-prepare-pr-post-notice: | |
runs-on: ubuntu-latest | |
needs: automation | |
if: | | |
github.event_name == 'issue_comment' | |
&& github.event.issue.pull_request | |
&& github.event.issue.state == 'open' | |
&& github.event.comment.user.login != needs.automation.outputs.username | |
&& contains(github.event.comment.body, '/UpdateReleaseDates') | |
&& startsWith(github.event.issue.title, '[release] Prepare release ') | |
&& github.event.issue.pull_request.merged_at == null | |
&& needs.automation.outputs.enabled | |
env: | |
GH_TOKEN: ${{ secrets[needs.automation.outputs.token-secret-name] }} | |
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 | |
token: ${{ secrets[needs.automation.outputs.token-secret-name] }} | |
- name: Update release date | |
id: create-tag | |
shell: pwsh | |
run: | | |
Import-Module .\build\scripts\prepare-release.psm1 | |
UpdateChangelogReleaseDatesAndPostNoticeOnPullRequest ` | |
-gitRepository '${{ github.repository }}' ` | |
-pullRequestNumber '${{ github.event.issue.number }}' ` | |
-botUserName '${{ needs.automation.outputs.username }}' ` | |
-commentUserName '${{ github.event.comment.user.login }}' ` | |
-gitUserName '${{ needs.automation.outputs.username }}' ` | |
-gitUserEmail '${{ needs.automation.outputs.email }}' | |
process-release-request-issue: | |
runs-on: ubuntu-latest | |
needs: automation | |
if: | | |
startsWith(github.event.issue.title, '[release request] ') | |
&& github.event.issue.pull_request == null | |
&& needs.automation.outputs.enabled | |
&& ( | |
(github.event_name == 'issues') | |
|| | |
(github.event_name == 'issue_comment' | |
&& github.event.issue.state == 'open' | |
&& contains(github.event.comment.body, '/PrepareRelease') | |
&& github.event.comment.user.login != needs.automation.outputs.username) | |
) | |
env: | |
GH_TOKEN: ${{ secrets[needs.automation.outputs.token-secret-name] }} | |
steps: | |
- name: check out code | |
uses: actions/checkout@v4 | |
with: | |
token: ${{ secrets[needs.automation.outputs.token-secret-name] }} | |
- name: Process release request issue being opened or commented | |
shell: pwsh | |
run: | | |
Import-Module .\build\scripts\prepare-release.psm1 | |
TagCodeOwnersOnOrRunWorkflowForRequestReleaseIssue ` | |
-gitRepository '${{ github.repository }}' ` | |
-targetBranch '${{ github.event.repository.default_branch }}' ` | |
-triggeringEventName '${{ github.event_name }}' ` | |
-approvingGroups '@${{ github.repository_owner }}/dotnet-approvers @${{ github.repository_owner }}/dotnet-maintainers' ` | |
-requestedByUserName '${{ github.event.comment.user.login || github.event.sender.login }}' ` | |
-issueNumber '${{ github.event.issue.number }}' ` | |
-issueBody $env:ISSUE_BODY ` | |
-gitUserName '${{ needs.automation.outputs.username }}' ` | |
-gitUserEmail '${{ needs.automation.outputs.email }}' | |
env: | |
ISSUE_BODY: ${{ github.event.issue.body }} |