From 1d78283946498f48e592e23c27ab7950c4683c1f Mon Sep 17 00:00:00 2001 From: Harmen Stoppels Date: Mon, 12 May 2025 16:44:24 +0200 Subject: [PATCH] troubleshoot ci --- .github/workflows/audit.yaml | 73 --------- .github/workflows/bootstrap.yml | 194 ----------------------- .github/workflows/build-containers.yml | 140 ---------------- .github/workflows/ci.yaml | 130 --------------- .github/workflows/coverage.yml | 36 ----- .github/workflows/import-check.yaml | 49 ------ .github/workflows/nightly-win-builds.yml | 31 ---- .github/workflows/prechecks.yml | 108 ------------- .github/workflows/sync-packages.yaml | 34 ---- .github/workflows/unit_tests.yaml | 152 +----------------- 10 files changed, 7 insertions(+), 940 deletions(-) delete mode 100644 .github/workflows/audit.yaml delete mode 100644 .github/workflows/bootstrap.yml delete mode 100644 .github/workflows/build-containers.yml delete mode 100644 .github/workflows/ci.yaml delete mode 100644 .github/workflows/coverage.yml delete mode 100644 .github/workflows/import-check.yaml delete mode 100644 .github/workflows/nightly-win-builds.yml delete mode 100644 .github/workflows/prechecks.yml delete mode 100644 .github/workflows/sync-packages.yaml diff --git a/.github/workflows/audit.yaml b/.github/workflows/audit.yaml deleted file mode 100644 index 2f88907a8b7..00000000000 --- a/.github/workflows/audit.yaml +++ /dev/null @@ -1,73 +0,0 @@ -name: audit - -on: - workflow_call: - inputs: - with_coverage: - required: true - type: string - python_version: - required: true - type: string - -concurrency: - group: audit-${{inputs.python_version}}-${{github.ref}}-${{github.event.pull_request.number || github.run_number}} - cancel-in-progress: true - -jobs: - # Run audits on all the packages in the built-in repository - package-audits: - runs-on: ${{ matrix.system.os }} - strategy: - matrix: - system: - - { os: windows-latest, shell: 'powershell Invoke-Expression -Command "./share/spack/qa/windows_test_setup.ps1"; {0}' } - - { os: ubuntu-latest, shell: bash } - - { os: macos-latest, shell: bash } - defaults: - run: - shell: ${{ matrix.system.shell }} - steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b - with: - python-version: ${{inputs.python_version}} - - name: Install Python packages - run: | - pip install --upgrade pip setuptools pytest coverage[toml] - - name: Setup for Windows run - if: runner.os == 'Windows' - run: | - python -m pip install --upgrade pywin32 - - name: Package audits (with coverage) - env: - COVERAGE_FILE: coverage/.coverage-audits-${{ matrix.system.os }} - if: ${{ inputs.with_coverage == 'true' && runner.os != 'Windows' }} - run: | - . share/spack/setup-env.sh - coverage run $(which spack) audit packages - coverage run $(which spack) audit configs - coverage run $(which spack) -d audit externals - coverage combine - - name: Package audits (without coverage) - if: ${{ inputs.with_coverage == 'false' && runner.os != 'Windows' }} - run: | - . share/spack/setup-env.sh - spack -d audit packages - spack -d audit configs - spack -d audit externals - - name: Package audits (without coverage) - if: ${{ runner.os == 'Windows' }} - run: | - spack -d audit packages - ./share/spack/qa/validate_last_exit.ps1 - spack -d audit configs - ./share/spack/qa/validate_last_exit.ps1 - spack -d audit externals - ./share/spack/qa/validate_last_exit.ps1 - - uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b - if: ${{ inputs.with_coverage == 'true' && runner.os != 'Windows' }} - with: - name: coverage-audits-${{ matrix.system.os }} - path: coverage - include-hidden-files: true diff --git a/.github/workflows/bootstrap.yml b/.github/workflows/bootstrap.yml deleted file mode 100644 index 7a2759033f3..00000000000 --- a/.github/workflows/bootstrap.yml +++ /dev/null @@ -1,194 +0,0 @@ -name: Bootstrapping - -on: - # This Workflow can be triggered manually - workflow_dispatch: - workflow_call: - schedule: - # nightly at 2:16 AM - - cron: '16 2 * * *' - -concurrency: - group: bootstrap-${{github.ref}}-${{github.event.pull_request.number || github.run_number}} - cancel-in-progress: true - -jobs: - distros-clingo-sources: - runs-on: ubuntu-latest - container: ${{ matrix.image }} - strategy: - matrix: - image: ["fedora:latest", "opensuse/leap:latest"] - steps: - - name: Setup Fedora - if: ${{ matrix.image == 'fedora:latest' }} - run: | - dnf install -y \ - bzip2 curl file gcc-c++ gcc gcc-gfortran git gzip \ - make patch unzip which xz python3 python3-devel tree \ - cmake bison bison-devel libstdc++-static gawk - - name: Setup OpenSUSE - if: ${{ matrix.image == 'opensuse/leap:latest' }} - run: | - # Harden CI by applying the workaround described here: https://www.suse.com/support/kb/doc/?id=000019505 - zypper update -y || zypper update -y - zypper install -y \ - bzip2 curl file gcc-c++ gcc gcc-fortran tar git gpg2 gzip \ - make patch unzip which xz python3 python3-devel tree \ - cmake bison - - name: Checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - with: - fetch-depth: 0 - - name: Bootstrap clingo - run: | - source share/spack/setup-env.sh - spack bootstrap disable github-actions-v0.6 - spack bootstrap disable github-actions-v0.5 - spack external find cmake bison - spack -d solve zlib - tree ~/.spack/bootstrap/store/ - - clingo-sources: - runs-on: ${{ matrix.runner }} - strategy: - matrix: - runner: ['macos-13', 'macos-14', "ubuntu-latest"] - steps: - - name: Setup macOS - if: ${{ matrix.runner != 'ubuntu-latest' }} - run: | - brew install cmake bison tree - - name: Checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - with: - fetch-depth: 0 - - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b - with: - python-version: "3.12" - - name: Bootstrap clingo - run: | - source share/spack/setup-env.sh - spack bootstrap disable github-actions-v0.6 - spack bootstrap disable github-actions-v0.5 - spack external find --not-buildable cmake bison - spack -d solve zlib - tree $HOME/.spack/bootstrap/store/ - - gnupg-sources: - runs-on: ${{ matrix.runner }} - strategy: - matrix: - runner: [ 'macos-13', 'macos-14', "ubuntu-latest" ] - steps: - - name: Setup macOS - if: ${{ matrix.runner != 'ubuntu-latest' }} - run: brew install tree gawk - - name: Remove system executables - run: | - while [ -n "$(command -v gpg gpg2 patchelf)" ]; do - sudo rm $(command -v gpg gpg2 patchelf) - done - - name: Checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - with: - fetch-depth: 0 - - name: Bootstrap GnuPG - run: | - source share/spack/setup-env.sh - spack solve zlib - spack bootstrap disable github-actions-v0.6 - spack bootstrap disable github-actions-v0.5 - spack -d gpg list - tree ~/.spack/bootstrap/store/ - - from-binaries: - runs-on: ${{ matrix.runner }} - strategy: - matrix: - runner: ['macos-13', 'macos-14', "ubuntu-latest"] - steps: - - name: Setup macOS - if: ${{ matrix.runner != 'ubuntu-latest' }} - run: brew install tree - - name: Remove system executables - run: | - while [ -n "$(command -v gpg gpg2 patchelf)" ]; do - sudo rm $(command -v gpg gpg2 patchelf) - done - - name: Checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - with: - fetch-depth: 0 - - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b - with: - python-version: | - 3.8 - 3.9 - 3.10 - 3.11 - 3.12 - 3.13 - - name: Set bootstrap sources - run: | - source share/spack/setup-env.sh - spack bootstrap disable github-actions-v0.5 - spack bootstrap disable spack-install - - name: Bootstrap clingo - run: | - set -e - for ver in '3.8' '3.9' '3.10' '3.11' '3.12' '3.13'; do - not_found=1 - ver_dir="$(find $RUNNER_TOOL_CACHE/Python -wholename "*/${ver}.*/*/bin" | grep . || true)" - if [[ -d "$ver_dir" ]] ; then - echo "Testing $ver_dir" - if $ver_dir/python --version ; then - export PYTHON="$ver_dir/python" - not_found=0 - old_path="$PATH" - export PATH="$ver_dir:$PATH" - ./bin/spack-tmpconfig -b ./.github/workflows/bin/bootstrap-test.sh - export PATH="$old_path" - fi - fi - if (($not_found)) ; then - echo Required python version $ver not found in runner! - exit 1 - fi - done - - name: Bootstrap GnuPG - run: | - source share/spack/setup-env.sh - spack -d gpg list - tree $HOME/.spack/bootstrap/store/ - - - windows: - runs-on: "windows-latest" - steps: - - name: Checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - with: - fetch-depth: 0 - - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b - with: - python-version: "3.12" - - name: Setup Windows - run: | - Remove-Item -Path (Get-Command gpg).Path - Remove-Item -Path (Get-Command file).Path - - name: Bootstrap clingo - run: | - ./share/spack/setup-env.ps1 - spack bootstrap disable github-actions-v0.6 - spack bootstrap disable github-actions-v0.5 - spack external find --not-buildable cmake bison - spack -d solve zlib - ./share/spack/qa/validate_last_exit.ps1 - tree $env:userprofile/.spack/bootstrap/store/ - - name: Bootstrap GnuPG - run: | - ./share/spack/setup-env.ps1 - spack -d gpg list - ./share/spack/qa/validate_last_exit.ps1 - tree $env:userprofile/.spack/bootstrap/store/ diff --git a/.github/workflows/build-containers.yml b/.github/workflows/build-containers.yml deleted file mode 100644 index a9728408e41..00000000000 --- a/.github/workflows/build-containers.yml +++ /dev/null @@ -1,140 +0,0 @@ -name: Containers - -on: - # This Workflow can be triggered manually - workflow_dispatch: - # Build new Spack develop containers nightly. - schedule: - - cron: '34 0 * * *' - # Run on pull requests that modify this file - pull_request: - branches: - - develop - paths: - - '.github/workflows/build-containers.yml' - - 'share/spack/docker/*' - - 'share/spack/templates/container/*' - - 'lib/spack/spack/container/*' - # Let's also build & tag Spack containers on releases. - release: - types: [published] - -concurrency: - group: build_containers-${{github.ref}}-${{github.event.pull_request.number || github.run_number}} - cancel-in-progress: true - -jobs: - deploy-images: - runs-on: ubuntu-latest - permissions: - packages: write - strategy: - # Even if one container fails to build we still want the others - # to continue their builds. - fail-fast: false - # A matrix of Dockerfile paths, associated tags, and which architectures - # they support. - matrix: - # Meaning of the various items in the matrix list - # 0: Container name (e.g. ubuntu-bionic) - # 1: Platforms to build for - # 2: Base image (e.g. ubuntu:22.04) - dockerfile: [[amazon-linux, 'linux/amd64,linux/arm64', 'amazonlinux:2'], - [centos-stream9, 'linux/amd64,linux/arm64', 'centos:stream9'], - [leap15, 'linux/amd64,linux/arm64', 'opensuse/leap:15'], - [ubuntu-focal, 'linux/amd64,linux/arm64', 'ubuntu:20.04'], - [ubuntu-jammy, 'linux/amd64,linux/arm64', 'ubuntu:22.04'], - [ubuntu-noble, 'linux/amd64,linux/arm64', 'ubuntu:24.04'], - [almalinux8, 'linux/amd64,linux/arm64', 'almalinux:8'], - [almalinux9, 'linux/amd64,linux/arm64', 'almalinux:9'], - [rockylinux8, 'linux/amd64,linux/arm64', 'rockylinux:8'], - [rockylinux9, 'linux/amd64,linux/arm64', 'rockylinux:9'], - [fedora39, 'linux/amd64,linux/arm64', 'fedora:39'], - [fedora40, 'linux/amd64,linux/arm64', 'fedora:40']] - name: Build ${{ matrix.dockerfile[0] }} - if: github.repository == 'spack/spack' - steps: - - name: Checkout - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - - - name: Determine latest release tag - id: latest - run: | - git fetch --quiet --tags - echo "tag=$(git tag --list --sort=-v:refname | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+$' | head -n 1)" | tee -a $GITHUB_OUTPUT - - - uses: docker/metadata-action@369eb591f429131d6889c46b94e711f089e6ca96 - id: docker_meta - with: - images: | - ghcr.io/${{ github.repository_owner }}/${{ matrix.dockerfile[0] }} - ${{ github.repository_owner }}/${{ matrix.dockerfile[0] }} - tags: | - type=schedule,pattern=nightly - type=schedule,pattern=develop - type=semver,pattern={{version}} - type=semver,pattern={{major}}.{{minor}} - type=semver,pattern={{major}} - type=ref,event=branch - type=ref,event=pr - type=raw,value=latest,enable=${{ github.ref == format('refs/tags/{0}', steps.latest.outputs.tag) }} - - - name: Generate the Dockerfile - env: - SPACK_YAML_OS: "${{ matrix.dockerfile[2] }}" - run: | - .github/workflows/bin/generate_spack_yaml_containerize.sh - . share/spack/setup-env.sh - mkdir -p dockerfiles/${{ matrix.dockerfile[0] }} - spack containerize --last-stage=bootstrap | tee dockerfiles/${{ matrix.dockerfile[0] }}/Dockerfile - printf "Preparing to build ${{ env.container }} from dockerfiles/${{ matrix.dockerfile[0] }}/Dockerfile" - if [ ! -f "dockerfiles/${{ matrix.dockerfile[0] }}/Dockerfile" ]; then - printf "dockerfiles/${{ matrix.dockerfile[0] }}/Dockerfile does not exist" - exit 1; - fi - - - name: Upload Dockerfile - uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b - with: - name: dockerfiles_${{ matrix.dockerfile[0] }} - path: dockerfiles - - - name: Set up QEMU - uses: docker/setup-qemu-action@49b3bc8e6bdd4a60e6116a5414239cba5943d3cf - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@6524bf65af31da8d45b59e8c27de4bd072b392f5 - - - name: Log in to GitHub Container Registry - uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Log in to DockerHub - if: github.event_name != 'pull_request' - uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Build & Deploy ${{ matrix.dockerfile[0] }} - uses: docker/build-push-action@48aba3b46d1b1fec4febb7c5d0c644b249a11355 - with: - context: dockerfiles/${{ matrix.dockerfile[0] }} - platforms: ${{ matrix.dockerfile[1] }} - push: ${{ github.event_name != 'pull_request' }} - tags: ${{ steps.docker_meta.outputs.tags }} - labels: ${{ steps.docker_meta.outputs.labels }} - - merge-dockerfiles: - runs-on: ubuntu-latest - needs: deploy-images - steps: - - name: Merge Artifacts - uses: actions/upload-artifact/merge@6f51ac03b9356f520e9adb1b1b7802705f340c2b - with: - name: dockerfiles - pattern: dockerfiles_* - delete-merged: true diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml deleted file mode 100644 index 31cb24dcb8a..00000000000 --- a/.github/workflows/ci.yaml +++ /dev/null @@ -1,130 +0,0 @@ -name: ci - -on: - push: - branches: - - develop - - releases/** - pull_request: - branches: - - develop - - releases/** - merge_group: - -concurrency: - group: ci-${{github.ref}}-${{github.event.pull_request.number || github.run_number}} - cancel-in-progress: true - -jobs: - # Check which files have been updated by the PR - changes: - runs-on: ubuntu-latest - # Set job outputs to values from filter step - outputs: - bootstrap: ${{ steps.filter.outputs.bootstrap }} - core: ${{ steps.filter.outputs.core }} - packages: ${{ steps.filter.outputs.packages }} - steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - if: ${{ github.event_name == 'push' || github.event_name == 'merge_group' }} - with: - fetch-depth: 0 - # For pull requests it's not necessary to checkout the code - - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 - id: filter - with: - # For merge group events, compare against the target branch (main) - base: ${{ github.event_name == 'merge_group' && github.event.merge_group.base_ref || '' }} - # For merge group events, use the merge group head ref - ref: ${{ github.event_name == 'merge_group' && github.event.merge_group.head_sha || github.ref }} - # See https://github.com/dorny/paths-filter/issues/56 for the syntax used below - # Don't run if we only modified packages in the - # built-in repository or documentation - filters: | - bootstrap: - - 'var/spack/repos/spack_repo/builtin/packages/clingo-bootstrap/**' - - 'var/spack/repos/spack_repo/builtin/packages/clingo/**' - - 'var/spack/repos/spack_repo/builtin/packages/python/**' - - 'var/spack/repos/spack_repo/builtin/packages/re2c/**' - - 'var/spack/repos/spack_repo/builtin/packages/gnupg/**' - - 'var/spack/repos/spack_repo/builtin/packages/libassuan/**' - - 'var/spack/repos/spack_repo/builtin/packages/libgcrypt/**' - - 'var/spack/repos/spack_repo/builtin/packages/libgpg-error/**' - - 'var/spack/repos/spack_repo/builtin/packages/libksba/**' - - 'var/spack/repos/spack_repo/builtin/packages/npth/**' - - 'var/spack/repos/spack_repo/builtin/packages/pinentry/**' - - 'lib/spack/**' - - 'share/spack/**' - - '.github/workflows/bootstrap.yml' - - '.github/workflows/ci.yaml' - core: - - './!(var/**)/**' - packages: - - 'var/**' - # Some links for easier reference: - # - # "github" context: https://docs.github.com/en/actions/reference/context-and-expression-syntax-for-github-actions#github-context - # job outputs: https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idoutputs - # setting environment variables from earlier steps: https://docs.github.com/en/actions/reference/workflow-commands-for-github-actions#setting-an-environment-variable - # - bootstrap: - if: ${{ github.repository == 'spack/spack' && needs.changes.outputs.bootstrap == 'true' }} - needs: [ prechecks, changes ] - uses: ./.github/workflows/bootstrap.yml - secrets: inherit - - unit-tests: - if: ${{ github.repository == 'spack/spack' && needs.changes.outputs.core == 'true' }} - needs: [ prechecks, changes ] - uses: ./.github/workflows/unit_tests.yaml - secrets: inherit - - prechecks: - needs: [ changes ] - uses: ./.github/workflows/prechecks.yml - secrets: inherit - with: - with_coverage: ${{ needs.changes.outputs.core }} - with_packages: ${{ needs.changes.outputs.packages }} - - import-check: - needs: [ changes ] - uses: ./.github/workflows/import-check.yaml - - all-prechecks: - needs: [ prechecks ] - if: ${{ always() }} - runs-on: ubuntu-latest - steps: - - name: Success - run: | - if [ "${{ needs.prechecks.result }}" == "failure" ] || [ "${{ needs.prechecks.result }}" == "canceled" ]; then - echo "Unit tests failed." - exit 1 - else - exit 0 - fi - - coverage: - needs: [ unit-tests, prechecks ] - if: ${{ needs.changes.outputs.core }} - uses: ./.github/workflows/coverage.yml - secrets: inherit - - all: - needs: [ unit-tests, coverage, bootstrap ] - if: ${{ always() }} - runs-on: ubuntu-latest - # See https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/accessing-contextual-information-about-workflow-runs#needs-context - steps: - - name: Status summary - run: | - if [ "${{ needs.unit-tests.result }}" == "failure" ] || [ "${{ needs.unit-tests.result }}" == "canceled" ]; then - echo "Unit tests failed." - exit 1 - elif [ "${{ needs.bootstrap.result }}" == "failure" ] || [ "${{ needs.bootstrap.result }}" == "canceled" ]; then - echo "Bootstrap tests failed." - exit 1 - else - exit 0 - fi diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml deleted file mode 100644 index 03b32094ea1..00000000000 --- a/.github/workflows/coverage.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: coverage - -on: - workflow_call: - -jobs: - # Upload coverage reports to codecov once as a single bundle - upload: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b - with: - python-version: '3.11' - cache: 'pip' - - - name: Install python dependencies - run: pip install -r .github/workflows/requirements/coverage/requirements.txt - - - name: Download coverage artifact files - uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 - with: - pattern: coverage-* - path: coverage - merge-multiple: true - - - run: ls -la coverage - - run: coverage combine -a coverage/.coverage* - - run: coverage xml - - - name: "Upload coverage report to CodeCov" - uses: codecov/codecov-action@1e68e06f1dbfde0e4cefc87efeba9e4643565303 - with: - verbose: true - fail_ci_if_error: false - token: ${{ secrets.CODECOV_TOKEN }} diff --git a/.github/workflows/import-check.yaml b/.github/workflows/import-check.yaml deleted file mode 100644 index 16c73b465af..00000000000 --- a/.github/workflows/import-check.yaml +++ /dev/null @@ -1,49 +0,0 @@ -name: import-check - -on: - workflow_call: - -jobs: - # Check we don't make the situation with circular imports worse - import-check: - runs-on: ubuntu-latest - steps: - - uses: julia-actions/setup-julia@v2 - with: - version: '1.10' - - uses: julia-actions/cache@v2 - - # PR: use the base of the PR as the old commit - - name: Checkout PR base commit - if: github.event_name == 'pull_request' - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - with: - ref: ${{ github.event.pull_request.base.sha }} - path: old - # not a PR: use the previous commit as the old commit - - name: Checkout previous commit - if: github.event_name != 'pull_request' - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - with: - fetch-depth: 2 - path: old - - name: Checkout previous commit - if: github.event_name != 'pull_request' - run: git -C old reset --hard HEAD^ - - - name: Checkout new commit - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - with: - path: new - - name: Install circular import checker - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - with: - repository: haampie/circular-import-fighter - ref: 4cdb0bf15f04ab6b49041d5ef1bfd9644cce7f33 - path: circular-import-fighter - - name: Install dependencies - working-directory: circular-import-fighter - run: make -j dependencies - - name: Circular import check - working-directory: circular-import-fighter - run: make -j compare "SPACK_ROOT=../old ../new" diff --git a/.github/workflows/nightly-win-builds.yml b/.github/workflows/nightly-win-builds.yml deleted file mode 100644 index 11f19c9244c..00000000000 --- a/.github/workflows/nightly-win-builds.yml +++ /dev/null @@ -1,31 +0,0 @@ -name: Windows Paraview Nightly - -on: - schedule: - - cron: '0 2 * * *' # Run at 2 am - -defaults: - run: - shell: - powershell Invoke-Expression -Command "./share/spack/qa/windows_test_setup.ps1"; {0} - - -jobs: - build-paraview-deps: - runs-on: windows-latest - steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - with: - fetch-depth: 0 - - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b - with: - python-version: 3.9 - - name: Install Python packages - run: | - python -m pip install --upgrade pip six pywin32 setuptools coverage - - name: Build Test - run: | - spack compiler find - spack external find cmake ninja win-sdk win-wdk wgl msmpi - spack -d install -y --cdash-upload-url https://cdash.spack.io/submit.php?project=Spack+on+Windows --cdash-track Nightly --only dependencies paraview - exit 0 \ No newline at end of file diff --git a/.github/workflows/prechecks.yml b/.github/workflows/prechecks.yml deleted file mode 100644 index d7aca1b5033..00000000000 --- a/.github/workflows/prechecks.yml +++ /dev/null @@ -1,108 +0,0 @@ -name: prechecks - -on: - workflow_call: - inputs: - with_coverage: - required: true - type: string - with_packages: - required: true - type: string - -concurrency: - group: style-${{github.ref}}-${{github.event.pull_request.number || github.run_number}} - cancel-in-progress: true - - -jobs: - # Validate that the code can be run on all the Python versions supported by Spack - validate: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b - with: - python-version: '3.13' - cache: 'pip' - cache-dependency-path: '.github/workflows/requirements/style/requirements.txt' - - name: Install Python Packages - run: | - pip install -r .github/workflows/requirements/style/requirements.txt - - name: vermin (Spack's Core) - run: | - vermin --backport importlib --backport argparse --violations --backport typing -t=3.6- -vvv lib/spack/spack/ lib/spack/llnl/ bin/ - - name: vermin (Repositories) - run: | - vermin --backport importlib --backport argparse --violations --backport typing -t=3.6- -vvv var/spack/repos var/spack/test_repos - - # Run style checks on the files that have been changed - style: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - with: - fetch-depth: 2 - - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b - with: - python-version: '3.13' - cache: 'pip' - cache-dependency-path: '.github/workflows/requirements/style/requirements.txt' - - name: Install Python packages - run: | - pip install -r .github/workflows/requirements/style/requirements.txt - - name: Run style tests - run: | - bin/spack style --base HEAD^1 - bin/spack license verify - pylint -j $(nproc) --disable=all --enable=unspecified-encoding --ignore-paths=lib/spack/external lib - - audit: - uses: ./.github/workflows/audit.yaml - secrets: inherit - with: - with_coverage: ${{ inputs.with_coverage }} - python_version: '3.13' - - verify-checksums: - # do not run if the commit message or PR description contains [skip-verify-checksums] - if: >- - ${{ inputs.with_packages == 'true' && - !contains(github.event.pull_request.body, '[skip-verify-checksums]') && - !contains(github.event.head_commit.message, '[skip-verify-checksums]') }} - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 - with: - fetch-depth: 2 - - name: Verify Added Checksums - run: | - bin/spack ci verify-versions HEAD^1 HEAD - - # Check that spack can bootstrap the development environment on Python 3.6 - RHEL8 - bootstrap-dev-rhel8: - runs-on: ubuntu-latest - container: registry.access.redhat.com/ubi8/ubi - steps: - - name: Install dependencies - run: | - dnf install -y \ - bzip2 curl file gcc-c++ gcc gcc-gfortran git gnupg2 gzip \ - make patch tcl unzip which xz - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - - name: Setup repo and non-root user - run: | - git --version - git config --global --add safe.directory '*' - git fetch --unshallow - . .github/workflows/bin/setup_git.sh - useradd spack-test - chown -R spack-test . - - name: Bootstrap Spack development environment - shell: runuser -u spack-test -- bash {0} - run: | - source share/spack/setup-env.sh - spack debug report - spack -d bootstrap now --dev - spack -d style -t black - spack unit-test -V diff --git a/.github/workflows/sync-packages.yaml b/.github/workflows/sync-packages.yaml deleted file mode 100644 index 3909c7da536..00000000000 --- a/.github/workflows/sync-packages.yaml +++ /dev/null @@ -1,34 +0,0 @@ -name: sync with spack/spack-packages - -on: - push: - branches: - - develop - -jobs: - sync: - if: github.repository == 'spack/spack' - runs-on: ubuntu-latest - steps: - - name: Checkout spack/spack - run: git clone https://github.com/spack/spack.git - - name: Checkout spack/spack-packages - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - with: - ssh-key: ${{ secrets.SYNC_PACKAGES_KEY }} - path: spack-packages - repository: spack/spack-packages - - name: Install git-filter-repo - run: | - curl -LfsO https://raw.githubusercontent.com/newren/git-filter-repo/refs/tags/v2.47.0/git-filter-repo - echo "67447413e273fc76809289111748870b6f6072f08b17efe94863a92d810b7d94 git-filter-repo" | sha256sum -c - - chmod +x git-filter-repo - sudo mv git-filter-repo /usr/local/bin/ - - name: Sync spack/spack-packages with spack/spack - run: | - cd spack-packages - git-filter-repo --quiet --source ../spack --subdirectory-filter var/spack/repos --refs develop - - name: Push - run: | - cd spack-packages - git push git@github.com:spack/spack-packages.git develop:develop --force diff --git a/.github/workflows/unit_tests.yaml b/.github/workflows/unit_tests.yaml index 7b6d45d738f..7da6d9c993f 100644 --- a/.github/workflows/unit_tests.yaml +++ b/.github/workflows/unit_tests.yaml @@ -1,12 +1,7 @@ name: unit tests on: - workflow_dispatch: - workflow_call: - -concurrency: - group: unit_tests-${{github.ref}}-${{github.event.pull_request.number || github.run_number}} - cancel-in-progress: true + pull_request: jobs: # Run unit tests with different configurations on linux @@ -88,146 +83,10 @@ jobs: name: coverage-${{ matrix.os }}-python${{ matrix.python-version }} path: coverage include-hidden-files: true - # Test shell integration - shell: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - with: - fetch-depth: 0 - - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b - with: - python-version: '3.11' - - name: Install System packages - run: | - sudo apt-get -y update - # Needed for shell tests - sudo apt-get install -y coreutils csh zsh tcsh fish dash bash subversion - # On ubuntu 24.04, kcov was removed. It may come back in some future Ubuntu - - name: Set up Homebrew - id: set-up-homebrew - uses: Homebrew/actions/setup-homebrew@40e9946c182a64b3db1bf51be0dcb915f7802aa9 - - name: Install kcov with brew - run: "brew install kcov" - - name: Install Python packages - run: | - pip install --upgrade pip setuptools pytest coverage[toml] pytest-xdist - - name: Setup git configuration - run: | - # Need this for the git tests to succeed. - git --version - . .github/workflows/bin/setup_git.sh - - name: Run shell tests - env: - COVERAGE: true - run: | - share/spack/qa/run-shell-tests - - uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b - with: - name: coverage-shell - path: coverage - include-hidden-files: true + - name: Setup tmate session + if: ${{ failure() }} + uses: mxschmitt/action-tmate@v3 - # Test RHEL8 UBI with platform Python. This job is run - # only on PRs modifying core Spack - rhel8-platform-python: - runs-on: ubuntu-latest - container: registry.access.redhat.com/ubi8/ubi - steps: - - name: Install dependencies - run: | - dnf install -y \ - bzip2 curl gcc-c++ gcc gcc-gfortran git gnupg2 gzip \ - make patch tcl unzip which xz - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - - name: Setup repo and non-root user - run: | - git --version - git config --global --add safe.directory '*' - git fetch --unshallow - . .github/workflows/bin/setup_git.sh - useradd spack-test - chown -R spack-test . - - name: Run unit tests - shell: runuser -u spack-test -- bash {0} - run: | - source share/spack/setup-env.sh - spack -d bootstrap now --dev - spack unit-test -k 'not cvs and not svn and not hg' -x --verbose - # Test for the clingo based solver (using clingo-cffi) - clingo-cffi: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - with: - fetch-depth: 0 - - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b - with: - python-version: '3.13' - - name: Install System packages - run: | - sudo apt-get -y update - sudo apt-get -y install coreutils gfortran graphviz gnupg2 - - name: Install Python packages - run: | - pip install --upgrade pip setuptools pytest coverage[toml] pytest-cov clingo - pip install --upgrade flake8 "isort>=4.3.5" "mypy>=0.900" "click" "black" - - name: Run unit tests (full suite with coverage) - env: - COVERAGE: true - COVERAGE_FILE: coverage/.coverage-clingo-cffi - run: | - . share/spack/setup-env.sh - spack bootstrap disable spack-install - spack bootstrap disable github-actions-v0.5 - spack bootstrap disable github-actions-v0.6 - spack bootstrap status - spack solve zlib - spack unit-test --verbose --cov --cov-config=pyproject.toml --cov-report=xml:coverage.xml lib/spack/spack/test/concretization/core.py - - uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b - with: - name: coverage-clingo-cffi - path: coverage - include-hidden-files: true - # Run unit tests on MacOS - macos: - runs-on: ${{ matrix.os }} - strategy: - matrix: - os: [macos-13, macos-14] - python-version: ["3.11"] - steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - with: - fetch-depth: 0 - - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b - with: - python-version: ${{ matrix.python-version }} - - name: Install Python packages - run: | - pip install --upgrade pip setuptools - pip install --upgrade pytest coverage[toml] pytest-xdist pytest-cov - - name: Setup Homebrew packages - run: | - brew install dash fish gcc gnupg kcov - - name: Run unit tests - env: - SPACK_TEST_PARALLEL: 4 - COVERAGE_FILE: coverage/.coverage-${{ matrix.os }}-python${{ matrix.python-version }} - run: | - git --version - . .github/workflows/bin/setup_git.sh - . share/spack/setup-env.sh - $(which spack) bootstrap disable spack-install - $(which spack) solve zlib - common_args=(--dist loadfile --tx '4*popen//python=./bin/spack-tmpconfig python -u ./bin/spack python' -x) - $(which spack) unit-test --verbose --cov --cov-config=pyproject.toml --cov-report=xml:coverage.xml "${common_args[@]}" - - uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b - with: - name: coverage-${{ matrix.os }}-python${{ matrix.python-version }} - path: coverage - include-hidden-files: true - # Run unit tests on Windows windows: defaults: run: @@ -258,3 +117,6 @@ jobs: name: coverage-windows path: coverage include-hidden-files: true + - name: Setup tmate session + if: ${{ failure() }} + uses: mxschmitt/action-tmate@v3 \ No newline at end of file