Build workflows #7
Workflow file for this run
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
# | |
# | |
# | |
# This is a file generated by generate-workflows.py - DO NOT EDIT!! | |
# | |
# | |
# | |
name: downstream-ci | |
"on": | |
workflow_call: | |
inputs: | |
codecov_upload: | |
description: Whether to upload code coverage | |
type: boolean | |
required: false | |
atlas: | |
required: false | |
type: string | |
cfgrib: | |
required: false | |
type: string | |
earthkit: | |
required: false | |
type: string | |
earthkit-data: | |
required: false | |
type: string | |
earthkit-geo: | |
required: false | |
type: string | |
earthkit-meteo: | |
required: false | |
type: string | |
earthkit-regrid: | |
required: false | |
type: string | |
eccodes: | |
required: false | |
type: string | |
eccodes-python: | |
required: false | |
type: string | |
ecflow: | |
required: false | |
type: string | |
ecflow-light: | |
required: false | |
type: string | |
eckit: | |
required: false | |
type: string | |
fckit: | |
required: false | |
type: string | |
fdb: | |
required: false | |
type: string | |
infero: | |
required: false | |
type: string | |
metkit: | |
required: false | |
type: string | |
mir: | |
required: false | |
type: string | |
multio: | |
required: false | |
type: string | |
multiurl: | |
required: false | |
type: string | |
odc: | |
required: false | |
type: string | |
pdbufr: | |
required: false | |
type: string | |
plume: | |
required: false | |
type: string | |
pyfdb: | |
required: false | |
type: string | |
pyodc: | |
required: false | |
type: string | |
skinnywms: | |
required: false | |
type: string | |
thermofeel: | |
required: false | |
type: string | |
troika: | |
required: false | |
type: string | |
cascade: | |
required: false | |
type: string | |
skip_matrix_jobs: | |
description: List of matrix jobs to be skipped. | |
required: false | |
type: string | |
python_qa: | |
description: Whether to run code QA tasks. | |
type: boolean | |
required: false | |
clang_format: | |
description: Whether to run clang-format QA. | |
type: boolean | |
required: false | |
clang_format_ignore: | |
description: A list of paths to be skipped during formatting check. | |
type: string | |
required: false | |
jobs: | |
setup: | |
name: setup | |
runs-on: ubuntu-latest | |
outputs: | |
atlas: ${{ steps.prepare-inputs.outputs.atlas }} | |
atlas_matrix: ${{ steps.setup.outputs.atlas }} | |
cfgrib: ${{ steps.prepare-inputs.outputs.cfgrib }} | |
cfgrib_matrix: ${{ steps.setup.outputs.cfgrib }} | |
earthkit: ${{ steps.prepare-inputs.outputs.earthkit }} | |
earthkit_matrix: ${{ steps.setup.outputs.earthkit }} | |
earthkit-data: ${{ steps.prepare-inputs.outputs.earthkit-data }} | |
earthkit-data_matrix: ${{ steps.setup.outputs.earthkit-data }} | |
earthkit-geo: ${{ steps.prepare-inputs.outputs.earthkit-geo }} | |
earthkit-geo_matrix: ${{ steps.setup.outputs.earthkit-geo }} | |
earthkit-meteo: ${{ steps.prepare-inputs.outputs.earthkit-meteo }} | |
earthkit-meteo_matrix: ${{ steps.setup.outputs.earthkit-meteo }} | |
earthkit-regrid: ${{ steps.prepare-inputs.outputs.earthkit-regrid }} | |
earthkit-regrid_matrix: ${{ steps.setup.outputs.earthkit-regrid }} | |
eccodes: ${{ steps.prepare-inputs.outputs.eccodes }} | |
eccodes_matrix: ${{ steps.setup.outputs.eccodes }} | |
eccodes-python: ${{ steps.prepare-inputs.outputs.eccodes-python }} | |
eccodes-python_matrix: ${{ steps.setup.outputs.eccodes-python }} | |
ecflow: ${{ steps.prepare-inputs.outputs.ecflow }} | |
ecflow_matrix: ${{ steps.setup.outputs.ecflow }} | |
ecflow-light: ${{ steps.prepare-inputs.outputs.ecflow-light }} | |
ecflow-light_matrix: ${{ steps.setup.outputs.ecflow-light }} | |
eckit: ${{ steps.prepare-inputs.outputs.eckit }} | |
eckit_matrix: ${{ steps.setup.outputs.eckit }} | |
fckit: ${{ steps.prepare-inputs.outputs.fckit }} | |
fckit_matrix: ${{ steps.setup.outputs.fckit }} | |
fdb: ${{ steps.prepare-inputs.outputs.fdb }} | |
fdb_matrix: ${{ steps.setup.outputs.fdb }} | |
metkit: ${{ steps.prepare-inputs.outputs.metkit }} | |
metkit_matrix: ${{ steps.setup.outputs.metkit }} | |
mir: ${{ steps.prepare-inputs.outputs.mir }} | |
mir_matrix: ${{ steps.setup.outputs.mir }} | |
multio: ${{ steps.prepare-inputs.outputs.multio }} | |
multio_matrix: ${{ steps.setup.outputs.multio }} | |
multiurl: ${{ steps.prepare-inputs.outputs.multiurl }} | |
multiurl_matrix: ${{ steps.setup.outputs.multiurl }} | |
odc: ${{ steps.prepare-inputs.outputs.odc }} | |
odc_matrix: ${{ steps.setup.outputs.odc }} | |
pdbufr: ${{ steps.prepare-inputs.outputs.pdbufr }} | |
pdbufr_matrix: ${{ steps.setup.outputs.pdbufr }} | |
plume: ${{ steps.prepare-inputs.outputs.plume }} | |
plume_matrix: ${{ steps.setup.outputs.plume }} | |
pyfdb: ${{ steps.prepare-inputs.outputs.pyfdb }} | |
pyfdb_matrix: ${{ steps.setup.outputs.pyfdb }} | |
pyodc: ${{ steps.prepare-inputs.outputs.pyodc }} | |
pyodc_matrix: ${{ steps.setup.outputs.pyodc }} | |
skinnywms: ${{ steps.prepare-inputs.outputs.skinnywms }} | |
skinnywms_matrix: ${{ steps.setup.outputs.skinnywms }} | |
thermofeel: ${{ steps.prepare-inputs.outputs.thermofeel }} | |
thermofeel_matrix: ${{ steps.setup.outputs.thermofeel }} | |
troika: ${{ steps.prepare-inputs.outputs.troika }} | |
troika_matrix: ${{ steps.setup.outputs.troika }} | |
cascade: ${{ steps.prepare-inputs.outputs.cascade }} | |
cascade_matrix: ${{ steps.setup.outputs.cascade }} | |
dep_tree: ${{ steps.setup.outputs.build_package_dep_tree }} | |
trigger_repo: ${{ steps.setup.outputs.trigger_repo }} | |
py_codecov_platform: ${{ steps.setup.outputs.py_codecov_platform }} | |
steps: | |
- name: Prepare inputs | |
id: prepare-inputs | |
run: |- | |
echo atlas="${{ inputs.atlas }}" >> $GITHUB_OUTPUT | |
echo cfgrib="${{ inputs.cfgrib }}" >> $GITHUB_OUTPUT | |
echo earthkit="${{ inputs.earthkit }}" >> $GITHUB_OUTPUT | |
echo earthkit-data="${{ inputs.earthkit-data }}" >> $GITHUB_OUTPUT | |
echo earthkit-geo="${{ inputs.earthkit-geo }}" >> $GITHUB_OUTPUT | |
echo earthkit-meteo="${{ inputs.earthkit-meteo }}" >> $GITHUB_OUTPUT | |
echo earthkit-regrid="${{ inputs.earthkit-regrid }}" >> $GITHUB_OUTPUT | |
echo eccodes="${{ inputs.eccodes }}" >> $GITHUB_OUTPUT | |
echo eccodes-python="${{ inputs.eccodes-python }}" >> $GITHUB_OUTPUT | |
echo ecflow="${{ inputs.ecflow }}" >> $GITHUB_OUTPUT | |
echo ecflow-light="${{ inputs.ecflow-light }}" >> $GITHUB_OUTPUT | |
echo eckit="${{ inputs.eckit }}" >> $GITHUB_OUTPUT | |
echo fckit="${{ inputs.fckit }}" >> $GITHUB_OUTPUT | |
echo fdb="${{ inputs.fdb }}" >> $GITHUB_OUTPUT | |
echo metkit="${{ inputs.metkit }}" >> $GITHUB_OUTPUT | |
echo mir="${{ inputs.mir }}" >> $GITHUB_OUTPUT | |
echo multio="${{ inputs.multio }}" >> $GITHUB_OUTPUT | |
echo multiurl="${{ inputs.multiurl }}" >> $GITHUB_OUTPUT | |
echo odc="${{ inputs.odc }}" >> $GITHUB_OUTPUT | |
echo pdbufr="${{ inputs.pdbufr }}" >> $GITHUB_OUTPUT | |
echo plume="${{ inputs.plume }}" >> $GITHUB_OUTPUT | |
echo pyfdb="${{ inputs.pyfdb }}" >> $GITHUB_OUTPUT | |
echo pyodc="${{ inputs.pyodc }}" >> $GITHUB_OUTPUT | |
echo skinnywms="${{ inputs.skinnywms }}" >> $GITHUB_OUTPUT | |
echo thermofeel="${{ inputs.thermofeel }}" >> $GITHUB_OUTPUT | |
echo troika="${{ inputs.troika }}" >> $GITHUB_OUTPUT | |
echo cascade="${{ inputs.cascade }}" >> $GITHUB_OUTPUT | |
- name: checkout reusable wfs repo | |
uses: actions/checkout@v4 | |
with: | |
repository: ecmwf-actions/downstream-ci | |
ref: main | |
- name: Run setup script | |
id: setup | |
env: | |
TOKEN: ${{ secrets.GH_REPO_READ_TOKEN }} | |
CONFIG: | | |
ecmwf/atlas: | |
path: .github/ci-config.yml | |
python: false | |
master_branch: master | |
develop_branch: develop | |
input: ${{ steps.prepare-inputs.atlas }} | |
optional_matrix: null | |
ecmwf/cfgrib: | |
path: .github/ci-config.yml | |
python: true | |
master_branch: master | |
develop_branch: master | |
input: ${{ steps.prepare-inputs.cfgrib }} | |
optional_matrix: null | |
ecmwf/earthkit: | |
path: .github/ci-config.yml | |
python: true | |
master_branch: main | |
develop_branch: develop | |
input: ${{ steps.prepare-inputs.earthkit }} | |
optional_matrix: null | |
ecmwf/earthkit-data: | |
path: .github/ci-config.yml | |
python: true | |
master_branch: main | |
develop_branch: develop | |
input: ${{ steps.prepare-inputs.earthkit-data }} | |
optional_matrix: null | |
ecmwf/earthkit-geo: | |
path: '' | |
python: true | |
master_branch: main | |
develop_branch: develop | |
input: ${{ steps.prepare-inputs.earthkit-geo }} | |
optional_matrix: null | |
ecmwf/earthkit-meteo: | |
path: '' | |
python: true | |
master_branch: main | |
develop_branch: develop | |
input: ${{ steps.prepare-inputs.earthkit-meteo }} | |
optional_matrix: null | |
ecmwf/earthkit-regrid: | |
path: '' | |
python: true | |
master_branch: main | |
develop_branch: develop | |
input: ${{ steps.prepare-inputs.earthkit-regrid }} | |
optional_matrix: null | |
ecmwf/eccodes: | |
path: .github/ci-config.yml | |
python: false | |
master_branch: master | |
develop_branch: develop | |
input: ${{ steps.prepare-inputs.eccodes }} | |
optional_matrix: null | |
ecmwf/eccodes-python: | |
path: .github/ci-config.yml | |
python: true | |
master_branch: master | |
develop_branch: develop | |
input: ${{ steps.prepare-inputs.eccodes-python }} | |
optional_matrix: null | |
ecmwf/ecflow: | |
path: .github/ci-config.yml | |
python: false | |
master_branch: master | |
develop_branch: develop | |
input: ${{ steps.prepare-inputs.ecflow }} | |
optional_matrix: null | |
ecmwf/ecflow-light: | |
path: .github/ci-config.yml | |
python: false | |
master_branch: master | |
develop_branch: develop | |
input: ${{ steps.prepare-inputs.ecflow-light }} | |
optional_matrix: null | |
ecmwf/eckit: | |
path: .github/ci-config.yml | |
python: false | |
master_branch: master | |
develop_branch: develop | |
input: ${{ steps.prepare-inputs.eckit }} | |
optional_matrix: null | |
ecmwf/fckit: | |
path: .github/ci-config.yml | |
python: false | |
master_branch: master | |
develop_branch: develop | |
input: ${{ steps.prepare-inputs.fckit }} | |
optional_matrix: null | |
ecmwf/fdb: | |
path: .github/ci-config.yml | |
python: false | |
master_branch: master | |
develop_branch: develop | |
input: ${{ steps.prepare-inputs.fdb }} | |
optional_matrix: null | |
ecmwf/metkit: | |
path: .github/ci-config.yml | |
python: false | |
master_branch: master | |
develop_branch: develop | |
input: ${{ steps.prepare-inputs.metkit }} | |
optional_matrix: null | |
ecmwf/mir: | |
path: .github/ci-config.yml | |
python: false | |
master_branch: master | |
develop_branch: develop | |
input: ${{ steps.prepare-inputs.mir }} | |
optional_matrix: null | |
ecmwf/multio: | |
path: .github/ci-config.yml | |
python: false | |
master_branch: master | |
develop_branch: develop | |
input: ${{ steps.prepare-inputs.multio }} | |
optional_matrix: null | |
ecmwf/multiurl: | |
path: '' | |
python: true | |
master_branch: main | |
develop_branch: main | |
input: ${{ steps.prepare-inputs.multiurl }} | |
optional_matrix: null | |
ecmwf/odc: | |
path: .github/ci-config.yml | |
python: false | |
master_branch: master | |
develop_branch: develop | |
input: ${{ steps.prepare-inputs.odc }} | |
optional_matrix: null | |
ecmwf/pdbufr: | |
path: .github/ci-config.yml | |
python: true | |
master_branch: master | |
develop_branch: develop | |
input: ${{ steps.prepare-inputs.pdbufr }} | |
optional_matrix: null | |
ecmwf/plume: | |
path: .github/ci-config.yml | |
python: false | |
master_branch: master | |
develop_branch: develop | |
input: ${{ steps.prepare-inputs.plume }} | |
optional_matrix: null | |
ecmwf/pyfdb: | |
path: .github/ci-config.yml | |
python: true | |
master_branch: master | |
develop_branch: develop | |
input: ${{ steps.prepare-inputs.pyfdb }} | |
optional_matrix: null | |
ecmwf/pyodc: | |
path: .github/ci-config.yml | |
python: true | |
master_branch: master | |
develop_branch: develop | |
input: ${{ steps.prepare-inputs.pyodc }} | |
optional_matrix: null | |
ecmwf/skinnywms: | |
path: '' | |
python: true | |
master_branch: master | |
develop_branch: develop | |
input: ${{ steps.prepare-inputs.skinnywms }} | |
optional_matrix: null | |
ecmwf/thermofeel: | |
path: '' | |
python: true | |
master_branch: master | |
develop_branch: develop | |
input: ${{ steps.prepare-inputs.thermofeel }} | |
optional_matrix: null | |
ecmwf/troika: | |
path: '' | |
python: true | |
master_branch: master | |
develop_branch: develop | |
input: ${{ steps.prepare-inputs.troika }} | |
optional_matrix: null | |
ecmwf/cascade: | |
path: '' | |
python: true | |
master_branch: main | |
develop_branch: develop | |
input: ${{ steps.prepare-inputs.cascade }} | |
optional_matrix: null | |
SKIP_MATRIX_JOBS: ${{ inputs.skip_matrix_jobs }} | |
PYTHON_VERSIONS: |+ | |
- '3.10' | |
PYTHON_JOBS: |+ | |
[] | |
MATRIX: | | |
include: | |
- compiler: gnu | |
compiler_cc: gcc | |
compiler_cxx: g++ | |
compiler_fc: gfortran | |
env: | | |
BOOST_ROOT_DIR=/usr | |
BOOST_INCLUDE_DIR=/usr/include/boost169 | |
BOOST_LIB_DIR=/usr/lib64/boost169 | |
labels: | |
- self-hosted | |
- platform-builder-debian-11 | |
name: gnu@debian-11 | |
os: debian-11 | |
- compiler: gnu-7 | |
compiler_cc: gcc-7 | |
compiler_cxx: g++-7 | |
compiler_fc: gfortran-7 | |
env: | | |
BOOST_ROOT_DIR=/usr | |
BOOST_INCLUDE_DIR=/usr/include/boost169 | |
BOOST_LIB_DIR=/usr/lib64/boost169 | |
labels: | |
- self-hosted | |
- platform-builder-centos-7.9 | |
name: [email protected] | |
os: centos-7.9 | |
- compiler: gnu-8 | |
compiler_cc: gcc-8 | |
compiler_cxx: g++-8 | |
compiler_fc: gfortran-8 | |
env: | | |
BOOST_ROOT_DIR=/usr | |
BOOST_INCLUDE_DIR=/usr/include/boost169 | |
BOOST_LIB_DIR=/usr/lib64/boost169 | |
labels: | |
- self-hosted | |
- platform-builder-centos-7.9 | |
name: [email protected] | |
os: centos-7.9 | |
- compiler: gnu | |
compiler_cc: gcc | |
compiler_cxx: g++ | |
compiler_fc: gfortran | |
env: | | |
BOOST_ROOT_DIR=/usr | |
BOOST_INCLUDE_DIR=/usr/include/boost169 | |
BOOST_LIB_DIR=/usr/lib64/boost169 | |
labels: | |
- self-hosted | |
- platform-builder-rocky-8.6 | |
name: [email protected] | |
os: rocky-8.6 | |
- compiler: clang | |
compiler_cc: clang | |
compiler_cxx: clang++ | |
compiler_fc: gfortran | |
env: | | |
BOOST_ROOT_DIR=/usr | |
BOOST_INCLUDE_DIR=/usr/include/boost169 | |
BOOST_LIB_DIR=/usr/lib64/boost169 | |
labels: | |
- self-hosted | |
- platform-builder-rocky-8.6 | |
name: [email protected] | |
os: rocky-8.6 | |
toolchain_file: /opt/actions-runner/files/toolchain-clang-rocky-8.6.cmake | |
- compiler: gnu | |
compiler_cc: gcc | |
compiler_cxx: g++ | |
compiler_fc: gfortran | |
env: | | |
BOOST_ROOT_DIR=/usr | |
BOOST_INCLUDE_DIR=/usr/include/boost169 | |
BOOST_LIB_DIR=/usr/lib64/boost169 | |
labels: | |
- self-hosted | |
- platform-builder-ubuntu-22.04 | |
name: [email protected] | |
os: ubuntu-22.04 | |
- compiler: gnu | |
compiler_cc: gcc | |
compiler_cxx: g++ | |
compiler_fc: gfortran | |
env: | | |
BOOST_ROOT_DIR=/usr | |
BOOST_INCLUDE_DIR=/usr/include/boost169 | |
BOOST_LIB_DIR=/usr/lib64/boost169 | |
labels: | |
- self-hosted | |
- platform-builder-fedora-37 | |
name: gnu@fedora-37 | |
os: fedora-37 | |
name: | |
- gnu@debian-11 | |
- [email protected] | |
- [email protected] | |
- [email protected] | |
- [email protected] | |
- [email protected] | |
- gnu@fedora-37 | |
OPTIONAL_MATRIX: | | |
null | |
... | |
run: python setup_downstream_ci.py | |
python-qa: | |
name: python-qa | |
needs: | |
- setup | |
if: ${{ inputs.python_qa }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v4 | |
with: | |
repository: ${{ inputs.repository }} | |
ref: ${{ inputs.ref }} | |
- name: Setup Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.x | |
- name: Install Python Dependencies | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install black flake8 isort | |
- name: Check isort | |
run: isort --check . --profile black | |
- name: Check black | |
run: black --check . | |
- name: Check flake8 | |
run: flake8 . | |
clang-format: | |
name: clang-format | |
needs: | |
- setup | |
if: ${{ inputs.clang_format }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Install clang-format | |
run: | | |
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - | |
sudo add-apt-repository deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-16 main | |
sudo apt update | |
sudo apt install -y clang-format-16 | |
- name: Run clang-format | |
shell: bash {0} | |
run: |- | |
ignore="./\($(echo "${{ inputs.clang_format_ignore }}" | sed ':a;N;$!ba;s/\n/\\|/g')\)" | |
echo "Ignore: $ignore" | |
files=$(find . -not \( -regex $ignore -prune \) -regex ".*\.\(cpp\|hpp\|cc\|cxx\|h\|c\)") | |
errors=0 | |
if [ ! -e ".clang-format" ] | |
then | |
echo "::error::Missing .clang-format file" | |
exit 1 | |
fi | |
for file in $files; do | |
clang-format-16 --dry-run --Werror --style=file --fallback-style=none $file | |
if [ $? -ne 0 ]; then | |
((errors++)) | |
fi | |
done | |
if [ $errors -ne 0 ]; then | |
echo "::error::clang-format failed for $errors files" | |
exit 1 | |
fi | |
atlas: | |
name: atlas | |
needs: | |
- fckit | |
- eckit | |
- setup | |
- clang-format | |
if: ${{ (always() && !cancelled()) && contains(join(needs.*.result, ','), 'success') && needs.setup.outputs.atlas_matrix && (needs.setup.outputs.fckit || needs.setup.outputs.eckit || needs.setup.outputs.atlas) }} | |
strategy: | |
fail-fast: false | |
matrix: ${{ fromJson(needs.setup.outputs.atlas_matrix) }} | |
env: | |
DEP_TREE: ${{ needs.setup.outputs.dep_tree }} | |
runs-on: ${{ matrix.labels }} | |
steps: | |
- uses: ecmwf-actions/reusable-workflows/build-package-with-config@v2 | |
with: | |
repository: ${{ matrix.owner_repo_ref }} | |
build_package_inputs: "repository: ${{ matrix.owner_repo_ref }}" | |
build_config: ${{ matrix.config_path }} | |
build_dependencies: |- | |
${{ needs.setup.outputs.fckit }} | |
${{ needs.setup.outputs.eckit }} | |
github_token: ${{ secrets.GH_REPO_READ_TOKEN }} | |
codecov_token: ${{ secrets.CODECOV_UPLOAD_TOKEN }} | |
codecov_upload: ${{ needs.setup.outputs.trigger_repo == github.job && inputs.codecov_upload }} | |
cfgrib: | |
name: cfgrib | |
needs: | |
- eccodes-python | |
- eccodes | |
- setup | |
- python-qa | |
if: ${{ (always() && !cancelled()) && contains(join(needs.*.result, ','), 'success') && needs.setup.outputs.cfgrib_matrix && (needs.setup.outputs.eccodes-python || needs.setup.outputs.eccodes || needs.setup.outputs.cfgrib) }} | |
strategy: | |
fail-fast: false | |
matrix: ${{ fromJson(needs.setup.outputs.cfgrib_matrix) }} | |
env: | |
DEP_TREE: ${{ needs.setup.outputs.dep_tree }} | |
runs-on: ${{ matrix.labels }} | |
steps: | |
- name: Build dependencies | |
id: build-deps | |
uses: ecmwf-actions/reusable-workflows/build-package-with-config@v2 | |
with: | |
repository: ${{ matrix.owner_repo_ref }} | |
codecov_upload: false | |
build_package_inputs: "repository: ${{ matrix.owner_repo_ref }}" | |
build_config: ${{ matrix.config_path }} | |
build_dependencies: ${{ needs.setup.outputs.eccodes }} | |
github_token: ${{ secrets.GH_REPO_READ_TOKEN }} | |
- uses: ecmwf-actions/reusable-workflows/ci-python@v2 | |
with: | |
lib_path: ${{ steps.build-deps.outputs.lib_path }} | |
python_dependencies: ${{ needs.setup.outputs.eccodes-python }} | |
github_token: ${{ secrets.GH_REPO_READ_TOKEN }} | |
requirements_path: ci/requirements-tests.in | |
codecov_upload: ${{ needs.setup.outputs.trigger_repo == github.job && inputs.codecov_upload && needs.setup.outputs.py_codecov_platform == matrix.name }} | |
codecov_token: ${{ secrets.CODECOV_UPLOAD_TOKEN }} | |
earthkit: | |
name: earthkit | |
needs: | |
- earthkit-data | |
- cfgrib | |
- multiurl | |
- pdbufr | |
- eccodes-python | |
- eccodes | |
- pyodc | |
- odc | |
- eckit | |
- earthkit-geo | |
- earthkit-meteo | |
- earthkit-regrid | |
- setup | |
- python-qa | |
if: ${{ (always() && !cancelled()) && contains(join(needs.*.result, ','), 'success') && needs.setup.outputs.earthkit_matrix && (needs.setup.outputs.earthkit-data || needs.setup.outputs.cfgrib || needs.setup.outputs.multiurl || needs.setup.outputs.pdbufr || needs.setup.outputs.eccodes-python || needs.setup.outputs.eccodes || needs.setup.outputs.pyodc || needs.setup.outputs.odc || needs.setup.outputs.eckit || needs.setup.outputs.earthkit-geo || needs.setup.outputs.earthkit-meteo || needs.setup.outputs.earthkit-regrid || needs.setup.outputs.earthkit) }} | |
strategy: | |
fail-fast: false | |
matrix: ${{ fromJson(needs.setup.outputs.earthkit_matrix) }} | |
env: | |
DEP_TREE: ${{ needs.setup.outputs.dep_tree }} | |
runs-on: ${{ matrix.labels }} | |
steps: | |
- name: Build dependencies | |
id: build-deps | |
uses: ecmwf-actions/reusable-workflows/build-package-with-config@v2 | |
with: | |
repository: ${{ matrix.owner_repo_ref }} | |
codecov_upload: false | |
build_package_inputs: "repository: ${{ matrix.owner_repo_ref }}" | |
build_config: ${{ matrix.config_path }} | |
build_dependencies: |- | |
${{ needs.setup.outputs.eccodes }} | |
${{ needs.setup.outputs.odc }} | |
${{ needs.setup.outputs.eckit }} | |
github_token: ${{ secrets.GH_REPO_READ_TOKEN }} | |
- uses: ecmwf-actions/reusable-workflows/ci-python@v2 | |
with: | |
lib_path: ${{ steps.build-deps.outputs.lib_path }} | |
python_dependencies: |- | |
${{ needs.setup.outputs.earthkit-data }} | |
${{ needs.setup.outputs.cfgrib }} | |
${{ needs.setup.outputs.multiurl }} | |
${{ needs.setup.outputs.pdbufr }} | |
${{ needs.setup.outputs.eccodes-python }} | |
${{ needs.setup.outputs.pyodc }} | |
${{ needs.setup.outputs.earthkit-geo }} | |
${{ needs.setup.outputs.earthkit-meteo }} | |
${{ needs.setup.outputs.earthkit-regrid }} | |
github_token: ${{ secrets.GH_REPO_READ_TOKEN }} | |
requirements_path: tests/downstream-ci-requirements.txt | |
test_cmd: | |
"_EKD_DIR=$(pwd) && cd .. && python -m pytest ${_EKD_DIR} -vv --cov=. --cov-report=html && cd - | |
" | |
codecov_upload: ${{ needs.setup.outputs.trigger_repo == github.job && inputs.codecov_upload && needs.setup.outputs.py_codecov_platform == matrix.name }} | |
codecov_token: ${{ secrets.CODECOV_UPLOAD_TOKEN }} | |
earthkit-data: | |
name: earthkit-data | |
needs: | |
- cfgrib | |
- multiurl | |
- pdbufr | |
- eccodes-python | |
- eccodes | |
- pyodc | |
- odc | |
- eckit | |
- setup | |
- python-qa | |
if: ${{ (always() && !cancelled()) && contains(join(needs.*.result, ','), 'success') && needs.setup.outputs.earthkit-data_matrix && (needs.setup.outputs.cfgrib || needs.setup.outputs.multiurl || needs.setup.outputs.pdbufr || needs.setup.outputs.eccodes-python || needs.setup.outputs.eccodes || needs.setup.outputs.pyodc || needs.setup.outputs.odc || needs.setup.outputs.eckit || needs.setup.outputs.earthkit-data) }} | |
strategy: | |
fail-fast: false | |
matrix: ${{ fromJson(needs.setup.outputs.earthkit-data_matrix) }} | |
env: | |
DEP_TREE: ${{ needs.setup.outputs.dep_tree }} | |
runs-on: ${{ matrix.labels }} | |
steps: | |
- name: Build dependencies | |
id: build-deps | |
uses: ecmwf-actions/reusable-workflows/build-package-with-config@v2 | |
with: | |
repository: ${{ matrix.owner_repo_ref }} | |
codecov_upload: false | |
build_package_inputs: "repository: ${{ matrix.owner_repo_ref }}" | |
build_config: ${{ matrix.config_path }} | |
build_dependencies: |- | |
${{ needs.setup.outputs.eccodes }} | |
${{ needs.setup.outputs.odc }} | |
${{ needs.setup.outputs.eckit }} | |
github_token: ${{ secrets.GH_REPO_READ_TOKEN }} | |
- uses: ecmwf-actions/reusable-workflows/ci-python@v2 | |
with: | |
lib_path: ${{ steps.build-deps.outputs.lib_path }} | |
python_dependencies: |- | |
${{ needs.setup.outputs.cfgrib }} | |
${{ needs.setup.outputs.multiurl }} | |
${{ needs.setup.outputs.pdbufr }} | |
${{ needs.setup.outputs.eccodes-python }} | |
${{ needs.setup.outputs.pyodc }} | |
github_token: ${{ secrets.GH_REPO_READ_TOKEN }} | |
requirements_path: tests/downstream-ci-requirements.txt | |
test_cmd: | | |
python -m pytest -vv -m 'not notebook and not no_cache_init' --cov=. --cov-report=xml | |
python -m pytest -v -m 'notebook' | |
python -m pytest --forked -vv -m 'no_cache_init' | |
python -m coverage report | |
codecov_upload: ${{ needs.setup.outputs.trigger_repo == github.job && inputs.codecov_upload && needs.setup.outputs.py_codecov_platform == matrix.name }} | |
codecov_token: ${{ secrets.CODECOV_UPLOAD_TOKEN }} | |
earthkit-geo: | |
name: earthkit-geo | |
needs: | |
- setup | |
- python-qa | |
if: ${{ (always() && !cancelled()) && contains(join(needs.*.result, ','), 'success') && needs.setup.outputs.earthkit-geo_matrix && (needs.setup.outputs.earthkit-geo) }} | |
strategy: | |
fail-fast: false | |
matrix: ${{ fromJson(needs.setup.outputs.earthkit-geo_matrix) }} | |
env: | |
DEP_TREE: ${{ needs.setup.outputs.dep_tree }} | |
runs-on: ${{ matrix.labels }} | |
steps: | |
- uses: ecmwf-actions/reusable-workflows/ci-python@v2 | |
with: | |
repository: ${{ matrix.owner_repo_ref }} | |
checkout: true | |
python_dependencies: "" | |
github_token: ${{ secrets.GH_REPO_READ_TOKEN }} | |
requirements_path: tests/downstream-ci-requirements.txt | |
codecov_upload: ${{ needs.setup.outputs.trigger_repo == github.job && inputs.codecov_upload && needs.setup.outputs.py_codecov_platform == matrix.name }} | |
codecov_token: ${{ secrets.CODECOV_UPLOAD_TOKEN }} | |
earthkit-meteo: | |
name: earthkit-meteo | |
needs: | |
- setup | |
- python-qa | |
if: ${{ (always() && !cancelled()) && contains(join(needs.*.result, ','), 'success') && needs.setup.outputs.earthkit-meteo_matrix && (needs.setup.outputs.earthkit-meteo) }} | |
strategy: | |
fail-fast: false | |
matrix: ${{ fromJson(needs.setup.outputs.earthkit-meteo_matrix) }} | |
env: | |
DEP_TREE: ${{ needs.setup.outputs.dep_tree }} | |
runs-on: ${{ matrix.labels }} | |
steps: | |
- uses: ecmwf-actions/reusable-workflows/ci-python@v2 | |
with: | |
repository: ${{ matrix.owner_repo_ref }} | |
checkout: true | |
python_dependencies: "" | |
github_token: ${{ secrets.GH_REPO_READ_TOKEN }} | |
requirements_path: tests/downstream-ci-requirements.txt | |
codecov_upload: ${{ needs.setup.outputs.trigger_repo == github.job && inputs.codecov_upload && needs.setup.outputs.py_codecov_platform == matrix.name }} | |
codecov_token: ${{ secrets.CODECOV_UPLOAD_TOKEN }} | |
earthkit-regrid: | |
name: earthkit-regrid | |
needs: | |
- setup | |
- python-qa | |
if: ${{ (always() && !cancelled()) && contains(join(needs.*.result, ','), 'success') && needs.setup.outputs.earthkit-regrid_matrix && (needs.setup.outputs.earthkit-regrid) }} | |
strategy: | |
fail-fast: false | |
matrix: ${{ fromJson(needs.setup.outputs.earthkit-regrid_matrix) }} | |
env: | |
DEP_TREE: ${{ needs.setup.outputs.dep_tree }} | |
runs-on: ${{ matrix.labels }} | |
steps: | |
- uses: ecmwf-actions/reusable-workflows/ci-python@v2 | |
with: | |
repository: ${{ matrix.owner_repo_ref }} | |
checkout: true | |
python_dependencies: "" | |
github_token: ${{ secrets.GH_REPO_READ_TOKEN }} | |
requirements_path: tests/downstream-ci-requirements.txt | |
codecov_upload: ${{ needs.setup.outputs.trigger_repo == github.job && inputs.codecov_upload && needs.setup.outputs.py_codecov_platform == matrix.name }} | |
codecov_token: ${{ secrets.CODECOV_UPLOAD_TOKEN }} | |
eccodes: | |
name: eccodes | |
needs: | |
- setup | |
- clang-format | |
if: ${{ (always() && !cancelled()) && contains(join(needs.*.result, ','), 'success') && needs.setup.outputs.eccodes_matrix && (needs.setup.outputs.eccodes) }} | |
strategy: | |
fail-fast: false | |
matrix: ${{ fromJson(needs.setup.outputs.eccodes_matrix) }} | |
env: | |
DEP_TREE: ${{ needs.setup.outputs.dep_tree }} | |
runs-on: ${{ matrix.labels }} | |
steps: | |
- uses: ecmwf-actions/reusable-workflows/build-package-with-config@v2 | |
with: | |
repository: ${{ matrix.owner_repo_ref }} | |
build_package_inputs: "repository: ${{ matrix.owner_repo_ref }}" | |
build_config: ${{ matrix.config_path }} | |
build_dependencies: "" | |
github_token: ${{ secrets.GH_REPO_READ_TOKEN }} | |
codecov_token: ${{ secrets.CODECOV_UPLOAD_TOKEN }} | |
codecov_upload: ${{ needs.setup.outputs.trigger_repo == github.job && inputs.codecov_upload }} | |
eccodes-python: | |
name: eccodes-python | |
needs: | |
- eccodes | |
- setup | |
- python-qa | |
if: ${{ (always() && !cancelled()) && contains(join(needs.*.result, ','), 'success') && needs.setup.outputs.eccodes-python_matrix && (needs.setup.outputs.eccodes || needs.setup.outputs.eccodes-python) }} | |
strategy: | |
fail-fast: false | |
matrix: ${{ fromJson(needs.setup.outputs.eccodes-python_matrix) }} | |
env: | |
DEP_TREE: ${{ needs.setup.outputs.dep_tree }} | |
runs-on: ${{ matrix.labels }} | |
steps: | |
- name: Build dependencies | |
id: build-deps | |
uses: ecmwf-actions/reusable-workflows/build-package-with-config@v2 | |
with: | |
repository: ${{ matrix.owner_repo_ref }} | |
codecov_upload: false | |
build_package_inputs: "repository: ${{ matrix.owner_repo_ref }}" | |
build_config: ${{ matrix.config_path }} | |
build_dependencies: ${{ needs.setup.outputs.eccodes }} | |
github_token: ${{ secrets.GH_REPO_READ_TOKEN }} | |
- uses: ecmwf-actions/reusable-workflows/ci-python@v2 | |
with: | |
lib_path: ${{ steps.build-deps.outputs.lib_path }} | |
python_dependencies: "" | |
github_token: ${{ secrets.GH_REPO_READ_TOKEN }} | |
codecov_upload: ${{ needs.setup.outputs.trigger_repo == github.job && inputs.codecov_upload && needs.setup.outputs.py_codecov_platform == matrix.name }} | |
codecov_token: ${{ secrets.CODECOV_UPLOAD_TOKEN }} | |
ecflow: | |
name: ecflow | |
needs: | |
- setup | |
- clang-format | |
if: ${{ (always() && !cancelled()) && contains(join(needs.*.result, ','), 'success') && needs.setup.outputs.ecflow_matrix && (needs.setup.outputs.ecflow) }} | |
strategy: | |
fail-fast: false | |
matrix: ${{ fromJson(needs.setup.outputs.ecflow_matrix) }} | |
env: | |
DEP_TREE: ${{ needs.setup.outputs.dep_tree }} | |
runs-on: ${{ matrix.labels }} | |
steps: | |
- uses: ecmwf-actions/reusable-workflows/build-package-with-config@v2 | |
with: | |
repository: ${{ matrix.owner_repo_ref }} | |
build_package_inputs: "repository: ${{ matrix.owner_repo_ref }}" | |
build_config: ${{ matrix.config_path }} | |
build_dependencies: "" | |
github_token: ${{ secrets.GH_REPO_READ_TOKEN }} | |
codecov_token: ${{ secrets.CODECOV_UPLOAD_TOKEN }} | |
codecov_upload: ${{ needs.setup.outputs.trigger_repo == github.job && inputs.codecov_upload }} | |
ecflow-light: | |
name: ecflow-light | |
needs: | |
- eckit | |
- setup | |
- clang-format | |
if: ${{ (always() && !cancelled()) && contains(join(needs.*.result, ','), 'success') && needs.setup.outputs.ecflow-light_matrix && (needs.setup.outputs.eckit || needs.setup.outputs.ecflow-light) }} | |
strategy: | |
fail-fast: false | |
matrix: ${{ fromJson(needs.setup.outputs.ecflow-light_matrix) }} | |
env: | |
DEP_TREE: ${{ needs.setup.outputs.dep_tree }} | |
runs-on: ${{ matrix.labels }} | |
steps: | |
- uses: ecmwf-actions/reusable-workflows/build-package-with-config@v2 | |
with: | |
repository: ${{ matrix.owner_repo_ref }} | |
build_package_inputs: "repository: ${{ matrix.owner_repo_ref }}" | |
build_config: ${{ matrix.config_path }} | |
build_dependencies: ${{ needs.setup.outputs.eckit }} | |
github_token: ${{ secrets.GH_REPO_READ_TOKEN }} | |
codecov_token: ${{ secrets.CODECOV_UPLOAD_TOKEN }} | |
codecov_upload: ${{ needs.setup.outputs.trigger_repo == github.job && inputs.codecov_upload }} | |
eckit: | |
name: eckit | |
needs: | |
- setup | |
- clang-format | |
if: ${{ (always() && !cancelled()) && contains(join(needs.*.result, ','), 'success') && needs.setup.outputs.eckit_matrix && (needs.setup.outputs.eckit) }} | |
strategy: | |
fail-fast: false | |
matrix: ${{ fromJson(needs.setup.outputs.eckit_matrix) }} | |
env: | |
DEP_TREE: ${{ needs.setup.outputs.dep_tree }} | |
runs-on: ${{ matrix.labels }} | |
steps: | |
- uses: ecmwf-actions/reusable-workflows/build-package-with-config@v2 | |
with: | |
repository: ${{ matrix.owner_repo_ref }} | |
build_package_inputs: "repository: ${{ matrix.owner_repo_ref }}" | |
build_config: ${{ matrix.config_path }} | |
build_dependencies: "" | |
github_token: ${{ secrets.GH_REPO_READ_TOKEN }} | |
codecov_token: ${{ secrets.CODECOV_UPLOAD_TOKEN }} | |
codecov_upload: ${{ needs.setup.outputs.trigger_repo == github.job && inputs.codecov_upload }} | |
fckit: | |
name: fckit | |
needs: | |
- eckit | |
- setup | |
- clang-format | |
if: ${{ (always() && !cancelled()) && contains(join(needs.*.result, ','), 'success') && needs.setup.outputs.fckit_matrix && (needs.setup.outputs.eckit || needs.setup.outputs.fckit) }} | |
strategy: | |
fail-fast: false | |
matrix: ${{ fromJson(needs.setup.outputs.fckit_matrix) }} | |
env: | |
DEP_TREE: ${{ needs.setup.outputs.dep_tree }} | |
runs-on: ${{ matrix.labels }} | |
steps: | |
- uses: ecmwf-actions/reusable-workflows/build-package-with-config@v2 | |
with: | |
repository: ${{ matrix.owner_repo_ref }} | |
build_package_inputs: "repository: ${{ matrix.owner_repo_ref }}" | |
build_config: ${{ matrix.config_path }} | |
build_dependencies: ${{ needs.setup.outputs.eckit }} | |
github_token: ${{ secrets.GH_REPO_READ_TOKEN }} | |
codecov_token: ${{ secrets.CODECOV_UPLOAD_TOKEN }} | |
codecov_upload: ${{ needs.setup.outputs.trigger_repo == github.job && inputs.codecov_upload }} | |
fdb: | |
name: fdb | |
needs: | |
- metkit | |
- eccodes | |
- eckit | |
- setup | |
- clang-format | |
if: ${{ (always() && !cancelled()) && contains(join(needs.*.result, ','), 'success') && needs.setup.outputs.fdb_matrix && (needs.setup.outputs.metkit || needs.setup.outputs.eccodes || needs.setup.outputs.eckit || needs.setup.outputs.fdb) }} | |
strategy: | |
fail-fast: false | |
matrix: ${{ fromJson(needs.setup.outputs.fdb_matrix) }} | |
env: | |
DEP_TREE: ${{ needs.setup.outputs.dep_tree }} | |
runs-on: ${{ matrix.labels }} | |
steps: | |
- uses: ecmwf-actions/reusable-workflows/build-package-with-config@v2 | |
with: | |
repository: ${{ matrix.owner_repo_ref }} | |
build_package_inputs: "repository: ${{ matrix.owner_repo_ref }}" | |
build_config: ${{ matrix.config_path }} | |
build_dependencies: |- | |
${{ needs.setup.outputs.metkit }} | |
${{ needs.setup.outputs.eccodes }} | |
${{ needs.setup.outputs.eckit }} | |
github_token: ${{ secrets.GH_REPO_READ_TOKEN }} | |
codecov_token: ${{ secrets.CODECOV_UPLOAD_TOKEN }} | |
codecov_upload: ${{ needs.setup.outputs.trigger_repo == github.job && inputs.codecov_upload }} | |
metkit: | |
name: metkit | |
needs: | |
- eccodes | |
- eckit | |
- setup | |
- clang-format | |
if: ${{ (always() && !cancelled()) && contains(join(needs.*.result, ','), 'success') && needs.setup.outputs.metkit_matrix && (needs.setup.outputs.eccodes || needs.setup.outputs.eckit || needs.setup.outputs.metkit) }} | |
strategy: | |
fail-fast: false | |
matrix: ${{ fromJson(needs.setup.outputs.metkit_matrix) }} | |
env: | |
DEP_TREE: ${{ needs.setup.outputs.dep_tree }} | |
runs-on: ${{ matrix.labels }} | |
steps: | |
- uses: ecmwf-actions/reusable-workflows/build-package-with-config@v2 | |
with: | |
repository: ${{ matrix.owner_repo_ref }} | |
build_package_inputs: "repository: ${{ matrix.owner_repo_ref }}" | |
build_config: ${{ matrix.config_path }} | |
build_dependencies: |- | |
${{ needs.setup.outputs.eccodes }} | |
${{ needs.setup.outputs.eckit }} | |
github_token: ${{ secrets.GH_REPO_READ_TOKEN }} | |
codecov_token: ${{ secrets.CODECOV_UPLOAD_TOKEN }} | |
codecov_upload: ${{ needs.setup.outputs.trigger_repo == github.job && inputs.codecov_upload }} | |
mir: | |
name: mir | |
needs: | |
- atlas | |
- fckit | |
- eckit | |
- eccodes | |
- setup | |
- clang-format | |
if: ${{ (always() && !cancelled()) && contains(join(needs.*.result, ','), 'success') && needs.setup.outputs.mir_matrix && (needs.setup.outputs.atlas || needs.setup.outputs.fckit || needs.setup.outputs.eckit || needs.setup.outputs.eccodes || needs.setup.outputs.mir) }} | |
strategy: | |
fail-fast: false | |
matrix: ${{ fromJson(needs.setup.outputs.mir_matrix) }} | |
env: | |
DEP_TREE: ${{ needs.setup.outputs.dep_tree }} | |
runs-on: ${{ matrix.labels }} | |
steps: | |
- uses: ecmwf-actions/reusable-workflows/build-package-with-config@v2 | |
with: | |
repository: ${{ matrix.owner_repo_ref }} | |
build_package_inputs: "repository: ${{ matrix.owner_repo_ref }}" | |
build_config: ${{ matrix.config_path }} | |
build_dependencies: |- | |
${{ needs.setup.outputs.atlas }} | |
${{ needs.setup.outputs.fckit }} | |
${{ needs.setup.outputs.eckit }} | |
${{ needs.setup.outputs.eccodes }} | |
github_token: ${{ secrets.GH_REPO_READ_TOKEN }} | |
codecov_token: ${{ secrets.CODECOV_UPLOAD_TOKEN }} | |
codecov_upload: ${{ needs.setup.outputs.trigger_repo == github.job && inputs.codecov_upload }} | |
multio: | |
name: multio | |
needs: | |
- fdb | |
- metkit | |
- mir | |
- atlas | |
- fckit | |
- eckit | |
- eccodes | |
- setup | |
- clang-format | |
if: ${{ (always() && !cancelled()) && contains(join(needs.*.result, ','), 'success') && needs.setup.outputs.multio_matrix && (needs.setup.outputs.fdb || needs.setup.outputs.metkit || needs.setup.outputs.mir || needs.setup.outputs.atlas || needs.setup.outputs.fckit || needs.setup.outputs.eckit || needs.setup.outputs.eccodes || needs.setup.outputs.multio) }} | |
strategy: | |
fail-fast: false | |
matrix: ${{ fromJson(needs.setup.outputs.multio_matrix) }} | |
env: | |
DEP_TREE: ${{ needs.setup.outputs.dep_tree }} | |
runs-on: ${{ matrix.labels }} | |
steps: | |
- uses: ecmwf-actions/reusable-workflows/build-package-with-config@v2 | |
with: | |
repository: ${{ matrix.owner_repo_ref }} | |
build_package_inputs: "repository: ${{ matrix.owner_repo_ref }}" | |
build_config: ${{ matrix.config_path }} | |
build_dependencies: |- | |
${{ needs.setup.outputs.fdb }} | |
${{ needs.setup.outputs.metkit }} | |
${{ needs.setup.outputs.mir }} | |
${{ needs.setup.outputs.atlas }} | |
${{ needs.setup.outputs.fckit }} | |
${{ needs.setup.outputs.eckit }} | |
${{ needs.setup.outputs.eccodes }} | |
github_token: ${{ secrets.GH_REPO_READ_TOKEN }} | |
codecov_token: ${{ secrets.CODECOV_UPLOAD_TOKEN }} | |
codecov_upload: ${{ needs.setup.outputs.trigger_repo == github.job && inputs.codecov_upload }} | |
multiurl: | |
name: multiurl | |
needs: | |
- setup | |
- python-qa | |
if: ${{ (always() && !cancelled()) && contains(join(needs.*.result, ','), 'success') && needs.setup.outputs.multiurl_matrix && (needs.setup.outputs.multiurl) }} | |
strategy: | |
fail-fast: false | |
matrix: ${{ fromJson(needs.setup.outputs.multiurl_matrix) }} | |
env: | |
DEP_TREE: ${{ needs.setup.outputs.dep_tree }} | |
runs-on: ${{ matrix.labels }} | |
steps: | |
- uses: ecmwf-actions/reusable-workflows/ci-python@v2 | |
with: | |
repository: ${{ matrix.owner_repo_ref }} | |
checkout: true | |
python_dependencies: "" | |
github_token: ${{ secrets.GH_REPO_READ_TOKEN }} | |
codecov_upload: ${{ needs.setup.outputs.trigger_repo == github.job && inputs.codecov_upload && needs.setup.outputs.py_codecov_platform == matrix.name }} | |
codecov_token: ${{ secrets.CODECOV_UPLOAD_TOKEN }} | |
odc: | |
name: odc | |
needs: | |
- eckit | |
- setup | |
- clang-format | |
if: ${{ (always() && !cancelled()) && contains(join(needs.*.result, ','), 'success') && needs.setup.outputs.odc_matrix && (needs.setup.outputs.eckit || needs.setup.outputs.odc) }} | |
strategy: | |
fail-fast: false | |
matrix: ${{ fromJson(needs.setup.outputs.odc_matrix) }} | |
env: | |
DEP_TREE: ${{ needs.setup.outputs.dep_tree }} | |
runs-on: ${{ matrix.labels }} | |
steps: | |
- uses: ecmwf-actions/reusable-workflows/build-package-with-config@v2 | |
with: | |
repository: ${{ matrix.owner_repo_ref }} | |
build_package_inputs: "repository: ${{ matrix.owner_repo_ref }}" | |
build_config: ${{ matrix.config_path }} | |
build_dependencies: ${{ needs.setup.outputs.eckit }} | |
github_token: ${{ secrets.GH_REPO_READ_TOKEN }} | |
codecov_token: ${{ secrets.CODECOV_UPLOAD_TOKEN }} | |
codecov_upload: ${{ needs.setup.outputs.trigger_repo == github.job && inputs.codecov_upload }} | |
pdbufr: | |
name: pdbufr | |
needs: | |
- eccodes-python | |
- eccodes | |
- setup | |
- python-qa | |
if: ${{ (always() && !cancelled()) && contains(join(needs.*.result, ','), 'success') && needs.setup.outputs.pdbufr_matrix && (needs.setup.outputs.eccodes-python || needs.setup.outputs.eccodes || needs.setup.outputs.pdbufr) }} | |
strategy: | |
fail-fast: false | |
matrix: ${{ fromJson(needs.setup.outputs.pdbufr_matrix) }} | |
env: | |
DEP_TREE: ${{ needs.setup.outputs.dep_tree }} | |
runs-on: ${{ matrix.labels }} | |
steps: | |
- name: Build dependencies | |
id: build-deps | |
uses: ecmwf-actions/reusable-workflows/build-package-with-config@v2 | |
with: | |
repository: ${{ matrix.owner_repo_ref }} | |
codecov_upload: false | |
build_package_inputs: "repository: ${{ matrix.owner_repo_ref }}" | |
build_config: ${{ matrix.config_path }} | |
build_dependencies: ${{ needs.setup.outputs.eccodes }} | |
github_token: ${{ secrets.GH_REPO_READ_TOKEN }} | |
- uses: ecmwf-actions/reusable-workflows/ci-python@v2 | |
with: | |
lib_path: ${{ steps.build-deps.outputs.lib_path }} | |
python_dependencies: ${{ needs.setup.outputs.eccodes-python }} | |
github_token: ${{ secrets.GH_REPO_READ_TOKEN }} | |
requirements_path: tests/downstream-ci-requirements.txt | |
test_cmd: | | |
python -m pytest --cov=./ --cov-report=xml -k 'not test_notebooks' | |
python -m pytest -v -k 'test_notebooks' | |
codecov_upload: ${{ needs.setup.outputs.trigger_repo == github.job && inputs.codecov_upload && needs.setup.outputs.py_codecov_platform == matrix.name }} | |
codecov_token: ${{ secrets.CODECOV_UPLOAD_TOKEN }} | |
plume: | |
name: plume | |
needs: | |
- atlas | |
- fckit | |
- eckit | |
- setup | |
- clang-format | |
if: ${{ (always() && !cancelled()) && contains(join(needs.*.result, ','), 'success') && needs.setup.outputs.plume_matrix && (needs.setup.outputs.atlas || needs.setup.outputs.fckit || needs.setup.outputs.eckit || needs.setup.outputs.plume) }} | |
strategy: | |
fail-fast: false | |
matrix: ${{ fromJson(needs.setup.outputs.plume_matrix) }} | |
env: | |
DEP_TREE: ${{ needs.setup.outputs.dep_tree }} | |
runs-on: ${{ matrix.labels }} | |
steps: | |
- uses: ecmwf-actions/reusable-workflows/build-package-with-config@v2 | |
with: | |
repository: ${{ matrix.owner_repo_ref }} | |
build_package_inputs: "repository: ${{ matrix.owner_repo_ref }}" | |
build_config: ${{ matrix.config_path }} | |
build_dependencies: |- | |
${{ needs.setup.outputs.atlas }} | |
${{ needs.setup.outputs.fckit }} | |
${{ needs.setup.outputs.eckit }} | |
github_token: ${{ secrets.GH_REPO_READ_TOKEN }} | |
codecov_token: ${{ secrets.CODECOV_UPLOAD_TOKEN }} | |
codecov_upload: ${{ needs.setup.outputs.trigger_repo == github.job && inputs.codecov_upload }} | |
pyfdb: | |
name: pyfdb | |
needs: | |
- fdb | |
- metkit | |
- eccodes | |
- eckit | |
- setup | |
- python-qa | |
if: ${{ (always() && !cancelled()) && contains(join(needs.*.result, ','), 'success') && needs.setup.outputs.pyfdb_matrix && (needs.setup.outputs.fdb || needs.setup.outputs.metkit || needs.setup.outputs.eccodes || needs.setup.outputs.eckit || needs.setup.outputs.pyfdb) }} | |
strategy: | |
fail-fast: false | |
matrix: ${{ fromJson(needs.setup.outputs.pyfdb_matrix) }} | |
env: | |
DEP_TREE: ${{ needs.setup.outputs.dep_tree }} | |
FDB5_CONFIG: | |
'{"type":"local","engine":"toc","schema":"${{ github.workspace }}/tests/default_fdb_schema","spaces":[{"handler":"Default","roots":[{"path":"${{ github.workspace }}/data/fdb"}]}]} | |
' | |
runs-on: ${{ matrix.labels }} | |
steps: | |
- name: Build dependencies | |
id: build-deps | |
uses: ecmwf-actions/reusable-workflows/build-package-with-config@v2 | |
with: | |
repository: ${{ matrix.owner_repo_ref }} | |
codecov_upload: false | |
build_package_inputs: "repository: ${{ matrix.owner_repo_ref }}" | |
build_config: ${{ matrix.config_path }} | |
build_dependencies: |- | |
${{ needs.setup.outputs.fdb }} | |
${{ needs.setup.outputs.metkit }} | |
${{ needs.setup.outputs.eccodes }} | |
${{ needs.setup.outputs.eckit }} | |
github_token: ${{ secrets.GH_REPO_READ_TOKEN }} | |
- run: mkdir -p data/fdb | |
- uses: ecmwf-actions/reusable-workflows/ci-python@v2 | |
with: | |
lib_path: ${{ steps.build-deps.outputs.lib_path }} | |
python_dependencies: "" | |
github_token: ${{ secrets.GH_REPO_READ_TOKEN }} | |
codecov_upload: ${{ needs.setup.outputs.trigger_repo == github.job && inputs.codecov_upload && needs.setup.outputs.py_codecov_platform == matrix.name }} | |
codecov_token: ${{ secrets.CODECOV_UPLOAD_TOKEN }} | |
pyodc: | |
name: pyodc | |
needs: | |
- odc | |
- eckit | |
- setup | |
- python-qa | |
if: ${{ (always() && !cancelled()) && contains(join(needs.*.result, ','), 'success') && needs.setup.outputs.pyodc_matrix && (needs.setup.outputs.odc || needs.setup.outputs.eckit || needs.setup.outputs.pyodc) }} | |
strategy: | |
fail-fast: false | |
matrix: ${{ fromJson(needs.setup.outputs.pyodc_matrix) }} | |
env: | |
DEP_TREE: ${{ needs.setup.outputs.dep_tree }} | |
runs-on: ${{ matrix.labels }} | |
steps: | |
- name: Build dependencies | |
id: build-deps | |
uses: ecmwf-actions/reusable-workflows/build-package-with-config@v2 | |
with: | |
repository: ${{ matrix.owner_repo_ref }} | |
codecov_upload: false | |
build_package_inputs: "repository: ${{ matrix.owner_repo_ref }}" | |
build_config: ${{ matrix.config_path }} | |
build_dependencies: |- | |
${{ needs.setup.outputs.odc }} | |
${{ needs.setup.outputs.eckit }} | |
github_token: ${{ secrets.GH_REPO_READ_TOKEN }} | |
- uses: ecmwf-actions/reusable-workflows/ci-python@v2 | |
with: | |
lib_path: ${{ steps.build-deps.outputs.lib_path }} | |
python_dependencies: "" | |
github_token: ${{ secrets.GH_REPO_READ_TOKEN }} | |
codecov_upload: ${{ needs.setup.outputs.trigger_repo == github.job && inputs.codecov_upload && needs.setup.outputs.py_codecov_platform == matrix.name }} | |
codecov_token: ${{ secrets.CODECOV_UPLOAD_TOKEN }} | |
skinnywms: | |
name: skinnywms | |
needs: | |
- setup | |
- python-qa | |
if: ${{ (always() && !cancelled()) && contains(join(needs.*.result, ','), 'success') && needs.setup.outputs.skinnywms_matrix && (needs.setup.outputs.skinnywms) }} | |
strategy: | |
fail-fast: false | |
matrix: ${{ fromJson(needs.setup.outputs.skinnywms_matrix) }} | |
env: | |
DEP_TREE: ${{ needs.setup.outputs.dep_tree }} | |
runs-on: ${{ matrix.labels }} | |
steps: | |
- uses: ecmwf-actions/reusable-workflows/ci-python@v2 | |
with: | |
repository: ${{ matrix.owner_repo_ref }} | |
checkout: true | |
python_dependencies: "" | |
github_token: ${{ secrets.GH_REPO_READ_TOKEN }} | |
codecov_upload: ${{ needs.setup.outputs.trigger_repo == github.job && inputs.codecov_upload && needs.setup.outputs.py_codecov_platform == matrix.name }} | |
codecov_token: ${{ secrets.CODECOV_UPLOAD_TOKEN }} | |
thermofeel: | |
name: thermofeel | |
needs: | |
- setup | |
- python-qa | |
if: ${{ (always() && !cancelled()) && contains(join(needs.*.result, ','), 'success') && needs.setup.outputs.thermofeel_matrix && (needs.setup.outputs.thermofeel) }} | |
strategy: | |
fail-fast: false | |
matrix: ${{ fromJson(needs.setup.outputs.thermofeel_matrix) }} | |
env: | |
DEP_TREE: ${{ needs.setup.outputs.dep_tree }} | |
runs-on: ${{ matrix.labels }} | |
steps: | |
- uses: ecmwf-actions/reusable-workflows/ci-python@v2 | |
with: | |
repository: ${{ matrix.owner_repo_ref }} | |
checkout: true | |
python_dependencies: "" | |
github_token: ${{ secrets.GH_REPO_READ_TOKEN }} | |
codecov_upload: ${{ needs.setup.outputs.trigger_repo == github.job && inputs.codecov_upload && needs.setup.outputs.py_codecov_platform == matrix.name }} | |
codecov_token: ${{ secrets.CODECOV_UPLOAD_TOKEN }} | |
troika: | |
name: troika | |
needs: | |
- setup | |
- python-qa | |
if: ${{ (always() && !cancelled()) && contains(join(needs.*.result, ','), 'success') && needs.setup.outputs.troika_matrix && (needs.setup.outputs.troika) }} | |
strategy: | |
fail-fast: false | |
matrix: ${{ fromJson(needs.setup.outputs.troika_matrix) }} | |
env: | |
DEP_TREE: ${{ needs.setup.outputs.dep_tree }} | |
runs-on: ${{ matrix.labels }} | |
steps: | |
- uses: ecmwf-actions/reusable-workflows/ci-python@v2 | |
with: | |
repository: ${{ matrix.owner_repo_ref }} | |
checkout: true | |
python_dependencies: "" | |
github_token: ${{ secrets.GH_REPO_READ_TOKEN }} | |
test_cmd: | | |
pytest --cov=./ --cov-report=xml --basetemp=$RUNNER_TEMP/pytest_tmp | |
python -m coverage report | |
codecov_upload: ${{ needs.setup.outputs.trigger_repo == github.job && inputs.codecov_upload && needs.setup.outputs.py_codecov_platform == matrix.name }} | |
codecov_token: ${{ secrets.CODECOV_UPLOAD_TOKEN }} | |
cascade: | |
name: cascade | |
needs: | |
- setup | |
- python-qa | |
if: ${{ (always() && !cancelled()) && contains(join(needs.*.result, ','), 'success') && needs.setup.outputs.cascade_matrix && (needs.setup.outputs.cascade) }} | |
strategy: | |
fail-fast: false | |
matrix: ${{ fromJson(needs.setup.outputs.cascade_matrix) }} | |
env: | |
DEP_TREE: ${{ needs.setup.outputs.dep_tree }} | |
runs-on: ${{ matrix.labels }} | |
steps: | |
- uses: ecmwf-actions/reusable-workflows/ci-python@v2 | |
with: | |
repository: ${{ matrix.owner_repo_ref }} | |
checkout: true | |
python_dependencies: "" | |
github_token: ${{ secrets.GH_REPO_READ_TOKEN }} | |
codecov_upload: ${{ needs.setup.outputs.trigger_repo == github.job && inputs.codecov_upload && needs.setup.outputs.py_codecov_platform == matrix.name }} | |
codecov_token: ${{ secrets.CODECOV_UPLOAD_TOKEN }} |