generated from ssciwr/python-project-template
-
Notifications
You must be signed in to change notification settings - Fork 0
132 lines (112 loc) · 3.28 KB
/
cd.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
name: PyPI_release
# run only when a push into master occurs on a tag that specifies a semantic version
on:
# trigger on tagged push to master branch
push:
branches:
- master
tags:
- "*.*.*"
# only run when the tests pass
workflow_run:
workflows:
- CI
branches:
- master
types:
- completed
#allow manual trigger
workflow_dispatch:
jobs:
build_for_pypi:
name: Build distribution
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.12"
- name: Install pypa/build
run: python3 -m pip install build --user
- name: Build package
run: python3 -m build
- name: Store the distribution packages
uses: actions/upload-artifact@v4
with:
name: python-package-distributions
path: dist/
test_build:
name: Test distribution
needs: build_for_pypi
runs-on: ubuntu-latest
steps:
- name: download dist
uses: actions/download-artifact@v4
with:
name: python-package-distributions
path: dist/
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.12"
- name: Install package
run: python3 -m pip install dist/*.tar.gz
- name: Test import
run: |
python -c "import faunanet_record"
python -c "from faunanet_record import Runner, Recorder"
publish-to-pypi:
name: Publish python distribution to pypi
needs: test_build
if: startsWith(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
environment:
name: pypi_release
url: https://pypi.org/p/faunanet
permissions:
id-token: write
steps:
- name: Download all the dists
uses: actions/download-artifact@v4
with:
name: python-package-distributions
path: dist/
- name: Publish distribution to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
github-release:
name: sign and upload
if: startsWith(github.ref, 'refs/tags/')
needs:
- publish-to-pypi
runs-on: ubuntu-latest
permissions:
contents: write # IMPORTANT: mandatory for making GitHub Releases
id-token: write # IMPORTANT: mandatory for sigstore
steps:
- name: Download dists
uses: actions/download-artifact@v3
with:
name: python-package-distributions
path: dist/
- name: Sign dists
uses: sigstore/[email protected]
with:
inputs: >-
./dist/*.tar.gz
./dists/*.whl
- name: Create release
env:
GITHUB_TOKEN: ${{ github.token }}
run: >-
gh release create
'${{ github.ref_name }}'
--repo '${{ github.repository }}'
--notes ""
- name: Upload artifact signatures to release
env:
GITHUB_TOKEN: ${{ github.token }}
run: >-
gh release upload
'${{ github.ref_name }}' dist/**
--repo '${{ github.repository }}'