Merge pull request #231 from ivanyu/ivanyu/release-0-7-0 #405
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: 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", "3.12"] | |
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/install-poetry@v1.3.1 | |
- 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", "3.12"] | |
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/install-poetry@v1.3.1 | |
- 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", "3.12"] | |
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/install-poetry@v1.3.1 | |
- 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/install-poetry@v1.3.1 | |
- 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/install-poetry@v1.3.1 | |
- 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 }} |