From 3cc63ed90c3e46f0f809594e4195aa52467f757e Mon Sep 17 00:00:00 2001 From: Yasuo Honda Date: Tue, 12 May 2026 22:41:14 +0900 Subject: [PATCH] ci: Add ORA_TZFILE workaround to remaining gvenzl/oracle-free workflows #291 added the ORA-01805 workaround to `ruby_head.yml`. The same root cause -- `gvenzl/oracle-free:latest` shipping a newer timezone-data version than the "latest" Instant Client embeds -- affects every other workflow that combines that image with ruby-oci8: - `truffleruby.yml`: failing on schedule since 2026-05-09 with `ORA-01805` from `ocidatetime.c:119 in oci8lib_truffleruby.so` (https://github.com/rsim/ruby-plsql/actions/runs/25710673905). - `test.yml`: not yet run against the updated image (latest run was 2026-05-08, image upgrade landed on 05-09); will fail on the MRI matrix slots on the next push/PR. - `test_gemfiles.yml`: same situation as test.yml. Apply the same dynamic copy-and-set-ORA_TZFILE step immediately after `Create database user`. `jruby_head.yml` is excluded because it uses the JDBC driver and is not affected (confirmed still green on schedule). --- .github/workflows/test.yml | 11 +++++++++++ .github/workflows/test_gemfiles.yml | 11 +++++++++++ .github/workflows/truffleruby.yml | 11 +++++++++++ 3 files changed, 33 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6f03825..2fa9456 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -74,6 +74,17 @@ jobs: - name: Create database user run: | ./ci/setup_accounts.sh + - name: Force client TZ data to match server (ORA_TZFILE workaround) + run: | + ORACLE_CONTAINER=$(docker ps --filter "ancestor=gvenzl/oracle-free" -q) + SRC=$(docker exec "$ORACLE_CONTAINER" bash -c 'ls $ORACLE_HOME/oracore/zoneinfo/timezlrg_*.dat 2>/dev/null | head -1') + echo "Server TZ file: $SRC" + DST_DIR="$ORACLE_HOME/oracore/zoneinfo" + sudo mkdir -p "$DST_DIR" + docker cp "$ORACLE_CONTAINER":"$SRC" /tmp/_server_tzfile.dat + sudo mv /tmp/_server_tzfile.dat "$DST_DIR/$(basename "$SRC")" + ls -l "$DST_DIR" + echo "ORA_TZFILE=$DST_DIR/$(basename "$SRC")" >> $GITHUB_ENV - name: Bundle install run: | bundle install --jobs 4 --retry 3 diff --git a/.github/workflows/test_gemfiles.yml b/.github/workflows/test_gemfiles.yml index a92784c..83f3ead 100644 --- a/.github/workflows/test_gemfiles.yml +++ b/.github/workflows/test_gemfiles.yml @@ -88,6 +88,17 @@ jobs: - name: Create database user run: | ./ci/setup_accounts.sh + - name: Force client TZ data to match server (ORA_TZFILE workaround) + run: | + ORACLE_CONTAINER=$(docker ps --filter "ancestor=gvenzl/oracle-free" -q) + SRC=$(docker exec "$ORACLE_CONTAINER" bash -c 'ls $ORACLE_HOME/oracore/zoneinfo/timezlrg_*.dat 2>/dev/null | head -1') + echo "Server TZ file: $SRC" + DST_DIR="$ORACLE_HOME/oracore/zoneinfo" + sudo mkdir -p "$DST_DIR" + docker cp "$ORACLE_CONTAINER":"$SRC" /tmp/_server_tzfile.dat + sudo mv /tmp/_server_tzfile.dat "$DST_DIR/$(basename "$SRC")" + ls -l "$DST_DIR" + echo "ORA_TZFILE=$DST_DIR/$(basename "$SRC")" >> $GITHUB_ENV - name: Bundle install run: | bundle install --jobs 4 --retry 3 diff --git a/.github/workflows/truffleruby.yml b/.github/workflows/truffleruby.yml index 3789fd2..b4eeeda 100644 --- a/.github/workflows/truffleruby.yml +++ b/.github/workflows/truffleruby.yml @@ -63,6 +63,17 @@ jobs: - name: Create database user run: | ./ci/setup_accounts.sh + - name: Force client TZ data to match server (ORA_TZFILE workaround) + run: | + ORACLE_CONTAINER=$(docker ps --filter "ancestor=gvenzl/oracle-free" -q) + SRC=$(docker exec "$ORACLE_CONTAINER" bash -c 'ls $ORACLE_HOME/oracore/zoneinfo/timezlrg_*.dat 2>/dev/null | head -1') + echo "Server TZ file: $SRC" + DST_DIR="$ORACLE_HOME/oracore/zoneinfo" + sudo mkdir -p "$DST_DIR" + docker cp "$ORACLE_CONTAINER":"$SRC" /tmp/_server_tzfile.dat + sudo mv /tmp/_server_tzfile.dat "$DST_DIR/$(basename "$SRC")" + ls -l "$DST_DIR" + echo "ORA_TZFILE=$DST_DIR/$(basename "$SRC")" >> $GITHUB_ENV - name: Bundle install run: | bundle install --jobs 4 --retry 3