From f0e6ed855f0da60dab8850a345763c2a0b2a51a3 Mon Sep 17 00:00:00 2001 From: tcbegley Date: Thu, 16 Jan 2025 22:46:48 +0000 Subject: [PATCH 1/8] Don't duplicate tests --- .github/workflows/tests.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index a996b622..c8329d7a 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -1,6 +1,10 @@ name: Tests -on: [push, pull_request] +on: + push: + branches: + - main + - pull_request jobs: js: From 8a00023ddb99f7c10cfd6656a94c9f942ff89b6e Mon Sep 17 00:00:00 2001 From: tcbegley Date: Thu, 16 Jan 2025 23:06:05 +0000 Subject: [PATCH 2/8] Adjust triggers --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index c8329d7a..68584bf5 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -1,10 +1,10 @@ name: Tests on: + pull_request: push: branches: - main - - pull_request jobs: js: From 316354129c67ee3badbdcb1a4c81ba8e9dc34631 Mon Sep 17 00:00:00 2001 From: tcbegley Date: Thu, 16 Jan 2025 23:08:11 +0000 Subject: [PATCH 3/8] Test CI definition From cfa6b6edc093de325bbd37cb5b863223032cd64f Mon Sep 17 00:00:00 2001 From: tcbegley Date: Fri, 17 Jan 2025 21:35:56 +0000 Subject: [PATCH 4/8] Add build test for release and prerelease branches --- .github/workflows/test-build.yml | 41 ++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 .github/workflows/test-build.yml diff --git a/.github/workflows/test-build.yml b/.github/workflows/test-build.yml new file mode 100644 index 00000000..d1fcc7c7 --- /dev/null +++ b/.github/workflows/test-build.yml @@ -0,0 +1,41 @@ +name: Publish release + +on: + pull_request: + branches: + - 'release/**' + - 'prerelease/**' + +jobs: + test-build: + name: Test build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + token: ${{ secrets.GH_ACCESS_TOKEN_TOM }} + + - id: get-version + run: echo "version=$(echo ${{ github.head_ref }} | sed -E 's|^(release/|prerelease/)||')" >> "$GITHUB_OUTPUT" + + - name: Use Node 22 + uses: actions/setup-node@v3 + with: + node-version: 22 + + - name: Install the latest version of uv + uses: astral-sh/setup-uv@v3 + with: + version: 'latest' + + - name: Install just + uses: extractions/setup-just@v2 + + - name: Install JS dependencies + run: npm ci + + - name: Build dash-bootstrap-components + run: just build + + - name: Run tests + run: uv run --with py-dist/dash_bootstrap_components*.whl pytest --headless tests From 75ae8784322e2c72d945de9074835b7570952ae6 Mon Sep 17 00:00:00 2001 From: tcbegley Date: Sat, 18 Jan 2025 08:20:09 +0000 Subject: [PATCH 5/8] Clean up workflow definition --- .github/workflows/test-build.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/test-build.yml b/.github/workflows/test-build.yml index d1fcc7c7..4820b1d6 100644 --- a/.github/workflows/test-build.yml +++ b/.github/workflows/test-build.yml @@ -1,4 +1,4 @@ -name: Publish release +name: Test built package on: pull_request: @@ -15,9 +15,6 @@ jobs: with: token: ${{ secrets.GH_ACCESS_TOKEN_TOM }} - - id: get-version - run: echo "version=$(echo ${{ github.head_ref }} | sed -E 's|^(release/|prerelease/)||')" >> "$GITHUB_OUTPUT" - - name: Use Node 22 uses: actions/setup-node@v3 with: From 342f54f82b2ec3a6232338fe62c0c6552b284e0b Mon Sep 17 00:00:00 2001 From: tcbegley Date: Sat, 18 Jan 2025 08:31:49 +0000 Subject: [PATCH 6/8] Run tests manually --- .github/workflows/test-build.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test-build.yml b/.github/workflows/test-build.yml index 4820b1d6..8dfe44ed 100644 --- a/.github/workflows/test-build.yml +++ b/.github/workflows/test-build.yml @@ -35,4 +35,10 @@ jobs: run: just build - name: Run tests - run: uv run --with py-dist/dash_bootstrap_components*.whl pytest --headless tests + run: | + # install the wheel + uv pip install py-dist/dash_bootstrap_components*.whl + # manually invoke pytest inside the .venv + # we can't use uv as `uv run` syncs the source + source .venv/bin/activate + pytest --headless tests From 3bc34cb3b88aa6e883cd840e389916fd04ecabe6 Mon Sep 17 00:00:00 2001 From: tcbegley Date: Sat, 18 Jan 2025 08:39:31 +0000 Subject: [PATCH 7/8] Remove unused selenium config --- .github/workflows/tests.yml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 68584bf5..eda89bc9 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -56,14 +56,6 @@ jobs: max-parallel: 6 matrix: python-version: ['3.9', '3.10', '3.11', '3.12', '3.13'] - services: - hub: - image: selenium/hub:3.141.59-gold - firefox: - image: selenium/node-chrome:3.141.59-gold - env: - HUB_HOST: hub - HUB_PORT: 4444 steps: - uses: actions/checkout@v1 - name: Install the latest version of uv From 8e1508e83a452ff14fc0473251818e2eb6ccc087 Mon Sep 17 00:00:00 2001 From: tcbegley Date: Sat, 18 Jan 2025 08:53:22 +0000 Subject: [PATCH 8/8] Simplify release pipeline --- .github/workflows/release.yml | 96 ++++++++--------------------------- 1 file changed, 20 insertions(+), 76 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 92164340..9ce8f698 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -4,19 +4,32 @@ on: pull_request: types: - closed + branches: + - release/** + - prerelease/** jobs: release: name: Release - if: ${{ github.event.pull_request.merged && startsWith(github.head_ref, 'release/') }} + if: ${{ github.event.pull_request.merged }} runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 with: token: ${{ secrets.GH_ACCESS_TOKEN_TOM }} + - id: get-release-type + run: | + echo "type=$(${{ startsWith(github.head_ref, 'prerelease/') }} && echo 'prerelease' || echo 'release')" >> "$GITHUB_OUTPUT" + echo "prefix=$(${{ startsWith(github.head_ref, 'prerelease/') }} && echo 'Prerelease' || echo 'Release')" >> "$GITHUB_OUTPUT" + - id: get-version - run: echo "version=$(echo ${{ github.head_ref }} | sed 's|release/||')" >> "$GITHUB_OUTPUT" + run: | + if [ ${{ steps.get-release-type.outputs.type }} = 'prerelease' ]; then + echo "version=$(echo ${{ github.head_ref }} | sed 's|prerelease/||')" >> "$GITHUB_OUTPUT" + else + echo "version=$(echo ${{ github.head_ref }} | sed 's|release/||')" >> "$GITHUB_OUTPUT" + fi - name: Use Node 22 uses: actions/setup-node@v3 @@ -36,6 +49,7 @@ jobs: - name: Update docs requirements run: just _set-docs-version ${{ steps.get-version.outputs.version }} + if: ${{ steps.get-release-type.outputs.type == 'release' }} - name: Build dash-bootstrap-components run: just build @@ -53,7 +67,7 @@ jobs: - name: Commit updated package-lock.json and docs requirements uses: stefanzweifel/git-auto-commit-action@v4 with: - commit_message: Release ${{ steps.get-version.outputs.version }} + commit_message: ${{ steps.get-release-type.outputs.prefix }} ${{ steps.get-version.outputs.version }} branch: main push_options: --force file_pattern: package-lock.json docs/requirements.txt @@ -65,79 +79,9 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ steps.get-version.outputs.version }} - release_name: Release ${{ steps.get-version.outputs.version }} - body: ${{ github.event.pull_request.body }} - prerelease: false - - - name: Post-release cleanup - run: just postrelease ${{ steps.get-version.outputs.version }} - - - uses: stefanzweifel/git-auto-commit-action@v4 - with: - commit_message: Back to dev - branch: main - push_options: --force - file_pattern: package.json tests/test_version.py dash_bootstrap_components/_version.py - - prerelease: - name: Prerelease - if: ${{ github.event.pull_request.merged && startsWith(github.head_ref, 'prerelease/') }} - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - with: - token: ${{ secrets.GH_ACCESS_TOKEN_TOM }} - - - id: get-version - run: echo "version=$(echo ${{ github.head_ref }} | sed 's|prerelease/||')" >> "$GITHUB_OUTPUT" - - - name: Use Node 22 - uses: actions/setup-node@v3 - with: - node-version: 22 - - - name: Install the latest version of uv - uses: astral-sh/setup-uv@v3 - with: - version: 'latest' - - - name: Install just - uses: extractions/setup-just@v2 - - - name: Install JS dependencies - run: npm ci - - - name: Build dash-bootstrap-components - run: just build - - - uses: JS-DevTools/npm-publish@v1 - with: - token: ${{ secrets.NPM_TOKEN }} - - - name: Publish to PyPI - uses: pypa/gh-action-pypi-publish@v1.12.3 - with: - password: ${{ secrets.PYPI_API_TOKEN }} - packages-dir: py-dist/ - - - name: Commit updated package-lock.json - uses: stefanzweifel/git-auto-commit-action@v4 - with: - commit_message: Release ${{ steps.get-version.outputs.version }} - branch: main - push_options: --force - file_pattern: package-lock.json - - - name: Create GitHub prerelease - id: create-prerelease - uses: actions/create-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: ${{ steps.get-version.outputs.version }} - release_name: Prerelease ${{ steps.get-version.outputs.version }} + release_name: ${{ steps.get-release-type.outputs.prefix }} ${{ steps.get-version.outputs.version }} body: ${{ github.event.pull_request.body }} - prerelease: true + prerelease: ${{ steps.get-release-type.outputs.type == 'prerelease' }} - name: Post-release cleanup run: just postrelease ${{ steps.get-version.outputs.version }} @@ -147,4 +91,4 @@ jobs: commit_message: Back to dev branch: main push_options: --force - file_pattern: package.json tests/test_version.py dash_bootstrap_components/_version.py + file_pattern: package.json tests/test_version.py dash_bootstrap_components/_version.py uv.lock