ci: Add ORA_TZFILE workaround to remaining gvenzl/oracle-free workflows#292
Merged
yahonda merged 1 commit intoMay 12, 2026
Merged
Conversation
rsim#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).
This was referenced May 19, 2026
yahonda
added a commit
that referenced
this pull request
May 19, 2026
Apply the workaround from #292 to the dev container. CI fixed `ORA-01805: possible error in date/time operation` by copying the running Oracle server's `timezlrg_*.dat` into the Instant Client's `oracore/zoneinfo/` and pointing `ORA_TZFILE` at it. The dev container combines `gvenzl/oracle-free:latest` with the Instant Client installed via the app `Dockerfile`, so it is exposed to the same drift and benefits from the same fix. PR #301 ported the workaround by adding the `docker-outside-of-docker` feature and copying the file from inside the dev container via `docker exec` / `docker cp`. That approach fails on Dev Containers 0.459.0 with the `mcr.microsoft.com/devcontainers/base:trixie` base image because Debian trixie removed `moby-cli`: (!) The 'moby' option is not supported on Debian 'trixie' because 'moby-cli' and related system packages have been removed from that distribution. ERROR: Feature "Docker (docker-outside-of-docker)" failed to install! Move the copy to the host, where Docker is already available. Mirrors rsim/oracle-enhanced#2799. - `.devcontainer/initializeCommand.sh` (new) -- pull `gvenzl/oracle-free:latest`, then extract `$ORACLE_HOME/oracore/zoneinfo/timezlrg_*.dat` from an ephemeral container into `.devcontainer/tzdata/` on the host. No DB start, no readiness wait -- the file ships in the image. - `.devcontainer/devcontainer.json` -- `initializeCommand` now runs the new script (it previously did the inline `docker pull`). The `docker-outside-of-docker` feature, added in #301 and never merged to master, stays absent. - `.devcontainer/docker-compose.yml` -- bind-mount `.devcontainer/tzdata` read-only at `/opt/tzdata` inside the `app` service. - `.devcontainer/postCreateCommand.sh` -- set `ORA_TZFILE` from `/opt/tzdata/timezlrg_*.dat` and persist it via `/etc/profile.d/ora-tzfile.sh` so interactive shells and `bundle exec` runs pick it up. - `.gitignore` -- ignore `.devcontainer/tzdata/`. No `docker-outside-of-docker` feature, no `/var/run/docker.sock` bind, and no network access during the dev container build. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
#291 added the ORA-01805 workaround to
ruby_head.yml. The same root cause —gvenzl/oracle-free:latestshipping a newertimezlrg_*.datthan 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 withORA-01805fromocidatetime.c:119 in oci8lib_truffleruby.so(run 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 (4.0,3.4,3.3) on the next push/PR.test_gemfiles.yml: same situation astest.yml.Apply the same dynamic copy-and-set-
ORA_TZFILEstep immediately afterCreate database user, identical to #291.jruby_head.ymlis excluded because it uses the JDBC driver and is not affected (confirmed still green on schedule).Stacked on top of #291 in spirit (same fix, same root cause) but contains an independent file set, so the two can land in either order.
Test plan
testandtest_gemfilesworkflow runs and confirm they succeed.trufflerubyworkflow and confirm it succeeds.