Skip to content

Commit 8e1508e

Browse files
committed
Simplify release pipeline
1 parent 3bc34cb commit 8e1508e

File tree

1 file changed

+20
-76
lines changed

1 file changed

+20
-76
lines changed

.github/workflows/release.yml

Lines changed: 20 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,32 @@ on:
44
pull_request:
55
types:
66
- closed
7+
branches:
8+
- release/**
9+
- prerelease/**
710

811
jobs:
912
release:
1013
name: Release
11-
if: ${{ github.event.pull_request.merged && startsWith(github.head_ref, 'release/') }}
14+
if: ${{ github.event.pull_request.merged }}
1215
runs-on: ubuntu-latest
1316
steps:
1417
- uses: actions/checkout@v2
1518
with:
1619
token: ${{ secrets.GH_ACCESS_TOKEN_TOM }}
1720

21+
- id: get-release-type
22+
run: |
23+
echo "type=$(${{ startsWith(github.head_ref, 'prerelease/') }} && echo 'prerelease' || echo 'release')" >> "$GITHUB_OUTPUT"
24+
echo "prefix=$(${{ startsWith(github.head_ref, 'prerelease/') }} && echo 'Prerelease' || echo 'Release')" >> "$GITHUB_OUTPUT"
25+
1826
- id: get-version
19-
run: echo "version=$(echo ${{ github.head_ref }} | sed 's|release/||')" >> "$GITHUB_OUTPUT"
27+
run: |
28+
if [ ${{ steps.get-release-type.outputs.type }} = 'prerelease' ]; then
29+
echo "version=$(echo ${{ github.head_ref }} | sed 's|prerelease/||')" >> "$GITHUB_OUTPUT"
30+
else
31+
echo "version=$(echo ${{ github.head_ref }} | sed 's|release/||')" >> "$GITHUB_OUTPUT"
32+
fi
2033
2134
- name: Use Node 22
2235
uses: actions/setup-node@v3
@@ -36,6 +49,7 @@ jobs:
3649

3750
- name: Update docs requirements
3851
run: just _set-docs-version ${{ steps.get-version.outputs.version }}
52+
if: ${{ steps.get-release-type.outputs.type == 'release' }}
3953

4054
- name: Build dash-bootstrap-components
4155
run: just build
@@ -53,7 +67,7 @@ jobs:
5367
- name: Commit updated package-lock.json and docs requirements
5468
uses: stefanzweifel/git-auto-commit-action@v4
5569
with:
56-
commit_message: Release ${{ steps.get-version.outputs.version }}
70+
commit_message: ${{ steps.get-release-type.outputs.prefix }} ${{ steps.get-version.outputs.version }}
5771
branch: main
5872
push_options: --force
5973
file_pattern: package-lock.json docs/requirements.txt
@@ -65,79 +79,9 @@ jobs:
6579
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
6680
with:
6781
tag_name: ${{ steps.get-version.outputs.version }}
68-
release_name: Release ${{ steps.get-version.outputs.version }}
69-
body: ${{ github.event.pull_request.body }}
70-
prerelease: false
71-
72-
- name: Post-release cleanup
73-
run: just postrelease ${{ steps.get-version.outputs.version }}
74-
75-
- uses: stefanzweifel/git-auto-commit-action@v4
76-
with:
77-
commit_message: Back to dev
78-
branch: main
79-
push_options: --force
80-
file_pattern: package.json tests/test_version.py dash_bootstrap_components/_version.py
81-
82-
prerelease:
83-
name: Prerelease
84-
if: ${{ github.event.pull_request.merged && startsWith(github.head_ref, 'prerelease/') }}
85-
runs-on: ubuntu-latest
86-
steps:
87-
- uses: actions/checkout@v2
88-
with:
89-
token: ${{ secrets.GH_ACCESS_TOKEN_TOM }}
90-
91-
- id: get-version
92-
run: echo "version=$(echo ${{ github.head_ref }} | sed 's|prerelease/||')" >> "$GITHUB_OUTPUT"
93-
94-
- name: Use Node 22
95-
uses: actions/setup-node@v3
96-
with:
97-
node-version: 22
98-
99-
- name: Install the latest version of uv
100-
uses: astral-sh/setup-uv@v3
101-
with:
102-
version: 'latest'
103-
104-
- name: Install just
105-
uses: extractions/setup-just@v2
106-
107-
- name: Install JS dependencies
108-
run: npm ci
109-
110-
- name: Build dash-bootstrap-components
111-
run: just build
112-
113-
- uses: JS-DevTools/npm-publish@v1
114-
with:
115-
token: ${{ secrets.NPM_TOKEN }}
116-
117-
- name: Publish to PyPI
118-
uses: pypa/[email protected]
119-
with:
120-
password: ${{ secrets.PYPI_API_TOKEN }}
121-
packages-dir: py-dist/
122-
123-
- name: Commit updated package-lock.json
124-
uses: stefanzweifel/git-auto-commit-action@v4
125-
with:
126-
commit_message: Release ${{ steps.get-version.outputs.version }}
127-
branch: main
128-
push_options: --force
129-
file_pattern: package-lock.json
130-
131-
- name: Create GitHub prerelease
132-
id: create-prerelease
133-
uses: actions/create-release@v1
134-
env:
135-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
136-
with:
137-
tag_name: ${{ steps.get-version.outputs.version }}
138-
release_name: Prerelease ${{ steps.get-version.outputs.version }}
82+
release_name: ${{ steps.get-release-type.outputs.prefix }} ${{ steps.get-version.outputs.version }}
13983
body: ${{ github.event.pull_request.body }}
140-
prerelease: true
84+
prerelease: ${{ steps.get-release-type.outputs.type == 'prerelease' }}
14185

14286
- name: Post-release cleanup
14387
run: just postrelease ${{ steps.get-version.outputs.version }}
@@ -147,4 +91,4 @@ jobs:
14791
commit_message: Back to dev
14892
branch: main
14993
push_options: --force
150-
file_pattern: package.json tests/test_version.py dash_bootstrap_components/_version.py
94+
file_pattern: package.json tests/test_version.py dash_bootstrap_components/_version.py uv.lock

0 commit comments

Comments
 (0)