Skip to content

Commit

Permalink
ci: TRY breaking out reusable build steps
Browse files Browse the repository at this point in the history
Signed-off-by: Larry Gritz <[email protected]>
  • Loading branch information
lgritz committed Jan 4, 2025
1 parent e920934 commit 8ecf3fd
Show file tree
Hide file tree
Showing 2 changed files with 291 additions and 9 deletions.
215 changes: 215 additions & 0 deletions .github/workflows/build-steps.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,215 @@
# Copyright Contributors to the Open Shading Language project.
# SPDX-License-Identifier: BSD-3-Clause
# https://github.com/AcademySoftwareFoundation/OpenShadingLanguage

##########################################################################
# Common steps for all CI workflows
##########################################################################

name: CI Steps

on:
workflow_call:
# This inputs receive values via the "with:" section in ci_workflow.yml
inputs:
build:
type: string
runner:
type: string
container:
type: string
cc_compiler:
type: string
cxx_compiler:
type: string
cxx_std:
type: string
build_type:
type: string
depcmds:
type: string
extra_artifacts:
type: string
fmt_ver:
type: string
opencolorio_ver:
type: string
openexr_ver:
type: string
openimageio_ver:
type: string
pybind11_ver:
type: string
python_ver:
type: string
setenvs:
type: string
simd:
type: string
skip_build:
type: string
skip_tests:
type: string
abi_check:
type: string
build_docs:
type: string
generator:
type: string
ctest_args:
type: string
ctest_test_timeout:
type: string
coverage:
type: string
sonar:
type: string
nametag:
type: string

permissions: read-all


jobs:

steps:
name: "${{inputs.cxx_compiler}} c++${{inputs.cxx_std}} py${{inputs.python_ver}}"
runs-on: ${{ inputs.runner }}
container:
image: ${{ inputs.container }}

env:
CXX: ${{inputs.cxx_compiler}}
CC: ${{inputs.cc_compiler}}
CMAKE_BUILD_TYPE: ${{inputs.build_type}}
CMAKE_CXX_STANDARD: ${{inputs.cxx_std}}
CMAKE_GENERATOR: ${{inputs.generator}}
CTEST_ARGS: ${{inputs.ctest_args}}
CTEST_TEST_TIMEOUT: ${{inputs.ctest_test_timeout}}
USE_SIMD: ${{inputs.simd}}
FMT_VERSION: ${{inputs.fmt_ver}}
OPENCOLORIO_VERSION: ${{inputs.opencolorio_ver}}
OPENEXR_VERSION: ${{inputs.openexr_ver}}
OPENIMAGEIO_VERSION: ${{inputs.openimageio_ver}}
PYBIND11_VERSION: ${{inputs.pybind11_ver}}
PYTHON_VERSION: ${{inputs.python_ver}}
ABI_CHECK: ${{inputs.abi_check}}
ACTIONS_RUNNER_FORCE_ACTIONS_NODE_VERSION: node16
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true

steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: '0'
- name: Prepare ccache timestamp
id: ccache_cache_keys
shell: bash
run: echo "date=`date -u +'%Y-%m-%dT%H:%M:%SZ'`" >> $GITHUB_OUTPUT
- name: ccache
id: ccache
uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0
with:
path: ./ccache
key: ${{github.job}}-${{inputs.nametag}}-${{steps.ccache_cache_keys.outputs.date}}
restore-keys: ${{github.job}}-
- name: Setup Nuget.exe (Windows only)
if: runner.os == 'Windows'
uses: nuget/setup-nuget@a21f25cd3998bf370fde17e3f1b4c12c175172f9 # v2.0.0
- name: Build setup
shell: bash
run: |
${{inputs.setenvs}}
src/build-scripts/ci-startup.bash
- name: Remove existing OpenEXR
if: matrix.openexr_ver != ''
shell: bash
run: |
sudo rm -rf /usr/local/include/OpenEXR
sudo rm -rf /usr/local/lib*/cmake/OpenEXR
sudo rm -rf /usr/local/lib*/libOpenOpenEXR*
sudo rm -rf /usr/local/lib*/python*/site-packages/OpenOpenEXR*
- name: Remove existing OIIO
if: matrix.openimageio_ver != ''
shell: bash
run: |
sudo rm -rf /usr/local/include/OpenImageIO
sudo rm -rf /usr/local/lib*/cmake/OpenImageIO
sudo rm -rf /usr/local/lib*/libOpenImageIO*
sudo rm -rf /usr/local/lib*/python*/site-packages/OpenImageIO*
- name: Dependencies
shell: bash
run: |
${{inputs.depcmds}}
if [[ "$RUNNER_OS" == "Linux" ]]; then
src/build-scripts/gh-installdeps.bash
elif [[ "$RUNNER_OS" == "macOS" ]]; then
src/build-scripts/install_homebrew_deps.bash
elif [[ "$RUNNER_OS" == "Windows" ]]; then
src/build-scripts/gh-win-installdeps.bash
fi
- name: Install sonar-scanner and build-wrapper
if: inputs.sonar == '1'
uses: sonarsource/sonarcloud-github-c-cpp@e4882e1621ad2fb48dddfa48287411bed34789b1 # v2.0.2
- name: Build
if: inputs.skip_build != '1'
shell: bash
run: src/build-scripts/ci-build.bash
- name: Testsuite
if: inputs.skip_tests != '1'
shell: bash
run: src/build-scripts/ci-test.bash
- name: Code coverage
if: inputs.coverage == '1'
run: src/build-scripts/ci-coverage.bash
- name: Sonar-scanner
if: inputs.sonar == 1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
run: |
which sonar-scanner
ls -l /__w/OpenShadingLanguage/OpenShadingLanguage/bw_output
echo "BUILD_OUTPUT_DIR is " "${{ env.BUILD_WRAPPER_OUT_DIR }}"
find . -name "*.gcov" -print
# sonar-scanner --define sonar.cfamily.build-wrapper-output="${{ env.BUILD_WRAPPER_OUT_DIR }}"
time sonar-scanner --define sonar.host.url="${{ env.SONAR_SERVER_URL }}" --define sonar.cfamily.build-wrapper-output="$BUILD_WRAPPER_OUT_DIR" --define sonar.cfamily.gcov.reportsPath="_coverage" --define sonar.cfamily.threads="$PARALLEL"
# Consult https://docs.sonarcloud.io/advanced-setup/ci-based-analysis/sonarscanner-cli/ for more information and options
- name: Check out ABI standard
if: inputs.abi_check != ''
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
ref: ${{inputs.abi_check}}
path: abi_standard
- name: Build ABI standard
if: inputs.abi_check != ''
shell: bash
run: |
mkdir -p abi_standard/build
pushd abi_standard
src/build-scripts/ci-build.bash
popd
- name: Check ABI
if: inputs.abi_check != ''
shell: bash
run: |
src/build-scripts/ci-abicheck.bash ./build abi_standard/build \
liboslexec liboslcomp liboslquery liboslnoise
- name: Build Docs
if: inputs.build_docs == '1'
shell: bash
run: |
cd src/doc
time make doxygen
time make sphinx
- uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0
if: ${{ failure() || inputs.build_docs == '1'}}
with:
name: osl-${{github.job}}-${{inputs.nametag}}
path: |
build/cmake-save
build/compat_reports
build/sphinx
build/*.cmake
build/CMake*
build/testsuite/*/*.*
${{ inputs.extra_artifacts }}
85 changes: 76 additions & 9 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,29 +10,37 @@ name: CI
on:
push:
# Skip jobs when only documentation files are changed
paths-ignore:
- '**.md'
- '**.rst'
- '**.tex'
# Skip jobs when only documentation files are changed
paths:
- '**'
- '!**.md'
- '!**.rst'
- '!**.tex'
- '!**/analysis.yml'
- '!**/docs.yml'
- '!**.properties'
- '!doc/**'
pull_request:
paths-ignore:
- '**.md'
- '**.rst'
- '**.tex'
paths:
- '**'
- '!**.md'
- '!**.rst'
- '!**.tex'
- '!doc/**'
schedule:
# Full nightly build, for the main project repo (not for forks)
- cron: "0 6 * * *"
if: github.repository == 'AcademySoftwareFoundation/OpenShadingLanguage'
workflow_dispatch:
# This allows manual triggering of the workflow from the web


permissions: read-all


jobs:

aswf-old:
if: 0
name: "VFX${{matrix.vfxyear}} ${{matrix.desc}}"
strategy:
fail-fast: false
Expand Down Expand Up @@ -213,6 +221,7 @@ jobs:
aswf:
if: 0
name: "VFX${{matrix.vfxyear}} ${{matrix.desc}}"
strategy:
fail-fast: false
Expand Down Expand Up @@ -460,6 +469,7 @@ jobs:
ubuntu:
if: 0
name: "Ubuntu ${{matrix.desc}}"
strategy:
fail-fast: false
Expand Down Expand Up @@ -629,6 +639,63 @@ jobs:
macos:
name: "${{matrix.desc}}"
uses: ./.github/workflows/build-steps.yml
with:
nametag: ${{ matrix.nametag || 'unnamed!' }}
runner: ${{ matrix.runner || 'ubuntu-latest' }}
container: ${{ matrix.container }}
cc_compiler: ${{ matrix.cc_compiler || 'clang' }}
cxx_compiler: ${{ matrix.cxx_compiler || 'clang++' }}
cxx_std: ${{ matrix.cxx_std || '17' }}
build_type: ${{ matrix.build_type || 'Release' }}
depcmds: ${{ matrix.depcmds }}
extra_artifacts: ${{ matrix.extra_artifacts }}
fmt_ver: ${{ matrix.fmt_ver }}
opencolorio_ver: ${{ matrix.opencolorio_ver }}
openexr_ver: ${{ matrix.openexr_ver }}
openimageio_ver: ${{ matrix.openimageio_ver }}
pybind11_ver: ${{ matrix.pybind11_ver }}
python_ver: ${{ matrix.python_ver }}
setenvs: ${{ matrix.setenvs }}
simd: ${{ matrix.simd }}
skip_build: ${{ matrix.skip_build }}
skip_tests: ${{ matrix.skip_tests }}
abi_check: ${{ matrix.abi_check }}
build_docs: ${{ matrix.build_docs }}
generator: ${{ matrix.generator }}
ctest_args: ${{ matrix.ctest_args }}
ctest_test_timeout: ${{ matrix.ctest_test_timeout || '800' }}
coverage: ${{ matrix.coverage || 0 }}
sonar: ${{ matrix.sonar || 0 }}
strategy:
fail-fast: false
matrix:
include:
- desc: MacOS-13-Intel llvm17
runner: macos-13
nametag: macos13-p311
cc_compiler: /usr/local/opt/llvm/bin/clang
cxx_compiler: /usr/local/opt/llvm/bin/clang++
cxx_std: 17
openimageio_ver: release
python_ver: "3.11"
aclang: 14
setenvs: export DO_BREW_UPDATE=1 CTEST_TEST_TIMEOUT=120
- desc: MacOS-14-ARM llvm17
runner: macos-14
nametag: macos14-arm-p311
cc_compiler: clang
cxx_compiler: clang++
cxx_std: 17
openimageio_ver: main
python_ver: "3.11"
aclang: 15
setenvs: export DO_BREW_UPDATE=1



macos-old:
name: "${{matrix.runner}} C++${{matrix.cxx_std}} py${{matrix.python_ver}} ${{matrix.desc}}"
strategy:
fail-fast: false
Expand Down

0 comments on commit 8ecf3fd

Please sign in to comment.