120 lines
4.0 KiB
YAML
120 lines
4.0 KiB
YAML
name: Complete release
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
tag:
|
|
required: true
|
|
description: 'Release tag'
|
|
type: string
|
|
|
|
release:
|
|
types:
|
|
- published
|
|
|
|
issue_comment:
|
|
types:
|
|
- created
|
|
|
|
jobs:
|
|
automation:
|
|
uses: ./.github/workflows/automation.yml
|
|
secrets: inherit
|
|
|
|
push-packages-and-publish-release:
|
|
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, '/PushPackages')
|
|
&& startsWith(github.event.issue.title, '[repo] 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:
|
|
token: ${{ secrets[needs.automation.outputs.token-secret-name] }}
|
|
ref: ${{ github.event.repository.default_branch }}
|
|
|
|
- name: Push packages and publish release
|
|
shell: pwsh
|
|
env:
|
|
NUGET_TOKEN: ${{ secrets.NUGET_TOKEN }}
|
|
run: |
|
|
Import-Module .\build\scripts\post-release.psm1
|
|
|
|
PushPackagesPublishReleaseUnlockAndPostNoticeOnPrepareReleasePullRequest `
|
|
-gitRepository '${{ github.repository }}' `
|
|
-pullRequestNumber '${{ github.event.issue.number }}' `
|
|
-botUserName '${{ needs.automation.outputs.username }}' `
|
|
-commentUserName '${{ github.event.comment.user.login }}' `
|
|
-artifactDownloadPath '${{ github.workspace }}/artifacts' `
|
|
-pushToNuget '${{ secrets.NUGET_TOKEN != '' }}'
|
|
|
|
post-release-published:
|
|
runs-on: ubuntu-latest
|
|
|
|
needs:
|
|
- automation
|
|
|
|
if: |
|
|
needs.automation.outputs.enabled
|
|
&& (github.event_name == 'release' || github.event_name == 'workflow_dispatch')
|
|
|
|
env:
|
|
GH_TOKEN: ${{ secrets[needs.automation.outputs.token-secret-name] }}
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
# Note: By default GitHub only fetches 1 commit. We need all the tags
|
|
# for this work.
|
|
fetch-depth: 0
|
|
ref: ${{ github.event.repository.default_branch }}
|
|
token: ${{ secrets[needs.automation.outputs.token-secret-name] }}
|
|
|
|
- name: Create GitHub Pull Request to update stable build version in props
|
|
if: |
|
|
(github.ref_type == 'tag' && startsWith(github.ref_name, 'core-') && !contains(github.ref_name, '-alpha') && !contains(github.ref_name, '-beta') && !contains(github.ref_name, '-rc'))
|
|
|| (inputs.tag && startsWith(inputs.tag, 'core-') && !contains(inputs.tag, '-alpha') && !contains(inputs.tag, '-beta') && !contains(inputs.tag, '-rc'))
|
|
shell: pwsh
|
|
run: |
|
|
Import-Module .\build\scripts\post-release.psm1
|
|
|
|
CreateStableVersionUpdatePullRequest `
|
|
-gitRepository '${{ github.repository }}' `
|
|
-tag '${{ inputs.tag || github.ref_name }}' `
|
|
-targetBranch '${{ github.event.repository.default_branch }}' `
|
|
-gitUserName '${{ needs.automation.outputs.username }}' `
|
|
-gitUserEmail '${{ needs.automation.outputs.email }}'
|
|
|
|
- name: Invoke core version update workflow in opentelemetry-dotnet-contrib repository
|
|
if: vars.CONTRIB_REPO
|
|
shell: pwsh
|
|
run: |
|
|
Import-Module .\build\scripts\post-release.psm1
|
|
|
|
InvokeCoreVersionUpdateWorkflowInRemoteRepository `
|
|
-remoteGitRepository '${{ vars.CONTRIB_REPO }}' `
|
|
-tag '${{ inputs.tag || github.ref_name }}'
|
|
|
|
- name: Post notice when release is published
|
|
shell: pwsh
|
|
run: |
|
|
Import-Module .\build\scripts\post-release.psm1
|
|
|
|
TryPostReleasePublishedNoticeOnPrepareReleasePullRequest `
|
|
-gitRepository '${{ github.repository }}' `
|
|
-botUserName '${{ needs.automation.outputs.username }}' `
|
|
-tag '${{ inputs.tag || github.ref_name }}'
|