Restructure CI to use reusable steps, and add new checks #2290
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
# 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 | |
# Run on all changes except: | |
# - markdown/doc changes | |
# - changes to the website, *except* for "website/src", since that | |
# code needs validation. The website has a separate workflow | |
# - changes to the bazel config (it has its own workflow | |
# - changes to the python bindings (they have their own workflow) | |
# - changes to workflows other than this one | |
on: | |
push: | |
paths: | |
- '**' | |
- '!**.md' | |
- '!website/**' | |
- 'website/src/**' | |
- '!bazel/**' | |
- '!src/wrappers/**' | |
- '!.github/workflows/**' | |
- '.github/workflows/ci_workflow.yml' | |
- '.github/workflows/ci_steps.yml' | |
pull_request: | |
paths: | |
- '**' | |
- '!**.md' | |
- '!website/**' | |
- 'website/src/**' | |
- '!bazel/**' | |
- '!src/wrappers/**' | |
- '!.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' }} | |
BUILD_SHARED_LIBS: ${{ matrix.BUILD_SHARED_LIBS || 'ON' }} | |
OPENEXR_ENABLE_THREADING: ${{ matrix.OPENEXR_ENABLE_THREADING || 'ON' }} | |
OPENEXR_INSTALL_PKG_CONFIG: ${{ matrix.OPENEXR_INSTALL_PKG_CONFIG || 'ON' }} | |
OPENEXR_INSTALL_DOCS: ${{ matrix.OPENEXR_INSTALL_DOCS || 'ON' }} | |
OPENEXR_BUILD_EXAMPLES: ${{ matrix.OPENEXR_BUILD_EXAMPLES || 'ON' }} | |
OPENEXR_BUILD_TOOLS: ${{ matrix.OPENEXR_BUILD_TOOLS || 'ON' }} | |
OPENEXR_FORCE_INTERNAL_IMATH: ${{ matrix.OPENEXR_FORCE_INTERNAL_IMATH || 'OFF' }} | |
OPENEXR_FORCE_INTERNAL_DEFLATE: ${{ matrix.OPENEXR_FORCE_INTERNAL_DEFLATE || 'OFF' }} | |
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: threads=OFF | |
OPENEXR_ENABLE_THREADING: 'OFF' | |
- build: 5 | |
label: pkgconfig=OFF, examples=OFF, tools=OFF, docs=OFF, internal deflate | |
OPENEXR_INSTALL_PKG_CONFIG: 'OFF' | |
OPENEXR_INSTALL_DOCS: 'OFF' | |
OPENEXR_BUILD_EXAMPLES: 'OFF' | |
OPENEXR_BUILD_TOOLS: 'OFF' | |
OPENEXR_FORCE_INTERNAL_IMATH: 'ON' | |
OPENEXR_FORCE_INTERNAL_DEFLATE: 'ON' | |
BUILD_TESTING: 'OFF' | |
- build: 6 | |
label: custom namespace | |
namespace: 'TEST_NAMESPACE' | |
- build: 7 | |
label: clang | |
cxx-compiler: clang++ | |
cc-compiler: clang | |
- build: 8 | |
label: vfx2023 | |
vfx-cy: 2023 | |
- build: 9 | |
label: vfx2022 | |
vfx-cy: 2022 | |
- build: 10 | |
label: vfx2021 | |
vfx-cy: 2021 | |
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' }} | |
BUILD_SHARED_LIBS: ${{ matrix.BUILD_SHARED_LIBS || 'ON' }} | |
OPENEXR_ENABLE_THREADING: ${{ matrix.OPENEXR_ENABLE_THREADING || 'ON' }} | |
OPENEXR_INSTALL_PKG_CONFIG: ${{ matrix.OPENEXR_INSTALL_PKG_CONFIG || 'ON' }} | |
OPENEXR_INSTALL_DOCS: ${{ matrix.OPENEXR_INSTALL_DOCS || 'ON' }} | |
OPENEXR_BUILD_EXAMPLES: ${{ matrix.OPENEXR_BUILD_EXAMPLES || 'ON' }} | |
OPENEXR_BUILD_TOOLS: ${{ matrix.OPENEXR_BUILD_TOOLS || 'ON' }} | |
OPENEXR_FORCE_INTERNAL_IMATH: ${{ matrix.OPENEXR_FORCE_INTERNAL_IMATH || 'OFF' }} | |
OPENEXR_FORCE_INTERNAL_DEFLATE: ${{ matrix.OPENEXR_FORCE_INTERNAL_DEFLATE || 'OFF' }} | |
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: threads=OFF | |
OPENEXR_ENABLE_THREADING: 'OFF' | |
- build: 5 | |
label: pkgconfig=OFF, examples=OFF, tools=OFF, docs=OFF, internal imath+deflate | |
OPENEXR_INSTALL_PKG_CONFIG: 'OFF' | |
OPENEXR_INSTALL_DOCS: 'OFF' | |
OPENEXR_BUILD_EXAMPLES: 'OFF' | |
OPENEXR_BUILD_TOOLS: 'OFF' | |
OPENEXR_FORCE_INTERNAL_IMATH: 'ON' | |
OPENEXR_FORCE_INTERNAL_DEFLATE: 'ON' | |
BUILD_TESTING: 'OFF' | |
- build: 6 | |
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' }} | |
BUILD_SHARED_LIBS: ${{ matrix.BUILD_SHARED_LIBS || 'ON' }} | |
OPENEXR_ENABLE_THREADING: ${{ matrix.OPENEXR_ENABLE_THREADING || 'ON' }} | |
OPENEXR_INSTALL_PKG_CONFIG: ${{ matrix.OPENEXR_INSTALL_PKG_CONFIG || 'ON' }} | |
OPENEXR_INSTALL_DOCS: ${{ matrix.OPENEXR_INSTALL_DOCS || 'OFF' }} | |
OPENEXR_BUILD_EXAMPLES: ${{ matrix.OPENEXR_BUILD_EXAMPLES || 'ON' }} | |
OPENEXR_BUILD_TOOLS: ${{ matrix.OPENEXR_BUILD_TOOLS || 'ON' }} | |
OPENEXR_FORCE_INTERNAL_IMATH: ${{ matrix.OPENEXR_FORCE_INTERNAL_IMATH || 'OFF' }} | |
OPENEXR_FORCE_INTERNAL_DEFLATE: ${{ matrix.OPENEXR_FORCE_INTERNAL_DEFLATE || 'OFF' }} | |
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: threads=OFF | |
# TODO: this currently fails to compile; switch to OFF once the fix is in. | |
OPENEXR_ENABLE_THREADING: 'ON' | |
- build: 5 | |
label: pkgconfig=OFF, examples=OFF, tools=OFF, docs=OFF, internal imath+deflate | |
OPENEXR_INSTALL_PKG_CONFIG: 'OFF' | |
OPENEXR_INSTALL_DOCS: 'OFF' | |
OPENEXR_BUILD_EXAMPLES: 'OFF' | |
OPENEXR_BUILD_TOOLS: 'OFF' | |
OPENEXR_FORCE_INTERNAL_IMATH: 'ON' | |
OPENEXR_FORCE_INTERNAL_DEFLATE: 'ON' | |
BUILD_TESTING: 'OFF' | |
- build: 6 | |
label: vfx2022 | |
os: windows-2019 | |