|
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 | | - |
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