-
Notifications
You must be signed in to change notification settings - Fork 16
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #101 from smarie/feature/100_virtualenv
Feature/100 virtualenv
- Loading branch information
Showing
7 changed files
with
371 additions
and
236 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -12,24 +12,32 @@ on: | |
pull_request: | ||
branches: | ||
- main | ||
|
||
defaults: | ||
run: | ||
shell: bash -l {0} | ||
|
||
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@v2 | ||
- uses: actions/setup-python@v1 | ||
- name: Checkout | ||
uses: actions/[email protected] | ||
|
||
- name: Install python 3.9 | ||
uses: actions/[email protected] | ||
with: | ||
python-version: 3.7 | ||
python-version: 3.9 | ||
architecture: x64 | ||
|
||
- name: Install noxfile requirements | ||
shell: bash -l {0} | ||
run: pip install -r noxfile-requirements.txt | ||
|
||
- name: List 'tests' nox sessions | ||
- name: List 'tests' nox sessions and required python versions | ||
id: set-matrix | ||
run: echo "::set-output name=matrix::$(nox -s gha_list -- tests)" | ||
run: echo "::set-output name=matrix::$(nox -s gha_list -- -s tests -v)" | ||
|
||
outputs: | ||
matrix: ${{ steps.set-matrix.outputs.matrix }} # save nox sessions list to outputs | ||
|
||
|
@@ -38,45 +46,72 @@ jobs: | |
strategy: | ||
fail-fast: false | ||
matrix: | ||
# see https://github.com/actions/setup-python/issues/544 | ||
# os: [ ubuntu-20.04 ] | ||
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 }} | ||
name: ${{ matrix.os }} ${{ matrix.nox_session.python }} ${{ matrix.nox_session.session }} # ${{ matrix.name_suffix }} | ||
runs-on: ${{ matrix.os }} | ||
steps: | ||
- uses: actions/checkout@v2 | ||
- name: Checkout | ||
uses: actions/[email protected] | ||
|
||
- name: Install python ${{ matrix.nox_session.python }} for tests | ||
uses: MatteoH2O1999/[email protected] # actions/[email protected] | ||
id: set-py | ||
with: | ||
python-version: ${{ matrix.nox_session.python }} | ||
architecture: x64 | ||
allow-build: info | ||
cache-build: true | ||
|
||
# Conda install | ||
- name: Install conda v3.7 | ||
uses: conda-incubator/setup-miniconda@v2 | ||
- name: Install python 3.12 for nox | ||
uses: actions/[email protected] | ||
with: | ||
# auto-update-conda: true | ||
python-version: 3.7 | ||
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 | ||
python-version: 3.12 | ||
architecture: x64 | ||
|
||
- name: pin virtualenv==20.15.1 in old python versions | ||
# pinned to keep compatibility with old versions, see https://github.com/MatteoH2O1999/setup-python/issues/28#issuecomment-1745613621 | ||
if: contains(fromJson('["2.7", "3.5", "3.6"]'), matrix.nox_session.python ) | ||
run: sed -i "s/virtualenv/virtualenv==20.15.1/g" noxfile-requirements.txt | ||
|
||
- 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 | ||
|
||
- name: Run nox session ${{ matrix.nox_session.session }} | ||
run: nox -s "${{ matrix.nox_session.session }}" -v | ||
|
||
# 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 | ||
# if: matrix.nox_session == '...': not needed, if empty won't be shared | ||
uses: actions/upload-artifact@v4.3.0 | ||
with: | ||
name: reports_dir | ||
path: ./docs/reports | ||
|
||
build_doc: | ||
runs-on: ubuntu-latest | ||
if: github.event_name == 'pull_request' | ||
steps: | ||
- name: Checkout | ||
uses: actions/[email protected] | ||
|
||
- name: Install python 3.9 for nox | ||
uses: actions/[email protected] | ||
with: | ||
python-version: 3.9 | ||
architecture: x64 | ||
|
||
- name: Install noxfile requirements | ||
run: pip install -r noxfile-requirements.txt | ||
|
||
- name: Build the doc including example gallery | ||
run: nox -s docs -- build | ||
|
||
publish_release: | ||
needs: run_all_tests | ||
runs-on: ubuntu-latest | ||
|
@@ -87,47 +122,37 @@ jobs: | |
GITHUB_CONTEXT: ${{ toJSON(github) }} | ||
run: echo "$GITHUB_CONTEXT" | ||
|
||
- uses: actions/checkout@v2 | ||
- name: Checkout with no depth | ||
uses: actions/[email protected] | ||
with: | ||
fetch-depth: 0 # so that gh-deploy works | ||
|
||
- name: Install python 3.9 for nox | ||
uses: actions/[email protected] | ||
with: | ||
python-version: 3.9 | ||
architecture: x64 | ||
|
||
# 1) retrieve the reports generated previously | ||
- name: Retrieve reports | ||
uses: actions/download-artifact@master | ||
uses: actions/download-artifact@v4.1.1 | ||
with: | ||
name: reports_dir | ||
path: ./docs/reports | ||
|
||
# Conda install | ||
- name: Install conda v3.7 | ||
uses: conda-incubator/setup-miniconda@v2 | ||
with: | ||
# auto-update-conda: true | ||
python-version: 3.7 | ||
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 | ||
|
@@ -142,7 +167,7 @@ jobs: | |
EOF | ||
- name: \[not on TAG\] Publish coverage report | ||
if: github.event_name == 'push' && startsWith(github.ref, 'refs/heads') | ||
uses: codecov/codecov-action@v1 | ||
uses: codecov/codecov-action@v4.0.1 | ||
with: | ||
files: ./docs/reports/coverage/coverage.xml | ||
|
||
|
@@ -151,13 +176,12 @@ jobs: | |
# 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 | ||
uses: pypa/gh-action-pypi-publish@v1.8.11 | ||
with: | ||
user: __token__ | ||
password: ${{ secrets.PYPI_API_TOKEN }} | ||
|
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
Oops, something went wrong.