-
Notifications
You must be signed in to change notification settings - Fork 4
147 lines (125 loc) · 4.31 KB
/
python-publish.yml
File metadata and controls
147 lines (125 loc) · 4.31 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
137
138
139
140
141
142
143
144
145
146
147
# This workflow will upload a Python Package to PyPI when a release is created
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python#publishing-to-package-registries
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
name: Build, Realease and Publish Python Package with doc
on:
workflow_dispatch:
pull_request:
push:
branches:
- main
schedule:
- cron: '0 3 * * *' # nightly job at 3am UTC
permissions:
contents: read
jobs:
build:
runs-on: windows-latest
permissions:
contents: write
packages: write
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.x"
- name: Build release distributions
shell: powershell
run: |
python -m pip install build pydoc-markdown
python -m build
pydoc-markdown
$file = get-content emio-api.md
$file | ForEach-Object {if ($_.ReadCount -eq 1) {$_ -replace "^.*", "# Emio API"} else {$_}} | Set-Content .\emio-api.md
- name: Upload distributions
uses: actions/upload-artifact@v4
with:
name: release-dists
path: |
dist/
emio-api.md
release:
name: Create Release
if: always() && startsWith(github.ref, 'refs/heads/') # we are on a branch (not a PR), always() is used to run even if needed steps fail
needs:
- build
runs-on: windows-latest
permissions:
contents: write
packages: write
steps:
- name: Download the artifacts
uses: actions/download-artifact@v4
with:
name: release-dists
path: artifacts/
- name: Set env vars and rename executables
shell: powershell
run: |
$releaseDate = Get-Date -Format "yyyy-MM-dd (at HH:mm:ss UTC)"
echo "RELEASE_DATE=$releaseDate" | Out-File -FilePath $env:GITHUB_ENV -Append
- name: Delete old release
uses: dev-drprasad/delete-tag-and-release@v1.0.1
with:
tag_name: release-${{ github.ref_name }}
github_token: ${{ secrets.GITHUB_TOKEN }}
delete_release: true
- name: Create Release
if: success() || failure()
uses: softprops/action-gh-release@v2.5.0
with:
name: ${{ github.ref_name }}
tag_name: release-${{ github.ref_name }}
fail_on_unmatched_files: false
draft: false
body: |
Last updated on ${{ env.RELEASE_DATE }}.
files: |
artifacts/dist/*
artifacts/emio-api.md
publish-to-testpypi:
name: Publish Python 🐍 distribution 📦 to TestPyPI
needs:
- build
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/v') # publish only if tag strats with 'v'
environment:
name: testpypi-emioapi
url: https://test.pypi.org/p/emioapi
permissions:
id-token: write # IMPORTANT: mandatory for trusted publishing
steps:
- name: Download all the dists
uses: actions/download-artifact@v4
with:
name: release-dists
path: artifacts/
- name: Publish distribution 📦 to TestPyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
repository-url: https://test.pypi.org/legacy/
packages-dir: artifacts/dist
pypi-publish:
name: Publish Python 🐍 distribution 📦 to PyPI
if: startsWith(github.ref, 'refs/tags/v')
runs-on: ubuntu-latest
needs:
- build
environment: # Dedicated environments with protections for publishing are strongly recommended.
name: pypi-emioapi
url: https://pypi.org/p/emioapi
permissions:
id-token: write # IMPORTANT: this permission is mandatory for trusted publishing
steps:
- name: Download artifacts
uses: actions/download-artifact@v4
with:
name: release-dists
path: artifacts/
- name: Publish release distributions to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
packages-dir: artifacts/dist