Skip to content

ci: attach build artifacts to release #28

ci: attach build artifacts to release

ci: attach build artifacts to release #28

Workflow file for this run

name: Build pipeline
on:
push:
branches:
- main
- dev
release:
types: [published]
env:
DEFAULT_PYTHON: "3.12"
jobs:
build:
name: 🔨 Build distribution
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: 🏗 Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v6
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: 🔨 Build distribution
uses: OctoPrint/actions/build-dist@main
with:
artifact: dist
pre-commit:
name: 🧹 Pre-commit
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: 🏗 Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v6
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: 🏗 Set up pre-commit
run: |
pip install pre-commit
- name: 🚀 Run pre-commit
run: |
pre-commit run --all-files --show-diff-on-failure
e2e:
name: 🧪 E2E tests
needs: build
runs-on: ubuntu-22.04 # change back to ubuntu-latest once we drop Python 3.7 & upgrade playwright
strategy:
matrix:
octoprint: ["main", "dev"]
steps:
- name: ⬇ Download build result
uses: actions/download-artifact@v6
with:
name: dist
path: dist
- name: 🎭 Run OctoPrint's E2E Tests
uses: OctoPrint/actions/e2e@main
with:
ref: ${{ matrix.octoprint }}
deps: ${{ github.workspace }}/dist/*.whl
suffix: "-${{ matrix.octoprint }}"
publish-on-release:
name: 📦 Publish build & source on GitHub release
if: github.event_name == 'release'
needs:
- pre-commit
- e2e
runs-on: ubuntu-latest
steps:
- name: ⬇ Download build result
uses: actions/download-artifact@v6
with:
name: dist
path: dist
- name: ⬆ Upload to release
run: |
UPLOAD_URL="https://uploads.github.com/repos/${{ github.repository }}/releases/${{ github.event.release.id }}/assets"
for file in dist/*; do
[ -e "$file" ] || exit 1
echo "Uploading $file..."
response=$(curl -s -XPOST \
-H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
-H "Content-Type: $(file -b --mime-type $file)" \
--data-binary @$file \
"$UPLOAD_URL?name=$(basename $file)")
echo "$response" | jq -e '.errors' >/dev/null && echo "Error uploading $file to release: $response" && exit 1 || true
done
publish-on-testpypi:
name: 📦 Publish on TestPyPI
if: github.event_name == 'release'
needs:
- publish-on-release
runs-on: ubuntu-latest
environment:
name: testpypi
url: https://test.pypi.org/p/OctoPrint-MfaTotp
permissions:
id-token: write
steps:
- name: ⬇ Download build result
uses: actions/download-artifact@v6
with:
name: dist
path: dist
- name: 🧹 Remove some stuff that won't make it through twine check
run: |
rm dist/*.source.tar.gz
rm dist/sha512sums.txt
- name: 📦 Publish to index
uses: pypa/gh-action-pypi-publish@release/v1
with:
repository-url: https://test.pypi.org/legacy/
publish-on-pypi:
name: 📦 Publish tagged releases to PyPI
if: github.event_name == 'release'
needs: publish-on-testpypi
runs-on: ubuntu-latest
environment:
name: pypi
url: https://test.pypi.org/p/OctoPrint-MfaTotp
permissions:
id-token: write
steps:
- name: ⬇ Download build result
uses: actions/download-artifact@v6
with:
name: dist
path: dist
- name: 🧹 Remove some stuff that won't make it through twine check
run: |
rm dist/*.source.tar.gz
rm dist/sha512sums.txt
- name: 📦 Publish to index
uses: pypa/gh-action-pypi-publish@release/v1