Repository navigation
138 lines (128 loc) · 4.51 KB
/
Copy pathmanual_release_stable.yaml
File metadata and controls
138 lines (128 loc) · 4.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
name: Stable release
on:
# Runs when manually triggered from the GitHub UI, with options to specify the type of release.
workflow_dispatch:
inputs:
release_type:
description: Release type
required: true
type: choice
default: auto
options:
- auto
- custom
- patch
- minor
- major
custom_version:
description: The custom version to bump to (only for "custom" type)
required: false
type: string
default: ""
concurrency:
group: release
cancel-in-progress: false
permissions:
contents: read
jobs:
wait_for_checks:
# Gate the release on the `Checks` workflow already succeeding on this commit (run by `on_master.yaml`).
name: Wait for required checks
runs-on: ubuntu-latest
permissions:
checks: read
steps:
- name: Wait for checks
uses: apify/actions/wait-for-checks@v1.6.2
with:
ref: ${{ github.sha }}
check-regexp: ^Checks
release_prepare:
name: Release prepare
needs: [wait_for_checks]
runs-on: ubuntu-latest
outputs:
version_number: ${{ steps.release_prepare.outputs.version_number }}
tag_name: ${{ steps.release_prepare.outputs.tag_name }}
changelog: ${{ steps.release_prepare.outputs.changelog }}
release_notes: ${{ steps.release_prepare.outputs.release_notes }}
steps:
- uses: apify/actions/git-cliff-release@v1.6.2
name: Release prepare
id: release_prepare
with:
release_type: ${{ inputs.release_type }}
custom_version: ${{ inputs.custom_version }}
existing_changelog_path: CHANGELOG.md
changelog_update:
name: Changelog update
needs: [release_prepare]
permissions:
contents: write
uses: apify/workflows/.github/workflows/python_bump_and_update_changelog.yaml@main
with:
version_number: ${{ needs.release_prepare.outputs.version_number }}
changelog: ${{ needs.release_prepare.outputs.changelog }}
secrets: inherit
github_release:
name: GitHub release
needs: [release_prepare, changelog_update]
runs-on: ubuntu-latest
permissions:
contents: write
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- name: GitHub release
uses: softprops/action-gh-release@8a0cd651e5b2365bd640854a3fa5dfc70e4875f3 # v3.0.4
with:
tag_name: ${{ needs.release_prepare.outputs.tag_name }}
name: ${{ needs.release_prepare.outputs.version_number }}
target_commitish: ${{ needs.changelog_update.outputs.changelog_commitish }}
body: ${{ needs.release_prepare.outputs.release_notes }}
# Publishing runs as a separate workflow run of `publish_to_pypi.yaml` (see the comment there).
pypi_publish:
name: PyPI publish
needs: [release_prepare, changelog_update]
runs-on: ubuntu-latest
permissions:
actions: write # Required by execute-workflow.
steps:
- name: Dispatch PyPI publish workflow
uses: apify/actions/execute-workflow@v1.6.2
with:
workflow: publish_to_pypi.yaml
inputs: >
{
"version_number": "${{ needs.release_prepare.outputs.version_number }}",
"ref": "${{ needs.changelog_update.outputs.changelog_commitish }}",
"is_prerelease": "false"
}
version_docs:
name: Version docs
needs: [release_prepare, changelog_update, pypi_publish]
permissions:
contents: write
checks: read
uses: ./.github/workflows/manual_version_docs.yaml
with:
# Pass the bumped version explicitly — the job's checkout uses the dispatch ref (pre-bump),
# so `uv version --short` from pyproject.toml would return the old version.
version_number: ${{ needs.release_prepare.outputs.version_number }}
secrets: inherit
doc_release:
name: Doc release
needs: [changelog_update, pypi_publish, version_docs]
permissions:
contents: write
pages: write
id-token: write
checks: read
uses: ./.github/workflows/manual_release_docs.yaml
with:
# Build from the up-to-date branch tip, not the workflow-dispatch ref. The default checkout
# pins to the dispatch commit (pre-bump), which predates the changelog finalization and the
# version snapshot pushed earlier in this run — so the docs would be redeployed from stale
# content (e.g. the changelog stuck at "not yet released").
ref: ${{ github.ref_name }}
secrets: inherit