Build and test installer #1345
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
name: Build and test installer | |
on: | |
push: | |
# Only build for pushes to branches | |
branches: | |
- main | |
tags-ignore: | |
- '**' | |
pull_request: | |
branches: | |
- main | |
schedule: | |
- cron: '6 2 * * *' | |
workflow_dispatch: | |
jobs: | |
build-installer: | |
name: Build installer | |
if: github.repository == 'DIRACGrid/DIRACOS2' | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
shell: bash -l {0} | |
strategy: | |
matrix: | |
target_arch: ["linux-64", "linux-aarch64", "linux-ppc64le", "osx-arm64", "osx-64"] | |
steps: | |
- uses: actions/checkout@v3 | |
- id: get-date | |
run: echo "year-and-week=$(date +"%Y-W%U")" >> $GITHUB_OUTPUT | |
shell: bash | |
- name: Keep constructor cache between invocations | |
# This is big help to avoid needing to transmuting packages every time | |
id: cache-transmuted-packages | |
uses: actions/cache@v3 | |
with: | |
path: ~/.conda/constructor | |
key: ${{ runner.os }}-${{ matrix.target_arch }}-constructor-${{ steps.get-date.outputs.year-and-week }} | |
- name: Prepare environment | |
uses: conda-incubator/setup-miniconda@v2 | |
with: | |
environment-file: scripts/environment.yml | |
miniforge-variant: Mambaforge | |
use-mamba: true | |
- name: Create installer | |
run: | | |
CONDA_SUBDIR=${{ matrix.target_arch }} mamba create --name constructor-${{ matrix.target_arch }} 'micromamba>=0.22' | |
CONDA_STANDALONE_PATH="$(conda info --envs | grep constructor-${{ matrix.target_arch }} | sed -E 's@([^ ]+ +)@@g')/bin/micromamba" | |
pip install git+http://github.com/conda/constructor.git@3.3.1 | |
if [ "${{ matrix.target_arch }}" = osx-64 ]; then | |
export CONDA_OVERRIDE_OSX=10.12 | |
elif [ "${{ matrix.target_arch }}" = linux-64 ]; then | |
export CONDA_OVERRIDE_GLIBC=2.17 | |
fi | |
CONDA_SUBDIR=${{ matrix.target_arch }} constructor . --platform="${{ matrix.target_arch }}" --conda-exe="${CONDA_STANDALONE_PATH}" | |
- name: Upload installer | |
uses: actions/upload-artifact@v3 | |
with: | |
name: installer-${{ matrix.target_arch }} | |
path: DIRACOS-*.sh | |
get-info: | |
name: Create environment.yaml | |
if: github.repository == 'DIRACGrid/DIRACOS2' | |
needs: build-installer | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
target_arch: ["linux-64"] | |
steps: | |
- name: Download installer | |
uses: actions/download-artifact@v3 | |
with: | |
name: installer-${{ matrix.target_arch }} | |
- name: Generate environment.yaml | |
run: | | |
bash DIRACOS-*.sh | |
source diracos/diracosrc | |
conda env export --file environment.yaml --prefix $DIRACOS | |
- name: Upload environment.yaml | |
uses: actions/upload-artifact@v3 | |
with: | |
name: environment-yaml-${{ matrix.target_arch }} | |
path: | | |
environment.yaml | |
release-notes: | |
name: Show release notes and diff | |
if: github.repository == 'DIRACGrid/DIRACOS2' | |
needs: get-info | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
shell: bash -l {0} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Download artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
path: artifacts | |
- name: Prepare environment | |
uses: conda-incubator/setup-miniconda@v2 | |
with: | |
environment-file: scripts/environment.yml | |
miniforge-variant: Mambaforge | |
use-mamba: true | |
- name: Create release notes | |
run: | | |
scripts/make_release.py \ | |
--token="${{ secrets.GITHUB_TOKEN }}" \ | |
--artifacts-dir="${PWD}/artifacts" \ | |
> release-notes.md | |
cat release-notes.md | |
- name: Upload release-notes.md | |
uses: actions/upload-artifact@v3 | |
with: | |
name: release-notes | |
path: | | |
release-notes.md | |
basic-tests: | |
name: Basic tests | |
if: github.repository == 'DIRACGrid/DIRACOS2' | |
needs: build-installer | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
docker-image: | |
- "centos:7" | |
- "centos:8" | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Download installer | |
uses: actions/download-artifact@v3 | |
with: | |
name: installer-linux-64 | |
- name: Run tests | |
run: scripts/run_basic_tests.sh ${{ matrix.docker-image }} DIRACOS-*.sh | |
macos-tests: | |
name: macOS tests | |
if: github.repository == 'DIRACGrid/DIRACOS2' | |
needs: build-installer | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [macos-11, macos-12] | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Download installer | |
uses: actions/download-artifact@v3 | |
with: | |
name: installer-osx-64 | |
- name: Run tests | |
run: | | |
bash DIRACOS-*.sh | |
set -x | |
source diracos/diracosrc | |
pip install DIRAC | |
integration-tests-client-only: | |
name: Integration tests (Py2 server) | |
if: github.repository == 'DIRACGrid/DIRACOS2' | |
needs: build-installer | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
dirac-branch: | |
- rel-v7r3 | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: '3.9' | |
- name: Download installer | |
uses: actions/download-artifact@v3 | |
with: | |
name: installer-linux-64 | |
- name: Prepare environment | |
run: | | |
pip install typer pyyaml gitpython packaging | |
git clone https://github.com/DIRACGrid/DIRAC.git -b "${{ matrix.dirac-branch }}" DIRACRepo | |
- name: Run tests | |
run: | | |
CLIENT_DIRACOS_TARBALL_PATH=$(echo ${PWD}/DIRACOS-*.sh) | |
echo "CLIENT_DIRACOS_TARBALL_PATH is ${CLIENT_DIRACOS_TARBALL_PATH}" | |
cd DIRACRepo | |
./integration_tests.py create \ | |
"CLIENT_DIRACOS_TARBALL_PATH=${CLIENT_DIRACOS_TARBALL_PATH}" \ | |
"CLIENT_USE_PYTHON3=Yes" | |
# This is duplicated as USE_PYTHON3=Yes is needed for rel-v7r3 | |
# As soon as support for rel-v7r3 is dropped this job can be removed | |
integration-tests-client-and-server-v7r3: | |
name: Integration tests (Py3 server) | |
if: github.repository == 'DIRACGrid/DIRACOS2' | |
needs: build-installer | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
dirac-branch: | |
- rel-v7r3 | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: '3.9' | |
- name: Download installer | |
uses: actions/download-artifact@v3 | |
with: | |
name: installer-linux-64 | |
- name: Prepare environment | |
run: | | |
pip install typer pyyaml gitpython packaging | |
git clone https://github.com/DIRACGrid/DIRAC.git -b "${{ matrix.dirac-branch }}" DIRACRepo | |
- name: Run tests | |
run: | | |
DIRACOS_TARBALL_PATH=$(echo ${PWD}/DIRACOS-*.sh) | |
echo "DIRACOS_TARBALL_PATH is ${DIRACOS_TARBALL_PATH}" | |
cd DIRACRepo | |
./integration_tests.py create \ | |
"DIRACOS_TARBALL_PATH=${DIRACOS_TARBALL_PATH}" \ | |
"USE_PYTHON3=Yes" | |
integration-tests-client-and-server: | |
name: Integration tests (Py3 server) | |
if: github.repository == 'DIRACGrid/DIRACOS2' | |
needs: build-installer | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
dirac-branch: | |
- rel-v8r0 | |
- integration | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: '3.9' | |
- name: Download installer | |
uses: actions/download-artifact@v3 | |
with: | |
name: installer-linux-64 | |
- name: Prepare environment | |
run: | | |
pip install typer pyyaml gitpython packaging | |
git clone https://github.com/DIRACGrid/DIRAC.git -b "${{ matrix.dirac-branch }}" DIRACRepo | |
- name: Run tests | |
run: | | |
DIRACOS_TARBALL_PATH=$(echo ${PWD}/DIRACOS-*.sh) | |
echo "DIRACOS_TARBALL_PATH is ${DIRACOS_TARBALL_PATH}" | |
cd DIRACRepo | |
./integration_tests.py create \ | |
"DIRACOS_TARBALL_PATH=${DIRACOS_TARBALL_PATH}" |