Skip to content

Commit 72f55c6

Browse files
authored
Improve CI (#1070)
* Don't duplicate tests * Adjust triggers * Test CI definition * Add build test for release and prerelease branches * Clean up workflow definition * Run tests manually * Remove unused selenium config * Simplify release pipeline
1 parent 7172629 commit 72f55c6

File tree

3 files changed

+69
-85
lines changed

3 files changed

+69
-85
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/gh-action-pypi-publish@v1.12.3
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

.github/workflows/test-build.yml

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
name: Test built package
2+
3+
on:
4+
pull_request:
5+
branches:
6+
- 'release/**'
7+
- 'prerelease/**'
8+
9+
jobs:
10+
test-build:
11+
name: Test build
12+
runs-on: ubuntu-latest
13+
steps:
14+
- uses: actions/checkout@v2
15+
with:
16+
token: ${{ secrets.GH_ACCESS_TOKEN_TOM }}
17+
18+
- name: Use Node 22
19+
uses: actions/setup-node@v3
20+
with:
21+
node-version: 22
22+
23+
- name: Install the latest version of uv
24+
uses: astral-sh/setup-uv@v3
25+
with:
26+
version: 'latest'
27+
28+
- name: Install just
29+
uses: extractions/setup-just@v2
30+
31+
- name: Install JS dependencies
32+
run: npm ci
33+
34+
- name: Build dash-bootstrap-components
35+
run: just build
36+
37+
- name: Run tests
38+
run: |
39+
# install the wheel
40+
uv pip install py-dist/dash_bootstrap_components*.whl
41+
# manually invoke pytest inside the .venv
42+
# we can't use uv as `uv run` syncs the source
43+
source .venv/bin/activate
44+
pytest --headless tests

.github/workflows/tests.yml

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
name: Tests
22

3-
on: [push, pull_request]
3+
on:
4+
pull_request:
5+
push:
6+
branches:
7+
- main
48

59
jobs:
610
js:
@@ -52,14 +56,6 @@ jobs:
5256
max-parallel: 6
5357
matrix:
5458
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13']
55-
services:
56-
hub:
57-
image: selenium/hub:3.141.59-gold
58-
firefox:
59-
image: selenium/node-chrome:3.141.59-gold
60-
env:
61-
HUB_HOST: hub
62-
HUB_PORT: 4444
6359
steps:
6460
- uses: actions/checkout@v1
6561
- name: Install the latest version of uv

0 commit comments

Comments
 (0)