Skip to content

Commit fd8de3c

Browse files
committed
ci: Fix broken CI for ASWF 2021 and 2022 containers (1905)
Identical in spirit to the coresponding PR for OpenImageIO. 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 f8b5a38 commit fd8de3c

File tree

1 file changed

+144
-39
lines changed

1 file changed

+144
-39
lines changed

.github/workflows/ci.yml

Lines changed: 144 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ permissions: read-all
3232

3333
jobs:
3434

35-
aswf:
35+
aswf-old:
3636
name: "VFX${{matrix.vfxyear}} ${{matrix.desc}}"
3737
strategy:
3838
fail-fast: false
@@ -49,7 +49,7 @@ jobs:
4949
python_ver: 2.7
5050
pybind11_ver: v2.4.2
5151
setenvs: export CMAKE_VERSION=3.15.5
52-
- desc: clang9/C++14 llvm9 oiio-release boost1.66 avx2 exr2.4 py2.7
52+
- desc: clang9/C++14 llvm9 oiio-2.5 boost1.66 avx2 exr2.4 py2.7
5353
nametag: linux-clang9-llvm9
5454
runner: ubuntu-20.04
5555
container: aswftesting/ci-osl:2019-clang9
@@ -58,7 +58,7 @@ jobs:
5858
cxx_compiler: clang++
5959
cxx_std: 14
6060
openexr_ver: v2.4.3
61-
openimageio_ver: release
61+
openimageio_ver: v2.5.17.0
6262
python_ver: 2.7
6363
# pybind11_ver: v2.9.0
6464
simd: avx
@@ -151,42 +151,6 @@ jobs:
151151
batched: b8_AVX2_noFMA
152152
setenvs: export OSL_CMAKE_FLAGS="-DSTOP_ON_WARNING=OFF" USE_OPENVDB=0
153153
OPENCOLORIO_CXX=g++
154-
- desc: gcc11/C++17 llvm15 py3.10 oiio-rel avx2
155-
nametag: linux-vfx2023
156-
runner: ubuntu-latest
157-
container: aswftesting/ci-osl:2023-clang15
158-
vfxyear: 2023
159-
cxx_std: 17
160-
openimageio_ver: release
161-
python_ver: "3.10"
162-
pybind11_ver: v2.9.0
163-
simd: avx2,f16c
164-
batched: b8_AVX2
165-
- desc: GPU Cuda11 gcc11/C++17 llvm15 py3.10 boost1.80 exr3.1 OIIO-main avx2
166-
nametag: linux-optix7-2023
167-
runner: ubuntu-latest
168-
container: aswftesting/ci-osl:2023-clang15
169-
vfxyear: 2023
170-
cxx_std: 17
171-
openimageio_ver: main
172-
python_ver: "3.10"
173-
pybind11_ver: v2.10.0
174-
simd: avx2,f16c
175-
skip_tests: 1
176-
setenvs: export OSL_CMAKE_FLAGS="-DOSL_USE_OPTIX=1" OPTIX_VERSION=7.0
177-
OPENIMAGEIO_CMAKE_FLAGS=-DBUILD_FMT_VERSION=9.1.0
178-
- desc: gcc11/C++17 llvm17 py3.11 boost1.82 oiio-rel avx2
179-
nametag: linux-vfx2024
180-
runner: ubuntu-latest
181-
container: aswftesting/ci-osl:2024-clang17
182-
vfxyear: 2024
183-
cxx_std: 17
184-
openimageio_ver: release
185-
python_ver: "3.11"
186-
pybind11_ver: v2.11.1
187-
simd: avx2,f16c
188-
batched: b8_AVX2
189-
# setenvs: export CONAN_PACKAGES="ptex/2.4.2@aswf/vfx2024"
190154
- desc: oldest everything gcc6/C++14 llvm9 py2.7 boost1.66 oiio2.3 no-simd exr2.4
191155
nametag: linux-oldest
192156
runner: ubuntu-latest
@@ -242,6 +206,147 @@ jobs:
242206
# texture system adequately and is able to ignore the benign
243207
# "leaks."
244208

209+
runs-on: ${{matrix.runner}}
210+
container:
211+
image: ${{ matrix.container }}
212+
volumes:
213+
- /node20217:/node20217:rw,rshared
214+
- /node20217:/__e/node20:ro,rshared
215+
env:
216+
CXX: ${{matrix.cxx_compiler}}
217+
CC: ${{matrix.cc_compiler}}
218+
CMAKE_CXX_STANDARD: ${{matrix.cxx_std}}
219+
FMT_VERSION: ${{matrix.fmt_ver}}
220+
OPENCOLORIO_VERSION: ${{matrix.opencolorio_ver}}
221+
OPENEXR_VERSION: ${{matrix.openexr_ver}}
222+
OPENIMAGEIO_VERSION: ${{matrix.openimageio_ver}}
223+
PYBIND11_VERSION: ${{matrix.pybind11_ver}}
224+
PYTHON_VERSION: ${{matrix.python_ver}}
225+
USE_BATCHED: ${{matrix.batched}}
226+
USE_SIMD: ${{matrix.simd}}
227+
ABI_CHECK: ${{matrix.abi_check}}
228+
ACTIONS_RUNNER_FORCE_ACTIONS_NODE_VERSION: node16
229+
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
230+
steps:
231+
# Install nodejs 20 with glibc 2.17, to work around the face that the
232+
# GHA runners are insisting on a node version that is too new for the
233+
# glibc in the ASWF containers prior to 2023.
234+
- name: install nodejs20glibc2.17
235+
run: |
236+
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 -
237+
# We would like to use harden-runner, but it flags too many false
238+
# positives, every time we download a dependency. We should use it only
239+
# on CI runs where we are producing artifacts that users might rely on.
240+
# - name: Harden Runner
241+
# uses: step-security/harden-runner@248ae51c2e8cc9622ecf50685c8bf7150c6e8813 # v1.4.3
242+
# with:
243+
# egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs
244+
- uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3.0.2
245+
- name: Prepare ccache timestamp
246+
id: ccache_cache_keys
247+
run: echo "::set-output name=date::`date -u +'%Y-%m-%dT%H:%M:%SZ'`"
248+
- name: ccache
249+
id: ccache
250+
uses: actions/cache@c3f1317a9e7b1ef106c153ac8c0f00fed3ddbc0d # v3.0.4
251+
with:
252+
path: /tmp/ccache
253+
key: ${{github.job}}-${{matrix.nametag}}-${{steps.ccache_cache_keys.outputs.date}}
254+
restore-keys: ${{github.job}}-${{matrix.nametag}}-
255+
- name: Build setup
256+
run: |
257+
${{matrix.setenvs}}
258+
src/build-scripts/ci-startup.bash
259+
- name: Remove existing OIIO
260+
if: matrix.openimageio_ver != ''
261+
run: |
262+
sudo rm -rf /usr/local/include/OpenImageIO
263+
sudo rm -rf /usr/local/lib*/cmake/OpenImageIO
264+
sudo rm -rf /usr/local/lib*/libOpenImageIO*
265+
sudo rm -rf /usr/local/lib*/python3.9/site-packages/OpenImageIO*
266+
- name: Dependencies
267+
run: |
268+
${{matrix.depcmds}}
269+
src/build-scripts/gh-installdeps.bash
270+
- name: Build
271+
run: |
272+
src/build-scripts/ci-build.bash
273+
- name: Testsuite
274+
if: matrix.skip_tests != '1'
275+
run: src/build-scripts/ci-test.bash
276+
- name: Check out ABI standard
277+
if: matrix.abi_check != ''
278+
uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
279+
with:
280+
ref: ${{matrix.abi_check}}
281+
path: abi_standard
282+
- name: Build ABI standard
283+
if: matrix.abi_check != ''
284+
run: |
285+
mkdir -p abi_standard/build
286+
pushd abi_standard
287+
export LD_LIBRARY_PATH="${PWD}/build/lib:${LD_LIBRARY_PATH}"
288+
src/build-scripts/ci-build.bash
289+
popd
290+
- name: Check ABI
291+
if: matrix.abi_check != ''
292+
run: |
293+
src/build-scripts/ci-abicheck.bash ./build abi_standard/build \
294+
liboslexec liboslcomp liboslquery liboslnoise
295+
- uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0
296+
if: failure()
297+
with:
298+
name: osl-${{github.job}}-${{matrix.nametag}}
299+
path: |
300+
build/cmake-save
301+
build/compat_reports
302+
build/*.cmake
303+
build/CMake*
304+
build/testsuite/*/*.*
305+
306+
307+
aswf:
308+
name: "VFX${{matrix.vfxyear}} ${{matrix.desc}}"
309+
strategy:
310+
fail-fast: false
311+
matrix:
312+
include:
313+
- desc: gcc11/C++17 llvm15 py3.10 oiio-rel avx2
314+
nametag: linux-vfx2023
315+
runner: ubuntu-latest
316+
container: aswftesting/ci-osl:2023-clang15
317+
vfxyear: 2023
318+
cxx_std: 17
319+
openimageio_ver: release
320+
python_ver: "3.10"
321+
pybind11_ver: v2.9.0
322+
simd: avx2,f16c
323+
batched: b8_AVX2
324+
- desc: GPU Cuda11 gcc11/C++17 llvm15 py3.10 boost1.80 exr3.1 OIIO-main avx2
325+
nametag: linux-optix7-2023
326+
runner: ubuntu-latest
327+
container: aswftesting/ci-osl:2023-clang15
328+
vfxyear: 2023
329+
cxx_std: 17
330+
openimageio_ver: main
331+
python_ver: "3.10"
332+
pybind11_ver: v2.10.0
333+
simd: avx2,f16c
334+
skip_tests: 1
335+
setenvs: export OSL_CMAKE_FLAGS="-DOSL_USE_OPTIX=1" OPTIX_VERSION=7.0
336+
OPENIMAGEIO_CMAKE_FLAGS=-DBUILD_FMT_VERSION=9.1.0
337+
- desc: gcc11/C++17 llvm17 py3.11 boost1.82 oiio-rel avx2
338+
nametag: linux-vfx2024
339+
runner: ubuntu-latest
340+
container: aswftesting/ci-osl:2024-clang17
341+
vfxyear: 2024
342+
cxx_std: 17
343+
openimageio_ver: release
344+
python_ver: "3.11"
345+
pybind11_ver: v2.11.1
346+
simd: avx2,f16c
347+
batched: b8_AVX2
348+
# setenvs: export CONAN_PACKAGES="ptex/2.4.2@aswf/vfx2024"
349+
245350
# Test ABI stability. `abi_check` is the version or commit that we
246351
# believe is the current standard against which we don't want to
247352
# break the ABI. Basically, we will build that version as well as

0 commit comments

Comments
 (0)