140 lines
3.7 KiB
YAML
140 lines
3.7 KiB
YAML
name: Prepare for a release
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
tag-prefix:
|
|
type: choice
|
|
options:
|
|
- core-
|
|
- coreunstable-
|
|
description: 'Release tag prefix'
|
|
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 `
|
|
-minVerTagPrefix '${{ inputs.tag-prefix }}' `
|
|
-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-1.0.yml
|
|
with:
|
|
tag: ${{ needs.create-release-tag-unlock-pr-post-notice.outputs.tag }}
|
|
|
|
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 }}
|