Skip to content

CI/CD

CI/CD #1126

Workflow file for this run

name: CI/CD
on:
push:
branches:
- master
tags:
- v*.*.*
pull_request:
branches:
- master
# Run daily at 0:01 UTC
schedule:
- cron: '1 0 * * *'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
pre-commit:
name: pre-commit
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
- uses: pre-commit/action@v3.0.1
with:
extra_args: --hook-stage manual --all-files
test:
runs-on: ${{ matrix.os }}
needs: pre-commit
strategy:
matrix:
include:
- os: ubuntu-latest
python-version: "3.9"
- os: ubuntu-latest
python-version: "3.10"
- os: ubuntu-latest
python-version: "3.11"
- os: ubuntu-latest
python-version: "3.12"
- os: macos-13
python-version: "3.9"
- os: macos-13
python-version: "3.10"
- os: macos-13
python-version: "3.11"
- os: macos-13
python-version: "3.12"
- os: macos-14
python-version: "3.10"
- os: macos-14
python-version: "3.11"
- os: macos-14
python-version: "3.12"
name: test egamma-tnp (${{ matrix.os }}) - python ${{ matrix.python-version }}
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Set python test settings
run: |
echo "INSTALL_EXTRAS='[dev]'" >> $GITHUB_ENV
- name: Install dependencies (Linux)
if: matrix.os == 'ubuntu-latest'
run: |
python -m pip install --upgrade pip setuptools wheel
python -m pip install -q -e '.[dev]'
python -m pip list
- name: Install dependencies (MacOS)
if: startsWith(matrix.os, 'macos')
run: |
python -m pip install --upgrade pip setuptools wheel
python -m pip install -q -e '.[dev]'
python -m pip list
# - name: Install dependencies (Windows)
# if: matrix.os == 'windows-latest'
# run: |
# python -m pip install --upgrade pip setuptools wheel
# python -m pip install -q -e '.[dev]'
# python -m pip list
- name: Test with pytest
run: |
pytest tests
release:
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
runs-on: ubuntu-latest
needs: [test]
permissions:
id-token: write
attestations: write
contents: read
strategy:
matrix:
python-version: ["3.12"]
name: deploy release
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Build package for PyPI
run: |
pipx run hatch build -t sdist -t wheel
- name: Verify the distribution
run: pipx run twine check --strict dist/*
- name: Generate artifact attestation for sdist and wheel
uses: actions/attest-build-provenance@ef244123eb79f2f7a7e75d99086184180e6d0018 # v1.4.4
with:
subject-path: "dist/egamma_tnp-*"
- name: Publish package to PyPI
uses: pypa/gh-action-pypi-publish@v1.12.2
with:
user: __token__
password: ${{ secrets.PYPI_TOKEN }}
pass:
needs: [test]
runs-on: ubuntu-latest
steps:
- run: echo "All jobs passed"