Skip to content

fix: Fix CI; Use latest python versions; drop old pythons #46

fix: Fix CI; Use latest python versions; drop old pythons

fix: Fix CI; Use latest python versions; drop old pythons #46

Workflow file for this run

# .github/workflows/base.yml
name: Build
on:
# this one is to trigger the workflow manually from the interface
workflow_dispatch:
push:
tags:
- '*'
branches:
- main
pull_request:
branches:
- main
jobs:
# pre-job to read nox tests matrix - see https://stackoverflow.com/q/66747359/7262247
list_nox_test_sessions:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: 3.12
architecture: x64
- name: Install noxfile requirements
shell: bash -l {0}
run: pip install -r noxfile-requirements.txt
- name: List 'tests' nox sessions
id: set-matrix
run: echo "::set-output name=matrix::$(nox -s gha_list -- tests)"
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }} # save nox sessions list to outputs
run_all_tests:
needs: list_nox_test_sessions
strategy:
fail-fast: false
matrix:
os: [ ubuntu-latest ] # , macos-latest, windows-latest]
# all nox sessions: manually > dynamically from previous job
# nox_session: ["tests-2.7", "tests-3.7"]
nox_session: ${{ fromJson(needs.list_nox_test_sessions.outputs.matrix) }}
name: ${{ matrix.os }} ${{ matrix.nox_session }} # ${{ matrix.name_suffix }}
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v2
# Conda install
- name: Install conda v3.12
uses: conda-incubator/setup-miniconda@v3
with:
# auto-update-conda: true
python-version: 3.12
activate-environment: noxenv
- run: conda info
shell: bash -l {0} # so that conda works
- run: conda list
shell: bash -l {0} # so that conda works
# Nox install + run
- name: Install noxfile requirements
shell: bash -l {0} # so that conda works
run: pip install -r noxfile-requirements.txt
- run: conda list
shell: bash -l {0} # so that conda works
- run: nox -s "${{ matrix.nox_session }}"
shell: bash -l {0} # so that conda works
# Share ./docs/reports so that they can be deployed with doc in next job
- name: Share reports with other jobs
# if: matrix.nox_session == '...': not needed, if empty wont be shared
uses: actions/upload-artifact@master
with:
name: reports_dir
path: ./docs/reports
run_stubtest:
runs-on: ubuntu-latest
defaults:
run:
shell: bash -l {0} # so that conda works
steps:
- uses: actions/checkout@v2
- name: Install conda v3.12
uses: conda-incubator/setup-miniconda@v3
with:
python-version: '3.12'
activate-environment: noxenv
- name: Install noxfile requirements
run: pip install -r noxfile-requirements.txt
- run: nox -s stubtest
publish_release:
needs: [run_stubtest, run_all_tests]
runs-on: ubuntu-latest
if: github.event_name == 'push'
steps:
- name: GitHub context to debug conditional steps
env:
GITHUB_CONTEXT: ${{ toJSON(github) }}
run: echo "$GITHUB_CONTEXT"
- uses: actions/checkout@v2
with:
fetch-depth: 0 # so that gh-deploy works
# 1) retrieve the reports generated previously
- name: Retrieve reports
uses: actions/download-artifact@master
with:
name: reports_dir
path: ./docs/reports
# Conda install
- name: Install conda v3.12
uses: conda-incubator/setup-miniconda@v3
with:
# auto-update-conda: true
python-version: 3.12
activate-environment: noxenv
- run: conda info
shell: bash -l {0} # so that conda works
- run: conda list
shell: bash -l {0} # so that conda works
# Nox install
- name: Install noxfile requirements
shell: bash -l {0} # so that conda works
run: pip install -r noxfile-requirements.txt
- run: conda list
shell: bash -l {0} # so that conda works
# 5) Run the flake8 report and badge
- name: Run flake8 analysis and generate corresponding badge
shell: bash -l {0} # so that conda works
run: nox -s flake8
# -------------- only on Ubuntu + MAIN PUSH (no pull request, no tag) -----------
# 5) Publish the doc and test reports
- name: \[not on TAG\] Publish documentation, tests and coverage reports
if: github.event_name == 'push' && startsWith(github.ref, 'refs/heads') # startsWith(matrix.os,'ubuntu')
shell: bash -l {0} # so that conda works
run: nox -s publish
# 6) Publish coverage report
- name: \[not on TAG\] Create codecov.yaml with correct paths
if: github.event_name == 'push' && startsWith(github.ref, 'refs/heads')
shell: bash
run: |
cat << EOF > codecov.yml
# codecov.yml
fixes:
- "/home/runner/work/smarie/python-decopatch/::" # Correct paths
EOF
- name: \[not on TAG\] Publish coverage report
if: github.event_name == 'push' && startsWith(github.ref, 'refs/heads')
uses: codecov/codecov-action@v1
with:
files: ./docs/reports/coverage/coverage.xml
# -------------- only on Ubuntu + TAG PUSH (no pull request) -----------
# 7) Create github release and build the wheel
- name: \[TAG only\] Build wheel and create github release
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags')
shell: bash -l {0} # so that conda works
run: nox -s release -- ${{ secrets.GITHUB_TOKEN }}
# 8) Publish the wheel on PyPi
- name: \[TAG only\] Deploy on PyPi
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags')
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
delete-artifacts:
needs: publish_release
runs-on: ubuntu-latest
if: github.event_name == 'push'
steps:
- uses: kolpav/purge-artifacts-action@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
expire-in: 0 # Setting this to 0 will delete all artifacts