Skip to content

Support Python 3.12 #399

Support Python 3.12

Support Python 3.12 #399

name: Pull request, push to main, and tag pipeline
on:
push:
branches: [ main ]
tags:
- v*
pull_request:
branches: [ main ]
jobs:
check_and_test_pyheap:
name: Run checks and tests for PyHeap
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11"]
steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install Poetry
uses: snok/[email protected]
- name: Install dependencies
working-directory: ./pyheap
run: poetry install --no-interaction --no-root
- name: Check with Black
working-directory: ./pyheap
run: poetry run black --check .
- name: Run tests
working-directory: ./pyheap
run: poetry run pytest -vv tests
check_and_test_pyheap_ui:
name: Run checks and tests for PyHeap UI
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11"]
steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install Poetry
uses: snok/[email protected]
- name: Install dependencies
working-directory: ./pyheap-ui
run: poetry install --no-interaction --no-root
- name: Check with Black
working-directory: ./pyheap-ui
run: poetry run black --check .
- name: Run tests
working-directory: ./pyheap-ui
run: poetry run pytest -vv tests
integration_tests:
name: Run integration tests
runs-on: ubuntu-latest
needs:
- check_and_test_pyheap
- check_and_test_pyheap_ui
strategy:
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11"]
steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install Poetry
uses: snok/[email protected]
- name: Install dependencies
working-directory: ./integration_tests
run: poetry install --no-interaction --no-root
- name: Check with Black
working-directory: ./integration_tests
run: poetry run black --check .
- name: Install PyHeap UI
working-directory: ./integration_tests
run: poetry run pip install -e ../pyheap-ui/
- name: Run integration tests
working-directory: ./integration_tests
run: poetry run pytest -vv
build_and_upload_pyheap:
name: Build PyHeap distribution and upload if needed
runs-on: ubuntu-latest
needs: integration_tests
steps:
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.10"
- uses: actions/checkout@v3
- name: Install Poetry
uses: snok/[email protected]
- name: Install dependencies
working-directory: ./pyheap
run: poetry install --no-interaction --no-root
- name: Build distribution
working-directory: ./pyheap
run: |
make clean dist
- name: Release
uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/')
with:
files: |
./pyheap/dist/pyheap_dump
- name: Prepare Docker build
working-directory: ./pyheap-ui
run: make docker-prepare
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Docker meta
id: meta
uses: docker/metadata-action@v4
with:
images: ivanyu/pyheap-dumper
tags: |
type=raw,value=latest,enable=${{ github.ref == format('refs/heads/{0}', 'main') }}
type=semver,pattern={{version}}
- uses: docker/login-action@v2
name: Login to Docker Hub
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- uses: docker/build-push-action@v3
name: Build and push
with:
push: ${{ github.event_name == 'push' || github.event_name == 'release' }}
context: ./pyheap
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
build_and_upload_pyheap_ui:
name: Build PyHeap UI distribution and upload if needed
runs-on: ubuntu-latest
needs: integration_tests
permissions:
packages: write
contents: read
steps:
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.10"
- uses: actions/checkout@v3
- name: Install Poetry
uses: snok/[email protected]
- name: Prepare Docker build
working-directory: ./pyheap-ui
run: make docker-prepare
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Docker meta
id: meta
uses: docker/metadata-action@v4
with:
images: ivanyu/pyheap-ui
tags: |
type=raw,value=latest,enable=${{ github.ref == format('refs/heads/{0}', 'main') }}
type=semver,pattern={{version}}
- uses: docker/login-action@v2
name: Login to Docker Hub
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- uses: docker/build-push-action@v3
name: Build and push
with:
push: ${{ github.event_name == 'push' || github.event_name == 'release' }}
context: ./pyheap-ui
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}