-
Notifications
You must be signed in to change notification settings - Fork 0
136 lines (114 loc) · 3.43 KB
/
Copy pathpublish.yml
File metadata and controls
136 lines (114 loc) · 3.43 KB
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
133
134
135
136
name: publish
on:
workflow_dispatch:
release:
types:
- prereleased
- released
permissions:
contents: read
jobs:
release-build:
name: Build distribution 📦
runs-on: ubuntu-latest
steps:
- name: Dump GitHub context
env:
GITHUB_CONTEXT: ${{ toJson(github) }}
run: echo "$GITHUB_CONTEXT"
- uses: actions/checkout@v5
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.9"
- uses: actions/cache@v4
id: cache
with:
path: ${{ env.pythonLocation }}
key: ${{ runner.os }}-python-${{ env.pythonLocation }}-${{ hashFiles('pyproject.toml') }}-publish
- name: Install build dependencies
if: steps.cache.outputs.cache-hit != 'true'
run: pip install build
- name: Build Distribution
run: python -m build
- name: Upload Windows Dists
uses: actions/upload-artifact@v4
with:
name: release-dists
path: dist/
pypi-publish:
name: Publish Python 🐍 distribution 📦 to PyPI
runs-on: ubuntu-latest
if: github.event.action == 'released' && startsWith(github.ref, 'refs/tags')
environment:
name: pypi
url: https://pypi.org/p/ddeutil-workflow
needs:
- release-build
permissions:
id-token: write
steps:
- name: Retrieve release distributions
uses: actions/download-artifact@v5
with:
name: release-dists
path: dist/
- run: |
echo "github ref is:" ${{ github.ref }}
echo "event name is:" ${{ github.event_name }}
echo "event type is:" ${{ github.event.action }}
- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@v1.13.0
testpypi-publish:
name: Publish Python 🐍 distribution 📦 to TestPyPI
runs-on: ubuntu-latest
if: github.event.action == 'prereleased' && startsWith(github.ref, 'refs/tags')
environment:
name: testpypi
url: https://test.pypi.org/p/ddeutil-workflow
needs:
- release-build
permissions:
id-token: write
steps:
- name: Retrieve release distributions
uses: actions/download-artifact@v5
with:
name: release-dists
path: dist/
- run: |
echo "github ref is:" ${{ github.ref }}
echo "event name is:" ${{ github.event_name }}
echo "event type is:" ${{ github.event.action }}
- name: Publish to Test PyPI
uses: pypa/gh-action-pypi-publish@v1.13.0
with:
repository-url: ${{ vars.PYPI_REPO_URL }}
github-release:
name: >-
Sign the Python 🐍 distribution 📦 with Sigstore
and upload them to GitHub Release
runs-on: ubuntu-latest
needs:
- pypi-publish
permissions:
contents: write
id-token: write
steps:
- uses: actions/checkout@v5
- name: Download all the dists
uses: actions/download-artifact@v5
with:
name: release-dists
path: dist/
- name: Sign the dists with Sigstore
uses: sigstore/gh-action-sigstore-python@v3.0.1
with:
inputs: |
./dist/*.tar.gz
./dist/*.whl
- name: Upload artifact signatures to GitHub Release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release upload "${{ github.event.release.tag_name }}" dist/**