69f7a8f4d1
This patchset refactors our GitHub actions into a single top-level ci workflow that invokes a series of reusable actions. The main goal of this is to be able to easily control which tests run and in what order based on the success or failure of top-level prechecks. Our previous workflows ran in three sets: * nix tests: style and verification first, then linux and macos tests if successful * windows tests: style and verification first, then linux and macos tests if successful * bootstrap tests As a result, the bootstrap tests ran even if the style failed, and style and verification had to run on two different platforms despite running identical checks. I'm relatively sure that's because of the limitation on dependencies between steps in the jobs. Reusable workflows allow us to run the style, verification and now audit checks once, then depending on the results, and the files changed, run the appropriate nix, windows and bootstrap tests. While it saves only a few minutes by itself, this makes it easier to refactor checks to subset tests without having to replicate tests or other workflow components in the future. Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
145 lines
5 KiB
YAML
145 lines
5 KiB
YAML
name: windows
|
|
|
|
on:
|
|
workflow_call:
|
|
|
|
concurrency:
|
|
group: windows-${{ github.workflow }}-${{ github.event.pull_request.number || github.run_number }}
|
|
cancel-in-progress: true
|
|
|
|
defaults:
|
|
run:
|
|
shell:
|
|
powershell Invoke-Expression -Command ".\share\spack\qa\windows_test_setup.ps1"; {0}
|
|
jobs:
|
|
unit-tests:
|
|
runs-on: windows-latest
|
|
steps:
|
|
- uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b
|
|
with:
|
|
fetch-depth: 0
|
|
- uses: actions/setup-python@b55428b1882923874294fa556849718a1d7f2ca5
|
|
with:
|
|
python-version: 3.9
|
|
- name: Install Python packages
|
|
run: |
|
|
python -m pip install --upgrade pip six pywin32 setuptools codecov coverage
|
|
- name: Create local develop
|
|
run: |
|
|
.\spack\.github\workflows\setup_git.ps1
|
|
- name: Unit Test
|
|
run: |
|
|
echo F|xcopy .\spack\share\spack\qa\configuration\windows_config.yaml $env:USERPROFILE\.spack\windows\config.yaml
|
|
spack unit-test --verbose --ignore=lib/spack/spack/test/cmd
|
|
unit-tests-cmd:
|
|
runs-on: windows-latest
|
|
steps:
|
|
- uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b
|
|
with:
|
|
fetch-depth: 0
|
|
- uses: actions/setup-python@b55428b1882923874294fa556849718a1d7f2ca5
|
|
with:
|
|
python-version: 3.9
|
|
- name: Install Python packages
|
|
run: |
|
|
python -m pip install --upgrade pip six pywin32 setuptools codecov coverage
|
|
- name: Create local develop
|
|
run: |
|
|
.\spack\.github\workflows\setup_git.ps1
|
|
- name: Command Unit Test
|
|
run: |
|
|
echo F|xcopy .\spack\share\spack\qa\configuration\windows_config.yaml $env:USERPROFILE\.spack\windows\config.yaml
|
|
spack unit-test lib/spack/spack/test/cmd --verbose
|
|
build-abseil:
|
|
runs-on: windows-latest
|
|
steps:
|
|
- uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b
|
|
with:
|
|
fetch-depth: 0
|
|
- uses: actions/setup-python@b55428b1882923874294fa556849718a1d7f2ca5
|
|
with:
|
|
python-version: 3.9
|
|
- name: Install Python packages
|
|
run: |
|
|
python -m pip install --upgrade pip six pywin32 setuptools codecov coverage
|
|
- name: Build Test
|
|
run: |
|
|
spack compiler find
|
|
echo F|xcopy .\spack\share\spack\qa\configuration\windows_config.yaml $env:USERPROFILE\.spack\windows\config.yaml
|
|
spack external find cmake
|
|
spack external find ninja
|
|
spack install abseil-cpp
|
|
make-installer:
|
|
runs-on: windows-latest
|
|
steps:
|
|
- name: Disable Windows Symlinks
|
|
run: |
|
|
git config --global core.symlinks false
|
|
shell:
|
|
powershell
|
|
- uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b
|
|
with:
|
|
fetch-depth: 0
|
|
- uses: actions/setup-python@b55428b1882923874294fa556849718a1d7f2ca5
|
|
with:
|
|
python-version: 3.9
|
|
- name: Install Python packages
|
|
run: |
|
|
python -m pip install --upgrade pip six pywin32 setuptools codecov coverage
|
|
- name: Add Light and Candle to Path
|
|
run: |
|
|
$env:WIX >> $GITHUB_PATH
|
|
- name: Run Installer
|
|
run: |
|
|
.\spack\share\spack\qa\setup_spack.ps1
|
|
spack make-installer -s spack -g SILENT pkg
|
|
echo "installer_root=$((pwd).Path)" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
|
|
env:
|
|
ProgressPreference: SilentlyContinue
|
|
- uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8
|
|
with:
|
|
name: Windows Spack Installer Bundle
|
|
path: ${{ env.installer_root }}\pkg\Spack.exe
|
|
- uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8
|
|
with:
|
|
name: Windows Spack Installer
|
|
path: ${{ env.installer_root}}\pkg\Spack.msi
|
|
execute-installer:
|
|
needs: make-installer
|
|
runs-on: windows-latest
|
|
defaults:
|
|
run:
|
|
shell: pwsh
|
|
steps:
|
|
- uses: actions/setup-python@b55428b1882923874294fa556849718a1d7f2ca5
|
|
with:
|
|
python-version: 3.9
|
|
- name: Install Python packages
|
|
run: |
|
|
python -m pip install --upgrade pip six pywin32 setuptools codecov coverage
|
|
- name: Setup installer directory
|
|
run: |
|
|
mkdir -p spack_installer
|
|
echo "spack_installer=$((pwd).Path)\spack_installer" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
|
|
- uses: actions/download-artifact@v3
|
|
with:
|
|
name: Windows Spack Installer Bundle
|
|
path: ${{ env.spack_installer }}
|
|
- name: Execute Bundled Installer
|
|
run: |
|
|
$proc = Start-Process ${{ env.spack_installer }}\spack.exe "/install /quiet" -Passthru
|
|
$handle = $proc.Handle # cache proc.Handle
|
|
$proc.WaitForExit();
|
|
$LASTEXITCODE
|
|
env:
|
|
ProgressPreference: SilentlyContinue
|
|
- uses: actions/download-artifact@v3
|
|
with:
|
|
name: Windows Spack Installer
|
|
path: ${{ env.spack_installer }}
|
|
- name: Execute MSI
|
|
run: |
|
|
$proc = Start-Process ${{ env.spack_installer }}\spack.msi "/quiet" -Passthru
|
|
$handle = $proc.Handle # cache proc.Handle
|
|
$proc.WaitForExit();
|
|
$LASTEXITCODE
|