Skip to content

Commit d952e22

Browse files
committed
ci: Fix broken CI for ASWF 2021 and 2022 containers (#4543)
The background here takes some explaining... The ASWF's prepared Docker containers that reproduce a CentOS7-based environment corresponding to VFX Platform 2021 and 2022 years contain a glibc that is too old to run a newer version of "node" -- which GitHub Actions themselves use. The old one is no longer receiving support, and GitHub finally changed the policy that was allowing its GHA runners to still run the old version that worked with those ASWF containers. The new node version that is happy on the GHA runners requires a glibc newer than the one in the containers. So that breaks all our CI runs in 2021 and 2022 VFX Platform configurations. See this thread, if you dare: https://academysoftwarefdn.slack.com/archives/C0169RX7MMK/p1732574400981949 Anyway, Jean-Francois Panisset proposed and tested a fix, which lets us continue working (for now) by downloading an old node implemenation (which is happy with the old glibc) and installing it atop the conainers, so it's this old one that the GH actions will use. It feels like it's all held together by chewing gum and duct tape, but it unbreaks our CI and hopefully it will keep working until all the studios have switched fully to RHEL/Alma/Rocky 9.x and we no longer care about testing on CentOS-7 based containers or supporting the VFX Platform years that are too old to be relevant to the new OS that the studios are using. Signed-off-by: Larry Gritz <[email protected]>
1 parent 3eefe20 commit d952e22

File tree

1 file changed

+151
-38
lines changed

1 file changed

+151
-38
lines changed

.github/workflows/ci.yml

Lines changed: 151 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ permissions: read-all
3131

3232
jobs:
3333

34-
aswf:
34+
aswf-old:
3535
name: "VFX${{matrix.vfxyear}} ${{matrix.desc}}"
3636
strategy:
3737
fail-fast: false
@@ -42,6 +42,7 @@ jobs:
4242
runner: ubuntu-latest
4343
container: aswf/ci-osl:2021
4444
vfxyear: 2021
45+
old_node: 1
4546
cxx_std: 17
4647
openexr_ver: v3.1.13
4748
python_ver: 3.7
@@ -55,6 +56,7 @@ jobs:
5556
runner: ubuntu-latest
5657
container: aswf/ci-osl:2021-clang10
5758
vfxyear: 2021
59+
old_node: 1
5860
cc_compiler: clang
5961
cxx_compiler: clang++
6062
cxx_std: 17
@@ -70,6 +72,7 @@ jobs:
7072
runner: ubuntu-latest
7173
container: aswf/ci-osl:2022-clang11
7274
vfxyear: 2022
75+
old_node: 1
7376
cxx_std: 17
7477
python_ver: 3.9
7578
simd: "avx2,f16c"
@@ -81,6 +84,7 @@ jobs:
8184
runner: ubuntu-latest
8285
container: aswf/ci-osl:2022-clang13
8386
vfxyear: 2022
87+
old_node: 1
8488
cc_compiler: clang
8589
cxx_compiler: clang++
8690
cxx_std: 17
@@ -94,6 +98,7 @@ jobs:
9498
runner: ubuntu-latest
9599
container: aswf/ci-osl:2022
96100
vfxyear: 2022
101+
old_node: 1
97102
cxx_std: 17
98103
opencolorio_ver: v2.2.1
99104
python_ver: 3.9
@@ -112,6 +117,7 @@ jobs:
112117
runner: ubuntu-latest
113118
container: aswf/ci-osl:2022
114119
vfxyear: 2022
120+
old_node: 1
115121
cc_compiler: icx
116122
cxx_compiler: icpx
117123
cxx_std: 17
@@ -127,47 +133,13 @@ jobs:
127133
# to use g++.
128134
# Building libuhdr with icx results in test failures
129135
# so we force using gcc/g++.
130-
- desc: sanitizers
131-
nametag: sanitizer
132-
runner: ubuntu-latest
133-
container: aswf/ci-osl:2024-clang17
134-
vfxyear: 2024
135-
cc_compiler: clang
136-
cxx_compiler: clang++
137-
cxx_std: 17
138-
opencolorio_ver: v2.3.2
139-
python_ver: "3.11"
140-
setenvs: export SANITIZE=address,undefined
141-
OIIO_CMAKE_FLAGS="-DSANITIZE=address,undefined -DUSE_PYTHON=0"
142-
CMAKE_BUILD_TYPE=Debug
143-
CTEST_TEST_TIMEOUT=1200
144-
CTEST_EXCLUSIONS="broken|png-damaged"
145-
- desc: gcc11/C++17 py3.10 exr3.1 ocio2.2
146-
nametag: linux-vfx2023
147-
runner: ubuntu-latest
148-
container: aswftesting/ci-osl:2023-clang15
149-
vfxyear: 2023
150-
cxx_std: 17
151-
python_ver: "3.10"
152-
simd: "avx2,f16c"
153-
fmt_ver: 10.1.1
154-
pybind11_ver: v2.10.0
155-
- desc: gcc11/C++17 py3.11 exr3.2 ocio2.3
156-
nametag: linux-vfx2024
157-
runner: ubuntu-latest
158-
container: aswftesting/ci-osl:2024-clang17
159-
vfxyear: 2024
160-
cxx_std: 17
161-
python_ver: "3.11"
162-
simd: "avx2,f16c"
163-
fmt_ver: 10.1.1
164-
pybind11_ver: v2.12.0
165136
- desc: oldest gcc9.3/C++17 py3.7 exr-3.1
166137
# Oldest versions of the dependencies that we support.
167138
nametag: linux-oldest
168139
runner: ubuntu-latest
169140
container: aswf/ci-osl:2021
170141
vfxyear: 2021
142+
old_node: 1
171143
cxx_std: 17
172144
fmt_ver: 7.0.1
173145
opencolorio_ver: v2.2.1
@@ -186,6 +158,7 @@ jobs:
186158
runner: ubuntu-latest
187159
container: aswf/ci-osl:2021
188160
vfxyear: 2021
161+
old_node: 1
189162
cxx_std: 17
190163
fmt_ver: 7.0.1
191164
opencolorio_ver: v2.2.1
@@ -202,6 +175,148 @@ jobs:
202175
FREETYPE_VERSION=VER-2-10-0
203176
depcmds: sudo rm -rf /usr/local/include/OpenEXR
204177

178+
runs-on: ${{ matrix.runner }}
179+
container:
180+
image: ${{ matrix.container }}
181+
volumes:
182+
- /node20217:/node20217:rw,rshared
183+
- /node20217:/__e/node20:ro,rshared
184+
env:
185+
CXX: ${{matrix.cxx_compiler}}
186+
CC: ${{matrix.cc_compiler}}
187+
CMAKE_CXX_STANDARD: ${{matrix.cxx_std}}
188+
USE_SIMD: ${{matrix.simd}}
189+
FMT_VERSION: ${{matrix.fmt_ver}}
190+
OPENCOLORIO_VERSION: ${{matrix.opencolorio_ver}}
191+
OPENEXR_VERSION: ${{matrix.openexr_ver}}
192+
PYBIND11_VERSION: ${{matrix.pybind11_ver}}
193+
PYTHON_VERSION: ${{matrix.python_ver}}
194+
ABI_CHECK: ${{matrix.abi_check}}
195+
steps:
196+
# Install nodejs 20 with glibc 2.17, to work around the face that the
197+
# GHA runners are insisting on a node version that is too new for the
198+
# glibc in the ASWF containers prior to 2023.
199+
- name: install nodejs20glibc2.17
200+
if: matrix.old_node == '1'
201+
run: |
202+
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 -
203+
# We would like to use harden-runner, but it flags too many false
204+
# positives, every time we download a dependency. We should use it only
205+
# on CI runs where we are producing artifacts that users might rely on.
206+
# - name: Harden Runner
207+
# uses: step-security/harden-runner@248ae51c2e8cc9622ecf50685c8bf7150c6e8813 # v1.4.3
208+
# with:
209+
# egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs
210+
- uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0
211+
# Note: can't upgrade to actions/checkout 4.0 because it needs newer
212+
# glibc than these containers have.
213+
- name: Prepare ccache timestamp
214+
id: ccache_cache_keys
215+
run: echo "date=`date -u +'%Y-%m-%dT%H:%M:%SZ'`" >> $GITHUB_OUTPUT
216+
- name: ccache
217+
id: ccache
218+
uses: actions/cache@e12d46a63a90f2fae62d114769bbf2a179198b5c # v3.3.3
219+
# Note: can't upgrade to actions/cache 4.0 because it needs newer
220+
# glibc than these containers have.
221+
with:
222+
path: /tmp/ccache
223+
key: ${{github.job}}-${{matrix.nametag}}-${{steps.ccache_cache_keys.outputs.date}}
224+
restore-keys: ${{github.job}}-
225+
- name: Build setup
226+
run: |
227+
${{matrix.setenvs}}
228+
src/build-scripts/ci-startup.bash
229+
- name: Dependencies
230+
run: |
231+
${{matrix.depcmds}}
232+
src/build-scripts/gh-installdeps.bash
233+
- name: Build
234+
if: matrix.skip_build != '1'
235+
run: src/build-scripts/ci-build.bash
236+
- name: Testsuite
237+
if: matrix.skip_tests != '1'
238+
run: src/build-scripts/ci-test.bash
239+
- name: Check out ABI standard
240+
if: matrix.abi_check != ''
241+
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
242+
with:
243+
ref: ${{matrix.abi_check}}
244+
path: abi_standard
245+
- name: Build ABI standard
246+
if: matrix.abi_check != ''
247+
run: |
248+
mkdir -p abi_standard/build
249+
pushd abi_standard
250+
src/build-scripts/ci-build.bash
251+
popd
252+
- name: Check ABI
253+
if: matrix.abi_check != ''
254+
run: |
255+
src/build-scripts/ci-abicheck.bash ./build abi_standard/build libOpenImageIO libOpenImageIO_Util
256+
- name: Build Docs
257+
if: matrix.build_docs == '1'
258+
run: |
259+
cd src/doc
260+
time make doxygen
261+
time make sphinx
262+
- uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3
263+
# Note: versions of upload-artifact >= 4.0 can't run on the ASWF
264+
# containers because they need a newer glibc than they have.
265+
if: ${{ failure() || matrix.build_docs == '1'}}
266+
with:
267+
name: oiio-${{github.job}}-${{matrix.nametag}}
268+
path: |
269+
build/cmake-save
270+
build/compat_reports
271+
build/sphinx
272+
build/testsuite/*/*.*
273+
!build/testsuite/oiio-images
274+
!build/testsuite/openexr-images
275+
!build/testsuite/fits-images
276+
!build/testsuite/j2kp4files_v1_5
277+
278+
279+
aswf:
280+
name: "VFX${{matrix.vfxyear}} ${{matrix.desc}}"
281+
strategy:
282+
fail-fast: false
283+
matrix:
284+
include:
285+
- desc: gcc11/C++17 py3.10 exr3.1 ocio2.2
286+
nametag: linux-vfx2023
287+
runner: ubuntu-latest
288+
container: aswftesting/ci-osl:2023-clang15
289+
vfxyear: 2023
290+
cxx_std: 17
291+
python_ver: "3.10"
292+
simd: "avx2,f16c"
293+
fmt_ver: 10.1.1
294+
pybind11_ver: v2.10.0
295+
- desc: gcc11/C++17 py3.11 exr3.2 ocio2.3
296+
nametag: linux-vfx2024
297+
runner: ubuntu-latest
298+
container: aswftesting/ci-osl:2024-clang17
299+
vfxyear: 2024
300+
cxx_std: 17
301+
python_ver: "3.11"
302+
simd: "avx2,f16c"
303+
fmt_ver: 10.1.1
304+
pybind11_ver: v2.12.0
305+
- desc: sanitizers
306+
nametag: sanitizer
307+
runner: ubuntu-latest
308+
container: aswf/ci-osl:2024-clang17
309+
vfxyear: 2024
310+
cc_compiler: clang
311+
cxx_compiler: clang++
312+
cxx_std: 17
313+
opencolorio_ver: v2.3.2
314+
python_ver: "3.11"
315+
setenvs: export SANITIZE=address,undefined
316+
OIIO_CMAKE_FLAGS="-DSANITIZE=address,undefined -DUSE_PYTHON=0"
317+
CMAKE_BUILD_TYPE=Debug
318+
CTEST_TEST_TIMEOUT=1200
319+
CTEST_EXCLUSIONS="broken|png-damaged"
205320
# Test ABI stability. `abi_check` is the version or commit that we
206321
# believe is the current standard against which we don't want to
207322
# break the ABI. Basically, we will build that version as well as
@@ -237,8 +352,6 @@ jobs:
237352
PYBIND11_VERSION: ${{matrix.pybind11_ver}}
238353
PYTHON_VERSION: ${{matrix.python_ver}}
239354
ABI_CHECK: ${{matrix.abi_check}}
240-
ACTIONS_RUNNER_FORCE_ACTIONS_NODE_VERSION: node16
241-
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
242355
steps:
243356
# We would like to use harden-runner, but it flags too many false
244357
# positives, every time we download a dependency. We should use it only

0 commit comments

Comments
 (0)