2021-08-03 14:53:40 +00:00
|
|
|
name: Bootstrapping
|
|
|
|
|
|
|
|
on:
|
2021-11-09 11:02:24 +00:00
|
|
|
# This Workflow can be triggered manually
|
|
|
|
workflow_dispatch:
|
Reorder workflow execution in GHA (#32183)
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>
2022-09-02 21:09:23 +00:00
|
|
|
workflow_call:
|
2021-08-03 14:53:40 +00:00
|
|
|
schedule:
|
|
|
|
# nightly at 2:16 AM
|
|
|
|
- cron: '16 2 * * *'
|
|
|
|
|
2022-06-08 22:46:46 +00:00
|
|
|
concurrency:
|
2022-09-07 18:12:57 +00:00
|
|
|
group: bootstrap-${{github.ref}}-${{github.event.pull_request.number || github.run_number}}
|
2022-06-08 22:46:46 +00:00
|
|
|
cancel-in-progress: true
|
|
|
|
|
2021-08-03 14:53:40 +00:00
|
|
|
jobs:
|
2021-11-03 06:15:24 +00:00
|
|
|
fedora-clingo-sources:
|
2021-08-03 14:53:40 +00:00
|
|
|
runs-on: ubuntu-latest
|
|
|
|
container: "fedora:latest"
|
|
|
|
steps:
|
|
|
|
- name: Install dependencies
|
|
|
|
run: |
|
|
|
|
dnf install -y \
|
|
|
|
bzip2 curl file gcc-c++ gcc gcc-gfortran git gnupg2 gzip \
|
|
|
|
make patch unzip which xz python3 python3-devel tree \
|
|
|
|
cmake bison bison-devel libstdc++-static
|
2022-05-10 14:27:37 +00:00
|
|
|
- name: Checkout
|
2022-10-06 08:58:13 +00:00
|
|
|
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
|
Reorder workflow execution in GHA (#32183)
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>
2022-09-02 21:09:23 +00:00
|
|
|
with:
|
|
|
|
fetch-depth: 0
|
2022-05-10 14:27:37 +00:00
|
|
|
- name: Setup non-root user
|
2022-05-09 09:11:03 +00:00
|
|
|
run: |
|
2022-05-10 14:27:37 +00:00
|
|
|
# See [1] below
|
2022-05-09 09:11:03 +00:00
|
|
|
git config --global --add safe.directory /__w/spack/spack
|
2022-05-10 14:27:37 +00:00
|
|
|
useradd spack-test && mkdir -p ~spack-test
|
|
|
|
chown -R spack-test . ~spack-test
|
|
|
|
- name: Setup repo
|
|
|
|
shell: runuser -u spack-test -- bash {0}
|
2021-08-03 14:53:40 +00:00
|
|
|
run: |
|
|
|
|
git --version
|
|
|
|
. .github/workflows/setup_git.sh
|
|
|
|
- name: Bootstrap clingo
|
|
|
|
shell: runuser -u spack-test -- bash {0}
|
|
|
|
run: |
|
|
|
|
source share/spack/setup-env.sh
|
2022-10-27 05:40:10 +00:00
|
|
|
spack bootstrap untrust github-actions-v0.3
|
2021-08-03 14:53:40 +00:00
|
|
|
spack external find cmake bison
|
|
|
|
spack -d solve zlib
|
|
|
|
tree ~/.spack/bootstrap/store/
|
|
|
|
|
2021-11-03 06:15:24 +00:00
|
|
|
ubuntu-clingo-sources:
|
2021-08-03 14:53:40 +00:00
|
|
|
runs-on: ubuntu-latest
|
|
|
|
container: "ubuntu:latest"
|
|
|
|
steps:
|
|
|
|
- name: Install dependencies
|
|
|
|
env:
|
|
|
|
DEBIAN_FRONTEND: noninteractive
|
|
|
|
run: |
|
|
|
|
apt-get update -y && apt-get upgrade -y
|
|
|
|
apt-get install -y \
|
|
|
|
bzip2 curl file g++ gcc gfortran git gnupg2 gzip \
|
|
|
|
make patch unzip xz-utils python3 python3-dev tree \
|
|
|
|
cmake bison
|
2022-05-10 14:27:37 +00:00
|
|
|
- name: Checkout
|
2022-10-06 08:58:13 +00:00
|
|
|
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
|
Reorder workflow execution in GHA (#32183)
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>
2022-09-02 21:09:23 +00:00
|
|
|
with:
|
|
|
|
fetch-depth: 0
|
2022-05-10 14:27:37 +00:00
|
|
|
- name: Setup non-root user
|
2022-04-13 11:10:00 +00:00
|
|
|
run: |
|
2022-05-10 14:27:37 +00:00
|
|
|
# See [1] below
|
2022-04-13 11:10:00 +00:00
|
|
|
git config --global --add safe.directory /__w/spack/spack
|
2022-05-10 14:27:37 +00:00
|
|
|
useradd spack-test && mkdir -p ~spack-test
|
|
|
|
chown -R spack-test . ~spack-test
|
|
|
|
- name: Setup repo
|
|
|
|
shell: runuser -u spack-test -- bash {0}
|
2021-08-03 14:53:40 +00:00
|
|
|
run: |
|
|
|
|
git --version
|
|
|
|
. .github/workflows/setup_git.sh
|
|
|
|
- name: Bootstrap clingo
|
|
|
|
shell: runuser -u spack-test -- bash {0}
|
|
|
|
run: |
|
|
|
|
source share/spack/setup-env.sh
|
2022-10-27 05:40:10 +00:00
|
|
|
spack bootstrap untrust github-actions-v0.3
|
2021-08-03 14:53:40 +00:00
|
|
|
spack external find cmake bison
|
|
|
|
spack -d solve zlib
|
|
|
|
tree ~/.spack/bootstrap/store/
|
|
|
|
|
2021-11-26 14:32:13 +00:00
|
|
|
ubuntu-clingo-binaries-and-patchelf:
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
container: "ubuntu:latest"
|
|
|
|
steps:
|
|
|
|
- name: Install dependencies
|
|
|
|
env:
|
|
|
|
DEBIAN_FRONTEND: noninteractive
|
|
|
|
run: |
|
|
|
|
apt-get update -y && apt-get upgrade -y
|
|
|
|
apt-get install -y \
|
|
|
|
bzip2 curl file g++ gcc gfortran git gnupg2 gzip \
|
|
|
|
make patch unzip xz-utils python3 python3-dev tree
|
2022-05-10 14:27:37 +00:00
|
|
|
- name: Checkout
|
2022-10-06 08:58:13 +00:00
|
|
|
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
|
Reorder workflow execution in GHA (#32183)
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>
2022-09-02 21:09:23 +00:00
|
|
|
with:
|
|
|
|
fetch-depth: 0
|
2022-05-10 14:27:37 +00:00
|
|
|
- name: Setup non-root user
|
2022-04-13 11:10:00 +00:00
|
|
|
run: |
|
2022-05-10 14:27:37 +00:00
|
|
|
# See [1] below
|
2022-04-13 11:10:00 +00:00
|
|
|
git config --global --add safe.directory /__w/spack/spack
|
2022-05-10 14:27:37 +00:00
|
|
|
useradd spack-test && mkdir -p ~spack-test
|
|
|
|
chown -R spack-test . ~spack-test
|
|
|
|
- name: Setup repo
|
|
|
|
shell: runuser -u spack-test -- bash {0}
|
2021-11-26 14:32:13 +00:00
|
|
|
run: |
|
|
|
|
git --version
|
|
|
|
. .github/workflows/setup_git.sh
|
|
|
|
- name: Bootstrap clingo
|
|
|
|
shell: runuser -u spack-test -- bash {0}
|
|
|
|
run: |
|
|
|
|
source share/spack/setup-env.sh
|
|
|
|
spack -d solve zlib
|
|
|
|
tree ~/.spack/bootstrap/store/
|
|
|
|
|
2021-11-03 06:15:24 +00:00
|
|
|
opensuse-clingo-sources:
|
2021-08-03 14:53:40 +00:00
|
|
|
runs-on: ubuntu-latest
|
2021-09-24 07:22:40 +00:00
|
|
|
container: "opensuse/leap:latest"
|
2021-08-03 14:53:40 +00:00
|
|
|
steps:
|
|
|
|
- name: Install dependencies
|
|
|
|
run: |
|
2021-11-08 11:56:19 +00:00
|
|
|
# Harden CI by applying the workaround described here: https://www.suse.com/support/kb/doc/?id=000019505
|
|
|
|
zypper update -y || zypper update -y
|
2021-08-03 14:53:40 +00:00
|
|
|
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
|
2022-05-10 14:27:37 +00:00
|
|
|
- name: Checkout
|
2022-10-06 08:58:13 +00:00
|
|
|
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
|
Reorder workflow execution in GHA (#32183)
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>
2022-09-02 21:09:23 +00:00
|
|
|
with:
|
|
|
|
fetch-depth: 0
|
2022-05-10 14:27:37 +00:00
|
|
|
- name: Setup repo
|
2021-08-03 14:53:40 +00:00
|
|
|
run: |
|
2022-05-10 14:27:37 +00:00
|
|
|
# See [1] below
|
2022-05-02 20:49:53 +00:00
|
|
|
git config --global --add safe.directory /__w/spack/spack
|
2022-05-10 14:27:37 +00:00
|
|
|
git --version
|
2021-08-03 14:53:40 +00:00
|
|
|
. .github/workflows/setup_git.sh
|
|
|
|
- name: Bootstrap clingo
|
|
|
|
run: |
|
|
|
|
source share/spack/setup-env.sh
|
2022-10-27 05:40:10 +00:00
|
|
|
spack bootstrap untrust github-actions-v0.3
|
2021-08-03 14:53:40 +00:00
|
|
|
spack external find cmake bison
|
|
|
|
spack -d solve zlib
|
|
|
|
tree ~/.spack/bootstrap/store/
|
|
|
|
|
2021-11-03 06:15:24 +00:00
|
|
|
macos-clingo-sources:
|
2021-08-03 14:53:40 +00:00
|
|
|
runs-on: macos-latest
|
|
|
|
steps:
|
|
|
|
- name: Install dependencies
|
|
|
|
run: |
|
|
|
|
brew install cmake bison@2.7 tree
|
2022-05-10 14:27:37 +00:00
|
|
|
- name: Checkout
|
2022-10-06 08:58:13 +00:00
|
|
|
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
|
2021-08-03 14:53:40 +00:00
|
|
|
- name: Bootstrap clingo
|
|
|
|
run: |
|
|
|
|
source share/spack/setup-env.sh
|
|
|
|
export PATH=/usr/local/opt/bison@2.7/bin:$PATH
|
2022-10-27 05:40:10 +00:00
|
|
|
spack bootstrap untrust github-actions-v0.3
|
2021-08-03 14:53:40 +00:00
|
|
|
spack external find --not-buildable cmake bison
|
|
|
|
spack -d solve zlib
|
|
|
|
tree ~/.spack/bootstrap/store/
|
2021-08-18 18:14:02 +00:00
|
|
|
|
|
|
|
macos-clingo-binaries:
|
2022-06-16 11:26:20 +00:00
|
|
|
runs-on: ${{ matrix.macos-version }}
|
2021-08-18 18:14:02 +00:00
|
|
|
strategy:
|
|
|
|
matrix:
|
2022-08-03 10:29:29 +00:00
|
|
|
macos-version: ['macos-11', 'macos-12']
|
2021-08-18 18:14:02 +00:00
|
|
|
steps:
|
|
|
|
- name: Install dependencies
|
|
|
|
run: |
|
|
|
|
brew install tree
|
2022-05-10 14:27:37 +00:00
|
|
|
- name: Checkout
|
2022-10-06 08:58:13 +00:00
|
|
|
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
|
2021-08-18 18:14:02 +00:00
|
|
|
- name: Bootstrap clingo
|
|
|
|
run: |
|
Reorder workflow execution in GHA (#32183)
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>
2022-09-02 21:09:23 +00:00
|
|
|
set -ex
|
|
|
|
for ver in '3.6' '3.7' '3.8' '3.9' '3.10' ; do
|
|
|
|
not_found=1
|
|
|
|
ver_dir="$(find $RUNNER_TOOL_CACHE/Python -wholename "*/${ver}.*/*/bin" | grep . || true)"
|
|
|
|
echo "Testing $ver_dir"
|
|
|
|
if [[ -d "$ver_dir" ]] ; then
|
|
|
|
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/bootstrap-test.sh
|
|
|
|
export PATH="$old_path"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
# NOTE: test all pythons that exist, not all do on 12
|
|
|
|
done
|
2021-08-18 18:14:02 +00:00
|
|
|
|
|
|
|
ubuntu-clingo-binaries:
|
Reorder workflow execution in GHA (#32183)
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>
2022-09-02 21:09:23 +00:00
|
|
|
runs-on: ubuntu-20.04
|
2021-08-18 18:14:02 +00:00
|
|
|
steps:
|
2022-05-10 14:27:37 +00:00
|
|
|
- name: Checkout
|
2022-10-06 08:58:13 +00:00
|
|
|
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
|
2021-08-18 18:14:02 +00:00
|
|
|
with:
|
Reorder workflow execution in GHA (#32183)
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>
2022-09-02 21:09:23 +00:00
|
|
|
fetch-depth: 0
|
2022-05-10 14:27:37 +00:00
|
|
|
- name: Setup repo
|
2021-08-18 18:14:02 +00:00
|
|
|
run: |
|
|
|
|
git --version
|
|
|
|
. .github/workflows/setup_git.sh
|
|
|
|
- name: Bootstrap clingo
|
|
|
|
run: |
|
Reorder workflow execution in GHA (#32183)
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>
2022-09-02 21:09:23 +00:00
|
|
|
set -ex
|
|
|
|
for ver in '2.7' '3.6' '3.7' '3.8' '3.9' '3.10' ; do
|
|
|
|
not_found=1
|
|
|
|
ver_dir="$(find $RUNNER_TOOL_CACHE/Python -wholename "*/${ver}.*/*/bin" | grep . || true)"
|
|
|
|
echo "Testing $ver_dir"
|
|
|
|
if [[ -d "$ver_dir" ]] ; then
|
|
|
|
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/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
|
2021-11-03 06:15:24 +00:00
|
|
|
|
|
|
|
ubuntu-gnupg-binaries:
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
container: "ubuntu:latest"
|
|
|
|
steps:
|
|
|
|
- name: Install dependencies
|
|
|
|
env:
|
|
|
|
DEBIAN_FRONTEND: noninteractive
|
|
|
|
run: |
|
|
|
|
apt-get update -y && apt-get upgrade -y
|
|
|
|
apt-get install -y \
|
|
|
|
bzip2 curl file g++ gcc patchelf gfortran git gzip \
|
|
|
|
make patch unzip xz-utils python3 python3-dev tree
|
2022-05-10 14:27:37 +00:00
|
|
|
- name: Checkout
|
2022-10-06 08:58:13 +00:00
|
|
|
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
|
Reorder workflow execution in GHA (#32183)
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>
2022-09-02 21:09:23 +00:00
|
|
|
with:
|
|
|
|
fetch-depth: 0
|
2022-05-10 14:27:37 +00:00
|
|
|
- name: Setup non-root user
|
2022-04-13 11:10:00 +00:00
|
|
|
run: |
|
2022-05-10 14:27:37 +00:00
|
|
|
# See [1] below
|
2022-04-13 11:10:00 +00:00
|
|
|
git config --global --add safe.directory /__w/spack/spack
|
2022-05-10 14:27:37 +00:00
|
|
|
useradd spack-test && mkdir -p ~spack-test
|
|
|
|
chown -R spack-test . ~spack-test
|
|
|
|
- name: Setup repo
|
|
|
|
shell: runuser -u spack-test -- bash {0}
|
2021-11-03 06:15:24 +00:00
|
|
|
run: |
|
|
|
|
git --version
|
|
|
|
. .github/workflows/setup_git.sh
|
|
|
|
- name: Bootstrap GnuPG
|
|
|
|
shell: runuser -u spack-test -- bash {0}
|
|
|
|
run: |
|
|
|
|
source share/spack/setup-env.sh
|
|
|
|
spack bootstrap untrust spack-install
|
|
|
|
spack -d gpg list
|
|
|
|
tree ~/.spack/bootstrap/store/
|
|
|
|
|
|
|
|
ubuntu-gnupg-sources:
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
container: "ubuntu:latest"
|
|
|
|
steps:
|
|
|
|
- name: Install dependencies
|
|
|
|
env:
|
|
|
|
DEBIAN_FRONTEND: noninteractive
|
|
|
|
run: |
|
|
|
|
apt-get update -y && apt-get upgrade -y
|
|
|
|
apt-get install -y \
|
|
|
|
bzip2 curl file g++ gcc patchelf gfortran git gzip \
|
|
|
|
make patch unzip xz-utils python3 python3-dev tree \
|
|
|
|
gawk
|
2022-05-10 14:27:37 +00:00
|
|
|
- name: Checkout
|
2022-10-06 08:58:13 +00:00
|
|
|
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
|
Reorder workflow execution in GHA (#32183)
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>
2022-09-02 21:09:23 +00:00
|
|
|
with:
|
|
|
|
fetch-depth: 0
|
2022-05-10 14:27:37 +00:00
|
|
|
- name: Setup non-root user
|
2022-04-13 11:10:00 +00:00
|
|
|
run: |
|
2022-05-10 14:27:37 +00:00
|
|
|
# See [1] below
|
2022-04-13 11:10:00 +00:00
|
|
|
git config --global --add safe.directory /__w/spack/spack
|
2022-05-10 14:27:37 +00:00
|
|
|
useradd spack-test && mkdir -p ~spack-test
|
|
|
|
chown -R spack-test . ~spack-test
|
|
|
|
- name: Setup repo
|
|
|
|
shell: runuser -u spack-test -- bash {0}
|
2021-11-03 06:15:24 +00:00
|
|
|
run: |
|
|
|
|
git --version
|
|
|
|
. .github/workflows/setup_git.sh
|
|
|
|
- name: Bootstrap GnuPG
|
|
|
|
shell: runuser -u spack-test -- bash {0}
|
|
|
|
run: |
|
|
|
|
source share/spack/setup-env.sh
|
|
|
|
spack solve zlib
|
2022-10-27 05:40:10 +00:00
|
|
|
spack bootstrap untrust github-actions-v0.3
|
2021-11-03 06:15:24 +00:00
|
|
|
spack -d gpg list
|
|
|
|
tree ~/.spack/bootstrap/store/
|
|
|
|
|
|
|
|
macos-gnupg-binaries:
|
|
|
|
runs-on: macos-latest
|
|
|
|
steps:
|
|
|
|
- name: Install dependencies
|
|
|
|
run: |
|
|
|
|
brew install tree
|
|
|
|
# Remove GnuPG since we want to bootstrap it
|
|
|
|
sudo rm -rf /usr/local/bin/gpg
|
2022-05-10 14:27:37 +00:00
|
|
|
- name: Checkout
|
2022-10-06 08:58:13 +00:00
|
|
|
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
|
2021-11-03 06:15:24 +00:00
|
|
|
- name: Bootstrap GnuPG
|
|
|
|
run: |
|
|
|
|
source share/spack/setup-env.sh
|
|
|
|
spack bootstrap untrust spack-install
|
|
|
|
spack -d gpg list
|
|
|
|
tree ~/.spack/bootstrap/store/
|
|
|
|
|
|
|
|
macos-gnupg-sources:
|
|
|
|
runs-on: macos-latest
|
|
|
|
steps:
|
|
|
|
- name: Install dependencies
|
|
|
|
run: |
|
|
|
|
brew install gawk tree
|
|
|
|
# Remove GnuPG since we want to bootstrap it
|
|
|
|
sudo rm -rf /usr/local/bin/gpg
|
2022-05-10 14:27:37 +00:00
|
|
|
- name: Checkout
|
2022-10-06 08:58:13 +00:00
|
|
|
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
|
2021-11-03 06:15:24 +00:00
|
|
|
- name: Bootstrap GnuPG
|
|
|
|
run: |
|
|
|
|
source share/spack/setup-env.sh
|
|
|
|
spack solve zlib
|
2022-10-27 05:40:10 +00:00
|
|
|
spack bootstrap untrust github-actions-v0.3
|
2021-11-03 06:15:24 +00:00
|
|
|
spack -d gpg list
|
|
|
|
tree ~/.spack/bootstrap/store/
|
2022-05-10 14:27:37 +00:00
|
|
|
|
|
|
|
|
|
|
|
# [1] Distros that have patched git to resolve CVE-2022-24765 (e.g. Ubuntu patching v2.25.1)
|
|
|
|
# introduce breaking behaviorso we have to set `safe.directory` in gitconfig ourselves.
|
|
|
|
# See:
|
|
|
|
# - https://github.blog/2022-04-12-git-security-vulnerability-announced/
|
|
|
|
# - https://github.com/actions/checkout/issues/760
|
|
|
|
# - http://changelogs.ubuntu.com/changelogs/pool/main/g/git/git_2.25.1-1ubuntu3.3/changelog
|