diff options
author | Tom Scogland <tom.scogland@gmail.com> | 2022-09-07 11:12:57 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-07 20:12:57 +0200 |
commit | 762ba27036e717aeceeb1b43f3090f0e9a049869 (patch) | |
tree | c2b244d849aa12d1256462bc5936963362004fe4 /.github/workflows/ci.yaml | |
parent | 8e5ccddc139b32a4a23f63c9dd631dabf3263cad (diff) | |
download | spack-762ba27036e717aeceeb1b43f3090f0e9a049869.tar.gz spack-762ba27036e717aeceeb1b43f3090f0e9a049869.tar.bz2 spack-762ba27036e717aeceeb1b43f3090f0e9a049869.tar.xz spack-762ba27036e717aeceeb1b43f3090f0e9a049869.zip |
Make GHA tests parallel by using xdist (#32361)
* Add two no-op jobs named "all-prechecks" and "all"
These are a suggestion from @tgamblin, they are stable named markers we
can use from gitlab and possibly for required checks to make CI more
resilient to refactors changing the names of specific checks.
* Enable parallel testing using xdist for unit testing in CI
* Normalize tmp paths to deal with macos
* add -u flag compatibility to spack python
As of now, it is accepted and ignored. The usage with xdist, where it
is invoked specifically by `python -u spack python` which is then passed
`-u` by xdist is the entire reason for doing this. It should never be
used without explicitly passing -u to the executing python interpreter.
* use spack python in xdist to support python 2
When running on python2, spack has many import cycles unless started
through main. To allow that, this uses `spack python` as the
interpreter, leveraging the `-u` support so xdist doesn't error out when
it unconditionally requests unbuffered binary IO.
* Use shutil.move to account for tmpdir being in a separate filesystem sometimes
Diffstat (limited to '.github/workflows/ci.yaml')
-rw-r--r-- | .github/workflows/ci.yaml | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 62f2be080f..f4943789d6 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -11,7 +11,7 @@ on: - releases/** concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_number }} + group: ci-${{github.ref}}-${{github.event.pull_request.number || github.run_number}} cancel-in-progress: true jobs: @@ -20,6 +20,18 @@ jobs: uses: ./.github/workflows/valid-style.yml with: with_coverage: ${{ needs.changes.outputs.with_coverage }} + audit-ancient-python: + uses: ./.github/workflows/audit.yaml + needs: [ changes ] + with: + with_coverage: ${{ needs.changes.outputs.with_coverage }} + python_version: 2.7 + all-prechecks: + needs: [ prechecks ] + runs-on: ubuntu-latest + steps: + - name: Success + run: "true" # Check which files have been updated by the PR changes: runs-on: ubuntu-latest @@ -53,6 +65,7 @@ jobs: - 'share/spack/**' - '.github/workflows/bootstrap.yml' core: + - '!lib/spack/docs/**' - './!(var/**)/**' packages: - 'var/**' @@ -79,7 +92,7 @@ jobs: needs: [ prechecks, changes ] uses: ./.github/workflows/bootstrap.yml unit-tests: - if: ${{ github.repository == 'spack/spack' }} + if: ${{ github.repository == 'spack/spack' && needs.changes.outputs.core == 'true' }} needs: [ prechecks, changes ] uses: ./.github/workflows/unit_tests.yaml with: @@ -87,7 +100,13 @@ jobs: packages: ${{ needs.changes.outputs.packages }} with_coverage: ${{ needs.changes.outputs.with_coverage }} windows: - if: ${{ github.repository == 'spack/spack' }} + if: ${{ github.repository == 'spack/spack' && needs.changes.outputs.core == 'true' }} needs: [ prechecks ] uses: ./.github/workflows/windows_python.yml + all: + needs: [ windows, unit-tests, bootstrap, audit-ancient-python ] + runs-on: ubuntu-latest + steps: + - name: Success + run: "true" |