Skip to content

Commit 53f6cfc

Browse files
authored
Publish artifacts to Github Release (#1267)
* Add a step to the release pipeline to publish sigstore signed artifacts to the associated Github Release. * Add a Test PyPI release job which runs on merge to `main`.
1 parent cfced5b commit 53f6cfc

File tree

2 files changed

+82
-2
lines changed

2 files changed

+82
-2
lines changed

.github/workflows/pypi-release.yml

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ concurrency:
99

1010
jobs:
1111
build:
12+
name: Build the distribution
1213
runs-on: ubuntu-latest
1314
steps:
1415
- uses: actions/checkout@v4
@@ -27,10 +28,40 @@ jobs:
2728
path: dist/
2829
if-no-files-found: error
2930

30-
release:
31+
github-release:
32+
runs-on: ubuntu-latest
33+
environment:
34+
name: release
35+
name: >-
36+
Sign the Python distribution with Sigstore and upload them to GitHub Release
37+
needs:
38+
- build
39+
40+
permissions:
41+
contents: write
42+
id-token: write
43+
44+
steps:
45+
- name: Download all the dists
46+
uses: actions/download-artifact@v4
47+
with:
48+
path: dist/
49+
- name: Sign the dists with Sigstore
50+
uses: sigstore/[email protected]
51+
with:
52+
inputs: >-
53+
./dist/*.tar.gz
54+
./dist/*.whl
55+
- name: Upload artifact signatures to GitHub Release
56+
env:
57+
GITHUB_TOKEN: ${{ github.token }}
58+
run: gh release upload "$GITHUB_REF_NAME" dist/** --repo "$GITHUB_REPOSITORY"
59+
60+
pypi-release:
3161
runs-on: ubuntu-latest
3262
environment:
3363
name: release
64+
name: Release to PyPI
3465
needs:
3566
- build
3667
permissions:
@@ -42,4 +73,4 @@ jobs:
4273
path: dist/
4374
merge-multiple: true
4475
- name: Publish package distributions to PyPI
45-
uses: pypa/[email protected].2
76+
uses: pypa/[email protected].4
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
name: Release to Test PyPI
2+
3+
on:
4+
push:
5+
branches: [ main ]
6+
7+
concurrency:
8+
group: test-pypi-release
9+
10+
jobs:
11+
build:
12+
name: Build the distribution
13+
runs-on: ubuntu-latest
14+
steps:
15+
- uses: actions/checkout@v4
16+
- uses: actions/setup-python@v5
17+
with:
18+
python-version: ${{ vars.PYTHON_VERSION }}
19+
- name: Install Poetry
20+
run: curl -sSL https://install.python-poetry.org | python3 -
21+
- name: Build Basilisp distributions
22+
run: poetry build
23+
- name: Upload build artifact
24+
uses: actions/upload-artifact@v4
25+
with:
26+
path: dist/
27+
if-no-files-found: error
28+
29+
test-pypi-release:
30+
runs-on: ubuntu-latest
31+
environment:
32+
name: test-pypi
33+
url: https://test.pypi.org/p/basilisp
34+
name: Release to Test PyPI
35+
needs:
36+
- build
37+
permissions:
38+
id-token: write
39+
steps:
40+
- name: Download build artifact
41+
uses: actions/download-artifact@v4
42+
with:
43+
path: dist/
44+
merge-multiple: true
45+
- name: Publish package distributions to PyPI
46+
uses: pypa/[email protected]
47+
with:
48+
repository-url: https://test.pypi.org/legacy/
49+
skip-existing: true

0 commit comments

Comments
 (0)