Skip to content

Commit 10ad8cd

Browse files
committed
First wheel release, then create the GitHub release, and remove code
duplication
1 parent cc0a43e commit 10ad8cd

File tree

5 files changed

+119
-134
lines changed

5 files changed

+119
-134
lines changed

.github/workflows/publish_docker.yml

Lines changed: 114 additions & 127 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
name: Build and Publish Docker Container and Pypanda Docs # Only for main panda-re repo, not forks
22

33
on:
4+
workflow_dispatch:
45
push:
56
branches:
67
- dev
@@ -11,23 +12,25 @@ env:
1112

1213
jobs:
1314
create_release:
14-
if: github.repository == 'panda-re/panda' && github.ref == 'refs/heads/dev'
15+
name: Create next release version
16+
if: github.repository == 'panda-re/panda'
1517
runs-on: panda-arc
1618
outputs:
1719
v-version: ${{ steps.version.outputs.v-version }}
1820
steps:
1921
- name: Install git
2022
run: sudo apt-get -qq update -y && sudo apt-get -qq install git curl jq -y
2123
- name: Get next version
22-
uses: reecetech/version-increment@2023.10.2
24+
uses: reecetech/version-increment@2024.10.1
2325
id: version
2426
with:
2527
release_branch: dev
2628
use_api: true
2729

2830
build_release_assets:
29-
if: github.repository == 'panda-re/panda' && github.ref == 'refs/heads/dev'
30-
needs: create_release
31+
name: Create Panda Debian package and wheel
32+
if: github.repository == 'panda-re/panda'
33+
needs: [ create_release ]
3134
runs-on: panda-arc
3235
strategy:
3336
matrix:
@@ -48,42 +51,93 @@ jobs:
4851
working-directory: panda/debian
4952
run: ./setup.sh Ubuntu ${{ matrix.ubuntu_version }}
5053

51-
- name: Upload wheel and debian packages to release
52-
uses: softprops/action-gh-release@v2
53-
env:
54-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
55-
with:
56-
tag_name: ${{ needs.create_release.outputs.v-version }}
57-
files: |
58-
panda/debian/pandare*.whl
59-
panda/debian/pandare*.deb
60-
6154
- name: Store the PyPanda distribution packages
6255
if: ${{ matrix.ubuntu_version == env.PANDA_CONTAINER_UBUNTU_VERSION }}
6356
uses: actions/upload-artifact@v4
6457
with:
6558
name: pypanda
6659
path: panda/debian/pandare*.whl
6760
if-no-files-found: error
68-
69-
- name: 'Login to Docker Registry'
70-
if: ${{ matrix.ubuntu_version == env.PANDA_CONTAINER_UBUNTU_VERSION }}
61+
retention-days: 7
62+
63+
- name: Store the Panda Debian packages
64+
uses: actions/upload-artifact@v4
65+
with:
66+
name: panda-debian
67+
path: panda/debian/pandare*.deb
68+
if-no-files-found: error
69+
retention-days: 7
70+
71+
publish_to_pypi_and_release:
72+
name: Publish Python 🐍 distribution 📦 to PyPI and Create Release
73+
if: github.repository == 'panda-re/panda'
74+
needs: [ create_release, build_release_assets ]
75+
runs-on: ubuntu-latest
76+
environment:
77+
name: pypi
78+
url: https://pypi.org/p/pandare # Replace <package-name> with your PyPI project name
79+
permissions:
80+
id-token: write # IMPORTANT: mandatory for trusted publishing
81+
contents: write # Required for creating releases
82+
steps:
83+
- name: Download PyPanda
84+
uses: actions/download-artifact@v4
85+
with:
86+
name: pypanda
87+
path: dist/
88+
89+
- name: Publish distribution 📦 to PyPI
90+
uses: pypa/gh-action-pypi-publish@release/v1
91+
with:
92+
verbose: true
93+
94+
- name: Download Panda Debian Packages
95+
uses: actions/download-artifact@v4
96+
with:
97+
name: panda-debian
98+
path: debian/
99+
100+
- name: Upload wheel and debian packages to release
101+
uses: softprops/action-gh-release@v2
102+
env:
103+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
104+
with:
105+
tag_name: ${{ needs.create_release.outputs.v-version }}
106+
files: |
107+
dist/pandare*.whl
108+
debian/pandare*.deb
109+
110+
upload_containers:
111+
name: Build and push PANDA Docker containers
112+
if: github.repository == 'panda-re/panda'
113+
needs: [ create_release, publish_to_pypi_and_release ]
114+
runs-on: panda-arc
115+
steps:
116+
- name: Check out
117+
uses: actions/checkout@v4
118+
with:
119+
fetch-depth: 0
120+
121+
- name: Login to Docker Registry
71122
uses: docker/login-action@v3
72123
with:
73124
username: pandare
74125
password: ${{secrets.pandare_dockerhub}}
75-
76-
77-
#- name: 'Login to GHCR Registry'
78-
# if: ${{ matrix.ubuntu_version == env.PANDA_CONTAINER_UBUNTU_VERSION }}
79-
# uses: docker/login-action@v3
80-
# with:
81-
# registry: ghcr.io
82-
# username: ${{ github.repository_owner }}
83-
# password: ${{ secrets.GITHUB_TOKEN }}
126+
127+
- name: Build pandadev:latest
128+
uses: docker/build-push-action@v5
129+
with:
130+
push: true
131+
context: ${{ github.workspace }}
132+
tags: |
133+
pandare/pandadev:${{ github.sha }}
134+
pandare/pandadev:${{ needs.create_release.outputs.v-version }}
135+
pandare/pandadev:latest
136+
target: developer
137+
cache-from: type=registry,ref=pandare/pandadev:cache
138+
cache-to: type=registry,ref=pandare/pandadev:cache,mode=max
84139

85140
- name: Build panda:latest
86-
if: ${{ matrix.ubuntu_version == env.PANDA_CONTAINER_UBUNTU_VERSION }}
87141
uses: docker/build-push-action@v5
88142
with:
89143
push: true
@@ -92,119 +146,52 @@ jobs:
92146
pandare/panda:${{ github.sha }}
93147
pandare/panda:${{ needs.create_release.outputs.v-version }}
94148
pandare/panda:latest
95-
# ghcr.io/pandare/panda:${{ github.sha }}
96-
# ghcr.io/pandare/panda:${{ needs.create_release.outputs.v-version }}
97-
# ghcr.io/pandare/panda:latest
98149
target: panda
99-
- name: Build pandadev:latest
100-
if: ${{ matrix.ubuntu_version == env.PANDA_CONTAINER_UBUNTU_VERSION }}
150+
cache-from: type=registry,ref=pandare/pandadev:cache
151+
cache-to: type=registry,ref=pandare/panda:cache,mode=max
152+
153+
- name: Build Panda stable container
154+
if: ${{ github.ref == 'refs/heads/stable' }}
101155
uses: docker/build-push-action@v5
102156
with:
103157
push: true
104158
context: ${{ github.workspace }}
105159
tags: |
106-
pandare/pandadev:${{ github.sha }}
107-
pandare/pandadev:${{ needs.create_release.outputs.v-version }}
108-
pandare/pandadev:latest
109-
# ghcr.io/pandare/pandadev:${{ github.sha }}
110-
# ghcr.io/pandare/pandadev:${{ needs.create_release.outputs.v-version }}
111-
# ghcr.io/pandare/pandadev:latest
112-
target: developer
113-
- name: Checkout docs and reset
114-
if: ${{ matrix.ubuntu_version == env.PANDA_CONTAINER_UBUNTU_VERSION }}
115-
run: rm -rf "${GITHUB_WORKSPACE}/auto_pydoc";
116-
git clone https://panda-jenkins-ci:${{ secrets.PANDABOT_GITHUB_API }}@github.com/panda-re/panda-re.github.io.git --branch=master ${GITHUB_WORKSPACE}/auto_pydoc/pandare
117-
- name: Update PYPANDA docs in container
118-
if: ${{ matrix.ubuntu_version == env.PANDA_CONTAINER_UBUNTU_VERSION }}
119-
run: docker run --rm -v ${GITHUB_WORKSPACE}/auto_pydoc:/out pandare/pandadev:latest /bin/sh -c "pip3 install pdoc3==0.10.0; cd /panda/panda/python/core; pdoc3 --html --template-dir=../docs/template --force -o /out/${GITHUB_REF##*/} pandare; chmod -R 777 /out/"
120-
# will put docs in workspace/auto_pydoc/dev/pandare and/or workspace/auto_pydoc/stable/pandare
121-
# we want to copy auto_pydoc/dev/pandare to auto_pydoc/pandare/ and /auto_pydoc/stable/pandare to /auto_pydoc/pandare/stable
122-
#
123-
# This is a bit complicated, sorry. We want to keep pandare/{CNAME,.git/} and nothing else
124-
# then we copy in the new files (and merge doc-search.html and index.js with dev/pandare/
125-
- name: Push PYPANDA docs to GitHub Pages if docs changed
126-
if: ${{ matrix.ubuntu_version == env.PANDA_CONTAINER_UBUNTU_VERSION }}
127-
run: cd "${GITHUB_WORKSPACE}/auto_pydoc" &&
128-
mv pandare/CNAME dev &&
129-
rm -rf pandare/* &&
130-
mv dev/pandare/* pandare &&
131-
rmdir dev/pandare &&
132-
mv dev/* pandare/ &&
133-
cd pandare &&
134-
git config --global user.email "panda-ci@panda-re.mit.edu" &&
135-
git config --global user.name "PANDA Bot" &&
136-
git add . &&
137-
git commit -m "Documentation update for PANDA commit ${{ github.sha }} branch dev" &&
138-
git push || true
139-
140-
publish-to-pypi:
141-
name: Publish Python 🐍 distribution 📦 to PyPI
142-
if: github.repository == 'panda-re/panda' && github.ref == 'refs/heads/dev'
143-
needs:
144-
- build_release_assets
145-
runs-on: ubuntu-latest
146-
environment:
147-
name: pypi
148-
url: https://pypi.org/p/pandare # Replace <package-name> with your PyPI project name
149-
permissions:
150-
id-token: write # IMPORTANT: mandatory for trusted publishing
151-
152-
steps:
153-
- name: Download all the dists
154-
uses: actions/download-artifact@v4
155-
with:
156-
name: pypanda
157-
path: dist/
158-
159-
- name: Publish distribution 📦 to PyPI
160-
uses: pypa/gh-action-pypi-publish@release/v1
161-
with:
162-
verbose: true
163-
164-
build_stable:
165-
if: github.repository == 'panda-re/panda' && github.ref == 'refs/heads/stable'
160+
pandare/panda_stable:${{ github.sha }}
161+
pandare/panda_stable:${{ needs.create_release.outputs.v-version }}
162+
pandare/panda_stable:latest
163+
target: panda
164+
cache-from: type=registry,ref=pandare/panda:cache
165+
cache-to: type=registry,ref=pandare/panda_stable:cache,mode=max
166+
167+
update_documentation:
168+
name: Update PYPANDA documentation
169+
if: ${{ github.repository == 'panda-re/panda' }}
170+
needs: [ upload_containers ]
166171
runs-on: panda-arc
167172
steps:
168-
- name: Checkout PANDA at current commit
169-
uses: actions/checkout@v4
170-
171-
- name: 'Login to Docker Registry'
172-
uses: docker/login-action@v3
173-
with:
174-
username: pandare
175-
password: ${{secrets.pandare_dockerhub}}
176-
177-
- name: Build Bionic container
178-
# Push both dev and regular container
179-
uses: docker/build-push-action@v5
180-
with:
181-
push: true
182-
context: ${{ github.workspace }}
183-
tags: |
184-
pandare/panda_stable:${{ github.sha }}
185-
pandare/panda_stable:latest
186-
target: panda
187-
188173
- name: Checkout docs and reset
189174
run: rm -rf "${GITHUB_WORKSPACE}/auto_pydoc";
190175
git clone https://panda-jenkins-ci:${{ secrets.PANDABOT_GITHUB_API }}@github.com/panda-re/panda-re.github.io.git --branch=master ${GITHUB_WORKSPACE}/auto_pydoc/pandare
191176

192177
- name: Update PYPANDA docs in container
193178
run: docker run --rm -v ${GITHUB_WORKSPACE}/auto_pydoc/pandare:/out pandare/pandadev:latest /bin/sh -c "pip3 install pdoc3==0.10.0; cd /panda/panda/python/core; pdoc3 --html --template-dir=../docs/template --force -o /out/${GITHUB_REF##*/} pandare; chmod -R 777 /out/"
194-
# will put docs in workspace/auto_pydoc/dev/pandare and/or workspace/auto_pydoc/stable/pandare
195-
# we want to copy /auto_pydoc/dev/pandare to /auto_doc and /auto_pydoc/stable/pandare to /auto_pydoc/stable
196-
#
197-
# This is a bit complicated, sorry. We create a directory stable and combine doc-search.html and index.js in there.
179+
180+
# will put docs in workspace/auto_pydoc/{dev, stable}/pandare and/or workspace/auto_pydoc/stable/pandare
181+
# we want to copy auto_pydoc/{dev, stable}/pandare to auto_pydoc/pandare/ and /auto_pydoc/stable/pandare to /auto_pydoc/pandare/stable
182+
#
183+
# This is a bit complicated, sorry. We want to keep pandare/{CNAME,.git/} and nothing else
184+
# then we copy in the new files (and merge doc-search.html and index.js with {dev, stable}/pandare/
198185
- name: Push PYPANDA docs to GitHub Pages if docs changed
199-
#run: cd "${GITHUB_WORKSPACE}/auto_pydoc/pandare" && mv ./stable ./stable2; mv ./stable2/pandare stable; rm -rf ./stable2;
200186
run: cd "${GITHUB_WORKSPACE}/auto_pydoc" &&
201-
rm -rf pandare/stable &&
202-
mv stable/pandare/* pandare/stable &&
203-
rmdir stable/pandare &&
204-
mv stable/* pandare/stable &&
205-
cd pandare &&
206-
git config --global user.email "panda-ci@panda-re.mit.edu" &&
207-
git config --global user.name "PANDA Bot" &&
208-
git add . &&
209-
git commit -m "Documentation update for PANDA commit ${{ github.sha }} branch stable" &&
210-
git push || true
187+
mv pandare/CNAME ${{ github.ref_name }} &&
188+
rm -rf pandare/* &&
189+
mv ${{ github.ref_name }}/pandare/* pandare &&
190+
rmdir ${{ github.ref_name }}/pandare &&
191+
mv ${{ github.ref_name }}/* pandare/ &&
192+
cd pandare &&
193+
git config --global user.email "panda-ci@panda-re.mit.edu" &&
194+
git config --global user.name "PANDA Bot" &&
195+
git add . &&
196+
git commit -m "Documentation update for PANDA commit ${{ github.sha }} branch ${{ github.ref_name }}" &&
197+
git push || true

panda/debian/.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
panda.deb
1+
*.deb
2+
*.whl

panda/python/core/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@ data
88
a
99
__pycache__
1010
*.egg-info
11+
.eggs/

panda/python/core/pyproject.toml

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,3 @@ dependencies = [
3636
"protobuf>=4.25.1",
3737
"colorama"
3838
]
39-
40-
[tool.setuptools_scm]
41-
root = "../../.."
42-
fallback_version = "0.0.0.1"
43-
version_scheme = "guess-next-dev"
44-
local_scheme = "no-local-version"

panda/python/core/setup.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
fallback_version="0.0.0.1",
1313
version_scheme="guess-next-dev",
1414
local_scheme="no-local-version")
15+
# https://github.com/pypa/setuptools-scm/blob/62ae6400205533fb4b355170a11295e49b366d23/src/setuptools_scm/_cli.py#L42-L43
16+
version = version.partition(".dev")[0]
1517

1618
with open("README.md", "r") as fh:
1719
long_description = fh.read()

0 commit comments

Comments
 (0)