-
Notifications
You must be signed in to change notification settings - Fork 11
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Separate release test workflows for PyPI and Conda-forge (#350)
* These workflows are generally needed on different days so it is quite inconvenient having them so firmly tied together. (i.e. conda test always fails when testing the just-pushed PyPI release...) * This also allows us to simplify the infrastructure a bit. As tox 4 and conda don't play together very nicely, we use a conda-free tox setup for PyPI and a bigger conda-only test-matrix for conda-forge tests. Neither workflow is using stuff it doesn't need. * Leave test_release.yml as a double-launcher, this was useful while working on the branch as we can't workflow-dispatch the components until they hit master in some form. * Each release test pushes its own "check" report so we can now easily see that PyPI passes while Conda-forge fails. Co-authored-by: Jacob Wilkins <[email protected]>
- Loading branch information
Showing
5 changed files
with
191 additions
and
115 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 |
---|---|---|
@@ -1,86 +1,20 @@ | ||
name: test-release | ||
name: Run release tests from PyPI and Conda-forge | ||
|
||
on: | ||
workflow_dispatch: | ||
inputs: | ||
version: | ||
description: 'The Euphonic release version to test e.g. 0.6.1' | ||
required: true | ||
type: string | ||
|
||
jobs: | ||
test: | ||
strategy: | ||
matrix: | ||
os: [ubuntu-latest, windows-latest, macos-latest, macos-13] | ||
fail-fast: false | ||
runs-on: ${{ matrix.os }} | ||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 # Ensure tags are fetched for versioning | ||
- uses: actions/setup-python@v5 | ||
with: | ||
python-version: | | ||
3.10 | ||
3.11 | ||
3.12 | ||
- name: Install llvm on MacOS | ||
if: startsWith(matrix.os, 'macos') | ||
shell: bash -l {0} | ||
env: | ||
# Homebrew location is different on Intel Mac | ||
LLVM_DIR: ${{ (matrix.os == 'macos-13') && '/usr/local/opt/llvm' || '/opt/homebrew/opt/llvm' }} | ||
run: | | ||
brew install llvm | ||
echo CC="${LLVM_DIR}/bin/clang" >> $GITHUB_ENV | ||
echo LDFLAGS="-L${LLVM_DIR}/lib $LDFLAGS" >> $GITHUB_ENV | ||
echo CPPFLAGS="-I${LLVM_DIR}/include $CPPFLAGS" >> $GITHUB_ENV | ||
- name: Windows - find MSVC and set environment variables | ||
if: startsWith(matrix.os, 'windows') | ||
shell: bash -l {0} | ||
env: | ||
MSVC_PREFIX: 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC' | ||
run: | | ||
echo "Available MSVC installations:" | ||
ls "$MSVC_PREFIX" | ||
MSVC_BIN=$(ls "$MSVC_PREFIX" | tail -n 1)\\bin\\HostX64\\x64 | ||
CC="$MSVC_PREFIX\\$MSVC_BIN\\cl.exe" | ||
echo "CC: $CC" | ||
echo "CC=$CC" >> $GITHUB_ENV | ||
CC_LD="$MSVC_PREFIX\\$MSVC_BIN\\link.exe" | ||
echo "CC_LD: $CC_LD" | ||
echo "CC_LD=$CC_LD" >> $GITHUB_ENV | ||
- name: Update pip and install dependencies | ||
shell: bash -l {0} | ||
run: | | ||
python -m pip install --upgrade pip | ||
python -m pip install -r tests_and_analysis/ci_requirements.txt | ||
- name: Run tests | ||
shell: bash -l {0} | ||
env: | ||
EUPHONIC_VERSION: ${{ github.event.inputs.version }} | ||
run: python -m tox -c build_utils/release_tox.ini | ||
- name: Upload test results | ||
if: always() | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: Unit test results ${{ matrix.os }} | ||
path: tests_and_analysis/test/reports/junit_report*.xml | ||
pypi: | ||
uses: ./.github/workflows/test_release_pypi.yml | ||
with: | ||
version: ${{ inputs.version }} | ||
|
||
publish-test-results: | ||
needs: test | ||
runs-on: ubuntu-latest | ||
if: success() || failure() | ||
steps: | ||
- name: Download Artifacts | ||
uses: actions/download-artifact@v4 | ||
with: | ||
path: artifacts | ||
- name: Publish test results | ||
uses: EnricoMi/publish-unit-test-result-action@v2 | ||
with: | ||
junit_files: artifacts/**/junit_report*.xml | ||
conda-forge: | ||
uses: ./.github/workflows/test_release_conda.yml | ||
with: | ||
version: ${{ inputs.version }} |
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 |
---|---|---|
@@ -0,0 +1,69 @@ | ||
name: Test Conda-forge release | ||
on: | ||
workflow_call: | ||
inputs: | ||
version: | ||
description: 'The Euphonic release version to test e.g. 0.6.1' | ||
required: true | ||
type: string | ||
|
||
workflow_dispatch: | ||
inputs: | ||
version: | ||
description: 'The Euphonic release version to test e.g. 0.6.1' | ||
required: true | ||
type: string | ||
|
||
jobs: | ||
test: | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
os: [ubuntu-latest, windows-latest, macos-latest, macos-13] | ||
python-version: ['3.10', '3.11', '3.12'] | ||
runs-on: ${{ matrix.os }} | ||
steps: | ||
- uses: actions/checkout@v4 | ||
|
||
- name: Delete source (to be sure we are testing Conda package!) | ||
shell: bash -el {0} | ||
run: rm -r euphonic | ||
|
||
- uses: conda-incubator/setup-miniconda@v3 | ||
with: | ||
python-version: ${{ matrix.python-version }} | ||
|
||
- name: Install euphonic and dependencies from Conda-forge | ||
shell: bash -el {0} | ||
env: | ||
EUPHONIC_VERSION: ${{ inputs.version }} | ||
|
||
run: | | ||
conda env update --file build_utils/conda_release_test_requirements.yml | ||
conda install -c conda-forge euphonic=$EUPHONIC_VERSION | ||
- name: Run tests | ||
shell: bash -el {0} | ||
run: python tests_and_analysis/test/run_tests.py --report -m "not brille" | ||
|
||
- name: Upload test results | ||
if: always() | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: Conda-forge unit test results ${{ matrix.os }} ${{ matrix.python-version }} | ||
path: tests_and_analysis/test/reports/junit_report*.xml | ||
|
||
publish-conda-test-results: | ||
needs: test | ||
runs-on: ubuntu-latest | ||
if: success() || failure() | ||
steps: | ||
- name: Download Artifacts | ||
uses: actions/download-artifact@v4 | ||
with: | ||
path: artifacts | ||
- name: Publish Conda test results | ||
uses: EnricoMi/publish-unit-test-result-action@v2 | ||
with: | ||
junit_files: artifacts/Conda***/junit_report*.xml | ||
check_name: Conda-forge test results |
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 |
---|---|---|
@@ -0,0 +1,95 @@ | ||
name: Test PyPI release | ||
on: | ||
workflow_call: | ||
inputs: | ||
version: | ||
description: 'The Euphonic release version to test e.g. 0.6.1' | ||
required: true | ||
type: string | ||
|
||
workflow_dispatch: | ||
inputs: | ||
version: | ||
description: 'The Euphonic release version to test e.g. 0.6.1' | ||
required: true | ||
type: string | ||
|
||
jobs: | ||
test: | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
os: [ubuntu-latest, windows-latest, macos-latest, macos-13] | ||
runs-on: ${{ matrix.os }} | ||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 # Ensure tags are fetched for versioning | ||
- uses: actions/setup-python@v5 | ||
with: | ||
python-version: | | ||
3.10 | ||
3.11 | ||
3.12 | ||
- name: Install llvm on MacOS | ||
if: startsWith(matrix.os, 'macos') | ||
shell: bash -l {0} | ||
env: | ||
# Homebrew location is different on Intel Mac | ||
LLVM_DIR: ${{ (matrix.os == 'macos-13') && '/usr/local/opt/llvm' || '/opt/homebrew/opt/llvm' }} | ||
run: | | ||
brew install llvm | ||
echo CC="${LLVM_DIR}/bin/clang" >> $GITHUB_ENV | ||
echo LDFLAGS="-L${LLVM_DIR}/lib $LDFLAGS" >> $GITHUB_ENV | ||
echo CPPFLAGS="-I${LLVM_DIR}/include $CPPFLAGS" >> $GITHUB_ENV | ||
- name: Windows - find MSVC and set environment variables | ||
if: startsWith(matrix.os, 'windows') | ||
shell: bash -l {0} | ||
env: | ||
MSVC_PREFIX: 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC' | ||
run: | | ||
echo "Available MSVC installations:" | ||
ls "$MSVC_PREFIX" | ||
MSVC_BIN=$(ls "$MSVC_PREFIX" | tail -n 1)\\bin\\HostX64\\x64 | ||
CC="$MSVC_PREFIX\\$MSVC_BIN\\cl.exe" | ||
echo "CC: $CC" | ||
echo "CC=$CC" >> $GITHUB_ENV | ||
CC_LD="$MSVC_PREFIX\\$MSVC_BIN\\link.exe" | ||
echo "CC_LD: $CC_LD" | ||
echo "CC_LD=$CC_LD" >> $GITHUB_ENV | ||
- name: Update pip and install dependencies | ||
shell: bash -l {0} | ||
run: | | ||
python -m pip install --upgrade pip | ||
python -m pip install -r tests_and_analysis/ci_requirements.txt | ||
- name: Run tests | ||
shell: bash -l {0} | ||
env: | ||
EUPHONIC_VERSION: ${{ github.event.inputs.version }} | ||
run: python -m tox -c build_utils/pypi_release_tox.ini | ||
- name: Upload test results | ||
if: always() | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: PyPI unit test results ${{ matrix.os }} | ||
path: tests_and_analysis/test/reports/junit_report*.xml | ||
|
||
publish-pypi-test-results: | ||
needs: test | ||
runs-on: ubuntu-latest | ||
if: success() || failure() | ||
steps: | ||
- name: Download Artifacts | ||
uses: actions/download-artifact@v4 | ||
with: | ||
path: artifacts | ||
- name: Publish PyPI test results | ||
uses: EnricoMi/publish-unit-test-result-action@v2 | ||
with: | ||
junit_files: artifacts/PyPI**/junit_report*.xml | ||
check_name: PyPI test results |
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 |
---|---|---|
@@ -0,0 +1,12 @@ | ||
channels: | ||
- conda-forge | ||
dependencies: | ||
- pytest=7.* | ||
- coverage | ||
- pytest-mock | ||
- pytest-lazy-fixture | ||
- pytest-xvfb | ||
- python-slugify | ||
- matplotlib-base | ||
- pyyaml | ||
- h5py |
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