Skip to content

Commit 36829b9

Browse files
committed
Revert "github/pypi: drop building and push directly"
This reverts commit 5f34836.
1 parent 5f34836 commit 36829b9

1 file changed

Lines changed: 108 additions & 9 deletions

File tree

.github/workflows/pypi.yml

Lines changed: 108 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,115 @@ name: Publish OpenSIPS Python package to PyPI
44
on: push
55

66
jobs:
7-
pypi-publish:
8-
name: Upload release to PyPI
7+
build:
8+
name: Build distribution
99
runs-on: ubuntu-latest
10-
# Specifying a GitHub environment is optional, but strongly encouraged
11-
environment: release
10+
11+
steps:
12+
- uses: actions/checkout@v4
13+
- name: Set up Python
14+
uses: actions/setup-python@v5
15+
with:
16+
python-version: "3.x"
17+
- name: Install pypa/build
18+
run: >-
19+
python3 -m
20+
pip install
21+
build
22+
--user
23+
- name: Build a binary wheel and a source tarball
24+
run: python3 -m build
25+
- name: Store the distribution packages
26+
uses: actions/upload-artifact@v4
27+
with:
28+
name: python-package-distributions
29+
path: dist/
30+
31+
publish-to-pypi:
32+
name: >-
33+
Publish Python OpenSIPS Python package to PyPI
34+
if: startsWith(github.ref, 'refs/tags/') # only publish to PyPI on tag pushes
35+
needs:
36+
- build
37+
runs-on: ubuntu-latest
38+
environment:
39+
name: pypi
40+
url: https://pypi.org/p/opensips
1241
permissions:
13-
# IMPORTANT: this permission is mandatory for trusted publishing
14-
id-token: write
42+
id-token: write # IMPORTANT: mandatory for trusted publishing
43+
1544
steps:
16-
# retrieve your distributions here
45+
- name: Download all the dists
46+
uses: actions/download-artifact@v4
47+
with:
48+
name: python-package-distributions
49+
path: dist/
50+
- name: Publish distribution OpenSIPS to PyPI
51+
uses: pypa/gh-action-pypi-publish@release/v1
52+
53+
github-release:
54+
name: >-
55+
Sign the OpenSIPS Python package with Sigstore
56+
and upload them to GitHub Release
57+
needs:
58+
- publish-to-pypi
59+
runs-on: ubuntu-latest
60+
61+
permissions:
62+
contents: write # IMPORTANT: mandatory for making GitHub Releases
63+
id-token: write # IMPORTANT: mandatory for sigstore
1764

18-
- name: Publish package distributions to PyPI
19-
uses: pypa/gh-action-pypi-publish@release/v1
65+
steps:
66+
- name: Download all the dists
67+
uses: actions/download-artifact@v4
68+
with:
69+
name: python-package-distributions
70+
path: dist/
71+
- name: Sign the dists with Sigstore
72+
uses: sigstore/gh-action-sigstore-python@v2.1.1
73+
with:
74+
inputs: >-
75+
./dist/*.tar.gz
76+
./dist/*.whl
77+
- name: Create GitHub Release
78+
env:
79+
GITHUB_TOKEN: ${{ github.token }}
80+
run: >-
81+
gh release create
82+
'${{ github.ref_name }}'
83+
--repo '${{ github.repository }}'
84+
--notes ""
85+
- name: Upload artifact signatures to GitHub Release
86+
env:
87+
GITHUB_TOKEN: ${{ github.token }}
88+
# Upload to GitHub Release using the `gh` CLI.
89+
# `dist/` contains the built packages, and the
90+
# sigstore-produced signatures and certificates.
91+
run: >-
92+
gh release upload
93+
'${{ github.ref_name }}' dist/**
94+
--repo '${{ github.repository }}'
95+
96+
publish-to-testpypi:
97+
name: Publish Python OpenSIPS package TestPyPI
98+
needs:
99+
- build
100+
runs-on: ubuntu-latest
101+
102+
environment:
103+
name: testpypi
104+
url: https://test.pypi.org/p/opensips
105+
106+
permissions:
107+
id-token: write # IMPORTANT: mandatory for trusted publishing
108+
109+
steps:
110+
- name: Download all the dists
111+
uses: actions/download-artifact@v4
112+
with:
113+
name: python-package-distributions
114+
path: dist/
115+
- name: Publish distribution OpenSIPS to TestPyPI
116+
uses: pypa/gh-action-pypi-publish@release/v1
117+
with:
118+
repository-url: https://test.pypi.org/legacy/

0 commit comments

Comments
 (0)