Skip to content

Commit 3e625ae

Browse files
lgritzCopilot
andcommitted
ci: simplify ci workflow by using build-steps for old aswf containers, too (#4932)
Trick learned from the rawtoaces CI workflow --------- Signed-off-by: Larry Gritz <[email protected]> Co-authored-by: Copilot <[email protected]>
1 parent 9789a94 commit 3e625ae

File tree

2 files changed

+52
-94
lines changed

2 files changed

+52
-94
lines changed

.github/workflows/build-steps.yml

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ on:
1818
type: string
1919
container:
2020
type: string
21+
container_volumes:
22+
type: string
23+
default: '[]'
2124
cc_compiler:
2225
type: string
2326
cxx_compiler:
@@ -66,6 +69,9 @@ on:
6669
type: string
6770
sonar:
6871
type: string
72+
old_node:
73+
type: string
74+
default: 0
6975
nametag:
7076
type: string
7177
required_deps:
@@ -88,7 +94,7 @@ jobs:
8894
runs-on: ${{ inputs.runner }}
8995
container:
9096
image: ${{ inputs.container }}
91-
97+
volumes: ${{ fromJson( inputs.container_volumes ) }}
9298
env:
9399
CXX: ${{inputs.cxx_compiler}}
94100
CC: ${{inputs.cc_compiler}}
@@ -114,6 +120,10 @@ jobs:
114120
OpenImageIO_OPTIONAL_DEPS: ${{inputs.optional_deps}}
115121

116122
steps:
123+
- name: install nodejs20glibc2.17
124+
if: inputs.old_node == '1'
125+
run: |
126+
curl --silent https://unofficial-builds.nodejs.org/download/release/v20.18.1/node-v20.18.1-linux-x64-glibc-217.tar.xz | tar -xJ --strip-components 1 -C /node20217 -f -
117127
- name: Checkout repo
118128
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
119129
- name: Build setup

.github/workflows/ci.yml

Lines changed: 41 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,41 @@ jobs:
4343
aswf-old:
4444
if: ${{ ! contains(github.ref, 'windows-only') && ! contains(github.ref, 'macos-only') }}
4545
name: "(old) ${{matrix.desc}}"
46+
uses: ./.github/workflows/build-steps.yml
47+
with:
48+
nametag: ${{ matrix.nametag || 'unnamed!' }}
49+
runner: ${{ matrix.runner || 'ubuntu-latest' }}
50+
container: ${{ matrix.container }}
51+
container_volumes: '["/node20217:/node20217:rw,rshared", "/node20217:/__e/node20:ro,rshared]"]'
52+
cc_compiler: ${{ matrix.cc_compiler }}
53+
cxx_compiler: ${{ matrix.cxx_compiler }}
54+
cxx_std: ${{ matrix.cxx_std || '17' }}
55+
build_type: ${{ matrix.build_type || 'Release' }}
56+
depcmds: ${{ matrix.depcmds }}
57+
extra_artifacts: ${{ matrix.extra_artifacts }}
58+
fmt_ver: ${{ matrix.fmt_ver }}
59+
opencolorio_ver: ${{ matrix.opencolorio_ver }}
60+
openexr_ver: ${{ matrix.openexr_ver }}
61+
pybind11_ver: ${{ matrix.pybind11_ver }}
62+
python_ver: ${{ matrix.python_ver }}
63+
setenvs: ${{ matrix.setenvs }}
64+
simd: ${{ matrix.simd }}
65+
skip_build: ${{ matrix.skip_build }}
66+
skip_tests: ${{ matrix.skip_tests }}
67+
abi_check: ${{ matrix.abi_check }}
68+
benchmark: ${{ matrix.benchmark }}
69+
build_docs: ${{ matrix.build_docs }}
70+
clang_format: ${{ matrix.clang_format }}
71+
generator: ${{ matrix.generator }}
72+
ctest_args: ${{ matrix.ctest_args }}
73+
ctest_test_timeout: ${{ matrix.ctest_test_timeout }}
74+
coverage: ${{ matrix.coverage || 0 }}
75+
sonar: ${{ matrix.sonar || 0 }}
76+
old_node: ${{ matrix.old_node || 0 }}
77+
# Override required_deps to be 'all' and explicitly list as optional
78+
# only the ones we are intentionally not testing for those jobs.
79+
required_deps: ${{ matrix.required_deps || 'all' }}
80+
optional_deps: ${{ matrix.optional_deps || 'DCMTK;JXL;Libheif;Nuke;OpenCV;openjph;OpenVDB;Qt5;R3DSDK;'}}${{matrix.optional_deps_append}}
4681
strategy:
4782
fail-fast: false
4883
matrix:
@@ -62,6 +97,7 @@ jobs:
6297
setenvs: export FREETYPE_VERSION=VER-2-12-0
6398
BUILD_PNG_VERSION=1.6.30
6499
WebP_BUILD_VERSION=1.5.0
100+
optional_deps_append: 'FFmpeg;LibRaw;Ptex;Qt6'
65101
- desc: VP2022 clang13/C++17 py39 avx2 exr3.1 ocio2.3
66102
nametag: linux-vfx2022.clang13
67103
runner: ubuntu-latest
@@ -78,6 +114,7 @@ jobs:
78114
fmt_ver: 9.1.0
79115
setenvs: export FREETYPE_VERSION=VER-2-12-0
80116
BUILD_PNG_VERSION=1.6.30
117+
optional_deps_append: 'FFmpeg;LibRaw;Ptex;Qt6'
81118
- desc: oldest gcc9.3/C++17 py3.9 exr3.1 ocio2.3
82119
# Oldest gcc and versions of the dependencies that we support.
83120
nametag: linux-oldest
@@ -97,6 +134,7 @@ jobs:
97134
PUGIXML_VERSION=v1.8
98135
BUILD_PNG_VERSION=1.6.0
99136
depcmds: sudo rm -rf /usr/local/include/OpenEXR
137+
optional_deps_append: 'FFmpeg;LibRaw;Ptex;Qt6'
100138
- desc: oldest clang10/C++17 py3.9 exr3.1 ocio2.3
101139
# Oldest clang and versions of the dependencies that we support.
102140
nametag: linux-oldest-clang
@@ -118,6 +156,7 @@ jobs:
118156
PUGIXML_VERSION=v1.8
119157
BUILD_PNG_VERSION=1.6.0
120158
depcmds: sudo rm -rf /usr/local/include/OpenEXR
159+
optional_deps_append: 'FFmpeg;LibRaw;Ptex;Qt6'
121160
- desc: hobbled gcc9.3/C++17 py3.9 exr-3.1 no-sse
122161
# Use the oldest supported versions of required dependencies, and
123162
# disable most optional dependencies and features (no SSE or
@@ -144,99 +183,7 @@ jobs:
144183
PUGIXML_VERSION=v1.8
145184
BUILD_PNG_VERSION=1.6.0
146185
depcmds: sudo rm -rf /usr/local/include/OpenEXR
147-
148-
runs-on: ${{ matrix.runner }}
149-
container:
150-
image: ${{ matrix.container }}
151-
volumes:
152-
- /node20217:/node20217:rw,rshared
153-
- /node20217:/__e/node20:ro,rshared
154-
env:
155-
CXX: ${{matrix.cxx_compiler}}
156-
CC: ${{matrix.cc_compiler}}
157-
CMAKE_CXX_STANDARD: ${{matrix.cxx_std}}
158-
USE_SIMD: ${{matrix.simd}}
159-
FMT_VERSION: ${{matrix.fmt_ver}}
160-
OPENCOLORIO_VERSION: ${{matrix.opencolorio_ver}}
161-
OPENEXR_VERSION: ${{matrix.openexr_ver}}
162-
PYBIND11_VERSION: ${{matrix.pybind11_ver}}
163-
PYTHON_VERSION: ${{matrix.python_ver}}
164-
ABI_CHECK: ${{matrix.abi_check}}
165-
steps:
166-
# Install nodejs 20 with glibc 2.17, to work around the face that the
167-
# GHA runners are insisting on a node version that is too new for the
168-
# glibc in the ASWF containers prior to 2023.
169-
- name: install nodejs20glibc2.17
170-
if: matrix.old_node == '1'
171-
run: |
172-
curl --silent https://unofficial-builds.nodejs.org/download/release/v20.18.1/node-v20.18.1-linux-x64-glibc-217.tar.xz | tar -xJ --strip-components 1 -C /node20217 -f -
173-
# We would like to use harden-runner, but it flags too many false
174-
# positives, every time we download a dependency. We should use it only
175-
# on CI runs where we are producing artifacts that users might rely on.
176-
# - name: Harden Runner
177-
# uses: step-security/harden-runner@248ae51c2e8cc9622ecf50685c8bf7150c6e8813 # v1.4.3
178-
# with:
179-
# egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs
180-
- name: Checkout repo
181-
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
182-
- name: Build setup
183-
run: |
184-
${{matrix.setenvs}}
185-
src/build-scripts/ci-startup.bash
186-
- name: Prepare ccache timestamp
187-
id: ccache_cache_keys
188-
shell: bash
189-
run: echo "date=`date -u +'%Y-%m-%dT%H:%M:%SZ'`" >> $GITHUB_OUTPUT
190-
- name: ccache-restore
191-
id: ccache-restore
192-
uses: actions/cache/restore@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
193-
with:
194-
path: ${{ env.CCACHE_DIR }}
195-
# path: ./ccache
196-
key: ${{matrix.nametag}}-${{steps.ccache_cache_keys.outputs.date}}
197-
restore-keys: ${{matrix.nametag}}
198-
- name: Dependencies
199-
run: |
200-
${{matrix.depcmds}}
201-
src/build-scripts/gh-installdeps.bash
202-
- name: Build
203-
if: matrix.skip_build != '1'
204-
run: src/build-scripts/ci-build.bash
205-
- name: ccache-save
206-
id: ccache-save
207-
uses: actions/cache/save@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
208-
with:
209-
path: ${{ env.CCACHE_DIR }}
210-
key: ${{matrix.nametag}}-${{steps.ccache_cache_keys.outputs.date}}
211-
- name: Testsuite
212-
if: matrix.skip_tests != '1'
213-
run: src/build-scripts/ci-test.bash
214-
- name: Benchmarks
215-
if: matrix.benchmark == '1'
216-
shell: bash
217-
run: src/build-scripts/ci-benchmark.bash
218-
- name: Build Docs
219-
if: matrix.build_docs == '1'
220-
run: |
221-
cd src/doc
222-
time make doxygen
223-
time make sphinx
224-
- name: Upload testsuite debugging artifacts
225-
uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0
226-
if: ${{ failure() || matrix.build_docs == '1'}}
227-
with:
228-
name: oiio-${{github.job}}-${{matrix.nametag}}
229-
path: |
230-
build/cmake-save
231-
build/compat_reports
232-
build/sphinx
233-
build/benchmarks
234-
build/testsuite/*/*.*
235-
!build/testsuite/oiio-images
236-
!build/testsuite/openexr-images
237-
!build/testsuite/fits-images
238-
!build/testsuite/j2kp4files_v1_5
239-
186+
required_deps: none
240187

241188

242189
#
@@ -250,6 +197,7 @@ jobs:
250197
nametag: ${{ matrix.nametag || 'unnamed!' }}
251198
runner: ${{ matrix.runner || 'ubuntu-latest' }}
252199
container: ${{ matrix.container }}
200+
container_volumes: ${{ matrix.container_volumes || '[]' }}
253201
cc_compiler: ${{ matrix.cc_compiler }}
254202
cxx_compiler: ${{ matrix.cxx_compiler }}
255203
cxx_std: ${{ matrix.cxx_std || '17' }}

0 commit comments

Comments
 (0)