|
4 | 4 | pull_request:
|
5 | 5 | types:
|
6 | 6 | - closed
|
| 7 | + branches: |
| 8 | + - release/** |
| 9 | + - prerelease/** |
7 | 10 |
|
8 | 11 | jobs:
|
9 | 12 | release:
|
10 | 13 | name: Release
|
11 |
| - if: ${{ github.event.pull_request.merged && startsWith(github.head_ref, 'release/') }} |
| 14 | + if: ${{ github.event.pull_request.merged }} |
12 | 15 | runs-on: ubuntu-latest
|
13 | 16 | steps:
|
14 | 17 | - uses: actions/checkout@v2
|
15 | 18 | with:
|
16 | 19 | token: ${{ secrets.GH_ACCESS_TOKEN_TOM }}
|
17 | 20 |
|
| 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 | +
|
18 | 26 | - 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 |
20 | 33 |
|
21 | 34 | - name: Use Node 22
|
22 | 35 | uses: actions/setup-node@v3
|
|
36 | 49 |
|
37 | 50 | - name: Update docs requirements
|
38 | 51 | run: just _set-docs-version ${{ steps.get-version.outputs.version }}
|
| 52 | + if: ${{ steps.get-release-type.outputs.type == 'release' }} |
39 | 53 |
|
40 | 54 | - name: Build dash-bootstrap-components
|
41 | 55 | run: just build
|
|
53 | 67 | - name: Commit updated package-lock.json and docs requirements
|
54 | 68 | uses: stefanzweifel/git-auto-commit-action@v4
|
55 | 69 | with:
|
56 |
| - commit_message: Release ${{ steps.get-version.outputs.version }} |
| 70 | + commit_message: ${{ steps.get-release-type.outputs.prefix }} ${{ steps.get-version.outputs.version }} |
57 | 71 | branch: main
|
58 | 72 | push_options: --force
|
59 | 73 | file_pattern: package-lock.json docs/requirements.txt
|
|
65 | 79 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
66 | 80 | with:
|
67 | 81 | 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 }} |
139 | 83 | body: ${{ github.event.pull_request.body }}
|
140 |
| - prerelease: true |
| 84 | + prerelease: ${{ steps.get-release-type.outputs.type == 'prerelease' }} |
141 | 85 |
|
142 | 86 | - name: Post-release cleanup
|
143 | 87 | run: just postrelease ${{ steps.get-version.outputs.version }}
|
|
147 | 91 | commit_message: Back to dev
|
148 | 92 | branch: main
|
149 | 93 | 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