Merge pull request #496 from jupyterhub/pre-commit-ci-update-config #664
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
# This is a GitHub workflow defining a set of jobs with a set of steps. | |
# ref: https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions | |
# | |
# Publish PyPI and NPM artifacts | |
# | |
name: Publish | |
on: | |
pull_request: | |
paths-ignore: | |
- "docs/**" | |
- "contrib/**" | |
- "**.md" | |
- ".github/workflows/*" | |
- "!.github/workflows/publish.yaml" | |
push: | |
paths-ignore: | |
- "docs/**" | |
- "contrib/**" | |
- "**.md" | |
- ".github/workflows/*" | |
- "!.github/workflows/publish.yaml" | |
branches-ignore: | |
- "dependabot/**" | |
- "pre-commit-ci-update-config" | |
tags: | |
- "*" | |
workflow_dispatch: | |
jobs: | |
build: | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.12" | |
- uses: actions/setup-node@v4 | |
with: | |
cache: yarn | |
node-version: "lts/*" | |
registry-url: https://registry.npmjs.org | |
cache-dependency-path: labextension/yarn.lock | |
- name: Update root build packages | |
run: | | |
pip install --upgrade build pip | |
- name: Build dist | |
run: | | |
pyproject-build | |
cd dist && sha256sum * | tee SHA256SUMS | |
- name: Check dist sizes | |
run: | | |
set -eux | |
ls -lathr dist | |
[[ $(find dist -type f -size +200k) ]] && exit 1 || echo ok | |
- name: Javascript package | |
run: | | |
mkdir jsdist | |
cd jsdist | |
npm pack ../labextension | |
sha256sum * | tee SHA256SUMS | |
- name: Upload Python artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: dist-${{ github.run_attempt }} | |
path: dist | |
if-no-files-found: error | |
- name: Upload Javascript artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: jsdist-${{ github.run_attempt }} | |
path: jsdist | |
if-no-files-found: error | |
# https://packaging.python.org/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows/ | |
publish-pypi: | |
runs-on: ubuntu-22.04 | |
needs: | |
- build | |
steps: | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.12" | |
- name: Download artifacts from build | |
uses: actions/download-artifact@v4 | |
with: | |
name: dist-${{ github.run_attempt }} | |
path: dist | |
# The PyPI publishing action will try to publish this checksum file as if | |
# it was a Python package if it remains in dist, so we clean it up first. | |
- name: Cleanup SHA256SUMS | |
run: | | |
cat dist/SHA256SUMS | |
rm dist/SHA256SUMS | |
- name: Publish to PyPI | |
if: startsWith(github.ref, 'refs/tags') | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
password: ${{ secrets.PYPI_PASSWORD }} | |
# https://docs.github.com/en/actions/language-and-framework-guides/publishing-nodejs-packages#publishing-packages-to-the-npm-registry | |
publish-npm: | |
runs-on: ubuntu-22.04 | |
needs: | |
- build | |
steps: | |
# actions/setup-node creates an .npmrc file that references NODE_AUTH_TOKEN | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: "lts/*" | |
registry-url: https://registry.npmjs.org | |
- name: Download artifacts from build | |
uses: actions/download-artifact@v4 | |
with: | |
name: jsdist-${{ github.run_attempt }} | |
path: jsdist | |
- run: | | |
npm publish --dry-run ./jsdist/jupyterhub-jupyter-server-proxy-*.tgz | |
- run: | | |
npm publish ./jsdist/jupyterhub-jupyter-server-proxy-*.tgz | |
if: startsWith(github.ref, 'refs/tags') | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} |