This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build and Publish Docker Container and Pypanda Docs # Only for main panda-re repo, not forks | |
on: | |
push: | |
branches: | |
- dev | |
- stable | |
env: | |
PANDA_CONTAINER_UBUNTU_VERSION: '20.04' | |
jobs: | |
create_release: | |
if: github.repository == 'panda-re/panda' && github.ref == 'refs/heads/dev' | |
runs-on: panda-arc | |
outputs: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
v-version: ${{ steps.version.outputs.v-version }} | |
steps: | |
- name: Install git | |
run: sudo apt-get -qq update -y && sudo apt-get -qq install git curl jq -y | |
- name: Get next version | |
uses: reecetech/version-increment@2023.10.2 | |
id: version | |
with: | |
release_branch: dev | |
use_api: true | |
build_release_assets: | |
if: github.repository == 'panda-re/panda' && github.ref == 'refs/heads/dev' | |
needs: create_release | |
runs-on: panda-arc | |
strategy: | |
matrix: | |
ubuntu_version: | |
- 20.04 | |
- 22.04 | |
steps: | |
- name: Install git | |
run: sudo apt-get -qq update -y && sudo apt-get -qq install git curl jq -y | |
- name: Check out | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Build package | |
working-directory: panda/debian | |
run: ./setup.sh Ubuntu ${{ matrix.ubuntu_version }} | |
- name: Upload wheel and debian packages to release | |
uses: softprops/action-gh-release@v2 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
tag_name: ${{ needs.create_release.outputs.v-version }} | |
files: | | |
panda/debian/pandare-*.whl | |
panda/debian/pandare_*.deb | |
- name: Store the PyPanda distribution packages | |
uses: actions/upload-artifact@v3 | |
with: | |
name: python-package-distributions | |
path: panda/debian/pandare-*.whl | |
if-no-files-found: error | |
- name: 'Login to Docker Registry' | |
if: ${{ matrix.ubuntu_version == env.PANDA_CONTAINER_UBUNTU_VERSION }} | |
uses: docker/login-action@v3 | |
with: | |
username: pandare | |
password: ${{secrets.pandare_dockerhub}} | |
#- name: 'Login to GHCR Registry' | |
# if: ${{ matrix.ubuntu_version == env.PANDA_CONTAINER_UBUNTU_VERSION }} | |
# uses: docker/login-action@v3 | |
# with: | |
# registry: ghcr.io | |
# username: ${{ github.repository_owner }} | |
# password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Build panda:latest | |
if: ${{ matrix.ubuntu_version == env.PANDA_CONTAINER_UBUNTU_VERSION }} | |
uses: docker/build-push-action@v5 | |
with: | |
push: true | |
context: ${{ github.workspace }} | |
tags: | | |
pandare/panda:${{ github.sha }} | |
pandare/panda:${{ needs.create_release.outputs.v-version }} | |
pandare/panda:latest | |
# ghcr.io/pandare/panda:${{ github.sha }} | |
# ghcr.io/pandare/panda:${{ needs.create_release.outputs.v-version }} | |
# ghcr.io/pandare/panda:latest | |
target: panda | |
- name: Build pandadev:latest | |
if: ${{ matrix.ubuntu_version == env.PANDA_CONTAINER_UBUNTU_VERSION }} | |
uses: docker/build-push-action@v5 | |
with: | |
push: true | |
context: ${{ github.workspace }} | |
tags: | | |
pandare/pandadev:${{ github.sha }} | |
pandare/pandadev:${{ needs.create_release.outputs.v-version }} | |
pandare/pandadev:latest | |
# ghcr.io/pandare/pandadev:${{ github.sha }} | |
# ghcr.io/pandare/pandadev:${{ needs.create_release.outputs.v-version }} | |
# ghcr.io/pandare/pandadev:latest | |
target: developer | |
- name: Checkout docs and reset | |
if: ${{ matrix.ubuntu_version == env.PANDA_CONTAINER_UBUNTU_VERSION }} | |
run: rm -rf "${GITHUB_WORKSPACE}/auto_pydoc"; | |
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 | |
- name: Update PYPANDA docs in container | |
if: ${{ matrix.ubuntu_version == env.PANDA_CONTAINER_UBUNTU_VERSION }} | |
run: docker run --rm -v ${GITHUB_WORKSPACE}/auto_pydoc:/out pandare/pandadev:latest /bin/sh -c "pip3 install pdoc3; cd /panda/panda/python/core; pdoc3 --html --template-dir=../docs/template --force -o /out/${GITHUB_REF##*/} pandare; chmod -R 777 /out/" | |
# will put docs in workspace/auto_pydoc/dev/pandare and/or workspace/auto_pydoc/stable/pandare | |
# we want to copy auto_pydoc/dev/pandare to auto_pydoc/pandare/ and /auto_pydoc/stable/pandare to /auto_pydoc/pandare/stable | |
# | |
# This is a bit complicated, sorry. We want to keep pandare/{CNAME,.git/} and nothing else | |
# then we copy in the new files (and merge doc-search.html and index.js with dev/pandare/ | |
- name: Push PYPANDA docs to GitHub Pages if docs changed | |
if: ${{ matrix.ubuntu_version == env.PANDA_CONTAINER_UBUNTU_VERSION }} | |
run: cd "${GITHUB_WORKSPACE}/auto_pydoc" && | |
mv pandare/CNAME dev && | |
rm -rf pandare/* && | |
mv dev/pandare/* pandare && | |
rmdir dev/pandare && | |
mv dev/* pandare/ && | |
cd pandare && | |
git config --global user.email "panda-ci@panda-re.mit.edu" && | |
git config --global user.name "PANDA Bot" && | |
git add . && | |
git commit -m "Documentation update for PANDA commit ${{ github.sha }} branch dev" && | |
git push || true | |
publish-to-pypi: | |
name: >- | |
Publish Python 🐍 distribution 📦 to PyPI | |
if: github.repository == 'panda-re/panda' && github.ref == 'refs/heads/dev' | |
needs: | |
- build_release_assets | |
runs-on: ubuntu-latest | |
environment: | |
name: pypi | |
url: https://pypi.org/p/pandare # Replace <package-name> with your PyPI project name | |
permissions: | |
id-token: write # IMPORTANT: mandatory for trusted publishing | |
steps: | |
- name: Download all the dists | |
uses: actions/download-artifact@v3 | |
with: | |
name: python-package-distributions | |
path: dist/ | |
- name: Publish distribution 📦 to PyPI | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
verbose: true | |
build_stable: | |
if: github.repository == 'panda-re/panda' && github.ref == 'refs/heads/stable' | |
runs-on: panda-arc | |
steps: | |
- name: Checkout PANDA at current commit | |
uses: actions/checkout@v4 | |
- name: 'Login to Docker Registry' | |
uses: docker/login-action@v3 | |
with: | |
username: pandare | |
password: ${{secrets.pandare_dockerhub}} | |
- name: Build Bionic container | |
# Push both dev and regular container | |
run: DOCKER_BUILDKIT=1 docker build --progress=plain --target=panda -t pandare/panda_stable:${GITHUB_SHA} $GITHUB_WORKSPACE; | |
docker tag pandare/panda_stable:${GITHUB_SHA} pandare/panda_stable:latest | |
docker push pandare/panda_stable:${GITHUB_SHA}; | |
docker push pandare/panda_stable; | |
#DOCKER_BUILDKIT=1 docker build --progress=plain --target=developer -t pandare/pandadev:${GITHUB_SHA} $GITHUB_WORKSPACE; | |
#docker tag pandare/panadev:${GITHUB_SHA} pandare/pandadev:latest | |
#docker push pandare/pandadev; | |
- name: Checkout docs and reset | |
run: rm -rf "${GITHUB_WORKSPACE}/auto_pydoc"; | |
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 | |
- name: Update PYPANDA docs in container | |
run: docker run --rm -v ${GITHUB_WORKSPACE}/auto_pydoc/pandare:/out pandare/pandadev:latest /bin/sh -c "pip3 install pdoc3; cd /panda/panda/python/core; pdoc3 --html --template-dir=../docs/template --force -o /out/${GITHUB_REF##*/} pandare; chmod -R 777 /out/" | |
# will put docs in workspace/auto_pydoc/dev/pandare and/or workspace/auto_pydoc/stable/pandare | |
# we want to copy /auto_pydoc/dev/pandare to /auto_doc and /auto_pydoc/stable/pandare to /auto_pydoc/stable | |
# | |
# This is a bit complicated, sorry. We create a directory stable and combine doc-search.html and index.js in there. | |
- name: Push PYPANDA docs to GitHub Pages if docs changed | |
#run: cd "${GITHUB_WORKSPACE}/auto_pydoc/pandare" && mv ./stable ./stable2; mv ./stable2/pandare stable; rm -rf ./stable2; | |
run: cd "${GITHUB_WORKSPACE}/auto_pydoc" && | |
rm -rf pandare/stable && | |
mv stable/pandare/* pandare/stable && | |
rmdir stable/pandare && | |
mv stable/* pandare/stable && | |
cd pandare && | |
git config --global user.email "panda-ci@panda-re.mit.edu" && | |
git config --global user.name "PANDA Bot" && | |
git add . && | |
git commit -m "Documentation update for PANDA commit ${{ github.sha }} branch stable" && | |
git push || true |