Restructure CI to use reusable workflow (#455) #847
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
# SPDX-License-Identifier: BSD-3-Clause | |
# Copyright (c) Contributors to the OpenEXR Project. | |
# The CI workflow uses steps defined in ci_steps.yml, via the "uses:" | |
# directive. Linux, macOS, and Windows all share a common set of | |
# configure/build/validate steps. | |
name: CI | |
on: | |
push: | |
paths: | |
- '**' | |
- '!**.md' | |
- '!.github/workflows/**' | |
- '.github/workflows/ci_workflow.yml' | |
- '.github/workflows/ci_steps.yml' | |
pull_request: | |
paths: | |
- '**' | |
- '!**.md' | |
- '!.github/workflows/**' | |
- '.github/workflows/ci_workflow.yml' | |
- '.github/workflows/ci_steps.yml' | |
permissions: | |
contents: read | |
# NOTE: All jobs have a "build" number that appears in the "jobs" | |
# listing on the GitHub actions page. This build number also | |
# identifies the reference install manifest in | |
# share/ci/install_manifest. The validate_install.py script compares | |
# the job's generated install_manifest.txt to the reference file to | |
# validate that the proper files have been installed. | |
# | |
# If you add jobs, you must add a corresponding | |
# share/ci/install_manifest file. | |
jobs: | |
linux: | |
name: 'Linux.${{ matrix.build}}: ${{ matrix.label }}' | |
uses: ./.github/workflows/ci_steps.yml | |
with: | |
# Set values for the "inputs:" as defined in ci_steps.yml | |
# Note the defaults provided here for the builds that don't specify | |
# values. | |
os: ubuntu-latest | |
build: ${{ matrix.build }} | |
# DockerHub: https://hub.docker.com/u/aswf | |
# Source: https://github.com/AcademySoftwareFoundation/aswf-docker | |
container: aswf/ci-openexr:${{ matrix.vfx-cy || '2024' }} | |
cxx-standard: ${{ matrix.cxx-standard || '17' }} | |
cxx-compiler: ${{ matrix.cxx-compiler || 'g++' }} | |
cc-compiler: ${{ matrix.cc-compiler || 'gcc' }} | |
build-type: ${{ matrix.build-type || 'Release' }} | |
python: ${{ matrix.python || 'ON' }} | |
pybind11: ${{ matrix.pybind11 || 'ON' }} | |
BUILD_SHARED_LIBS: ${{ matrix.BUILD_SHARED_LIBS || 'ON' }} | |
IMATH_INSTALL_PKG_CONFIG: ${{ matrix.IMATH_INSTALL_PKG_CONFIG || 'ON' }} | |
BUILD_TESTING: ${{ matrix.BUILD_TESTING || 'ON' }} | |
namespace: ${{ matrix.namespace }} | |
validate_install: ${{ matrix.validate_install || 'ON' }} | |
strategy: | |
matrix: | |
include: | |
- build: 1 | |
label: Release | |
- build: 2 | |
label: Debug | |
build-type: Debug | |
- build: 3 | |
label: static | |
BUILD_SHARED_LIBS: 'OFF' | |
- build: 4 | |
label: pkgconfig=OFF, testing=OFF, python=OFF | |
IMATH_INSTALL_PKG_CONFIG: 'OFF' | |
BUILD_TESTING: 'OFF' | |
python: 'OFF' | |
pybind11: 'OFF' | |
- build: 5 | |
label: custom namespace | |
namespace: 'TEST_NAMESPACE' | |
- build: 6 | |
label: clang | |
cxx-compiler: clang++ | |
cc-compiler: clang | |
- build: 7 | |
label: vfx2023 | |
vfx-cy: 2023 | |
macOS: | |
name: 'macOS.${{ matrix.build}}: ${{ matrix.label }}' | |
uses: ./.github/workflows/ci_steps.yml | |
with: | |
# Set values for the "inputs:" as defined in ci_steps.yml | |
# Note the defaults provided here for the builds that don't specify | |
# values. | |
os: ${{ matrix.os || 'macos-14' }} | |
build: ${{ matrix.build }} | |
cxx-standard: ${{ matrix.cxx-standard || '17' }} | |
build-type: ${{ matrix.build-type || 'Release' }} | |
python: ${{ matrix.python || 'OFF' }} | |
pybind11: ${{ matrix.pybind11 || 'OFF' }} | |
BUILD_SHARED_LIBS: ${{ matrix.BUILD_SHARED_LIBS || 'ON' }} | |
IMATH_INSTALL_PKG_CONFIG: ${{ matrix.IMATH_INSTALL_PKG_CONFIG || 'ON' }} | |
BUILD_TESTING: ${{ matrix.BUILD_TESTING || 'ON' }} | |
validate_install: ${{ matrix.validate_install || 'ON' }} | |
strategy: | |
matrix: | |
include: | |
- build: 1 | |
label: Release | |
- build: 2 | |
label: Debug | |
build-type: Debug | |
- build: 3 | |
label: static | |
BUILD_SHARED_LIBS: 'OFF' | |
- build: 4 | |
label: pkgconfig=OFF, testing=OFF | |
IMATH_INSTALL_PKG_CONFIG: 'OFF' | |
BUILD_TESTING: 'OFF' | |
- build: 5 | |
label: macos-13 | |
os: macos-13 | |
windows: | |
name: 'Windows.${{ matrix.build}}: ${{ matrix.label }}' | |
uses: ./.github/workflows/ci_steps.yml | |
with: | |
# Set values for the "inputs:" as defined in ci_steps.yml | |
# Note the defaults provided here for the builds that don't specify | |
# values. | |
os: ${{ matrix.os || 'windows-2022' }} | |
build: ${{ matrix.build }} | |
cxx-standard: ${{ matrix.cxx-standard || '17' }} | |
build-type: ${{ matrix.build-type || 'Release' }} | |
python: ${{ matrix.python || 'OFF' }} | |
pybind11: ${{ matrix.pybind11 || 'OFF' }} | |
BUILD_SHARED_LIBS: ${{ matrix.BUILD_SHARED_LIBS || 'ON' }} | |
IMATH_INSTALL_PKG_CONFIG: ${{ matrix.IMATH_INSTALL_PKG_CONFIG || 'ON' }} | |
BUILD_TESTING: ${{ matrix.BUILD_TESTING || 'ON' }} | |
validate_install: ${{ matrix.validate_install || 'ON' }} | |
strategy: | |
matrix: | |
include: | |
- build: 1 | |
label: Release | |
- build: 2 | |
label: Debug | |
build-type: Debug | |
- build: 3 | |
label: static | |
BUILD_SHARED_LIBS: 'OFF' | |
- build: 5 | |
label: pkgconfig=OFF, testing=OFF | |
IMATH_INSTALL_PKG_CONFIG: 'OFF' | |
BUILD_TESTING: 'OFF' | |
- build: 6 | |
label: vfx2022 | |
os: windows-2019 | |