Run integration tests on host runner in CI - #6831
Open
rhcarvalho wants to merge 1 commit into
Open
Conversation
Migrate the `integration-test-elixir` workflow job from an Alpine Docker container to run directly on the `ubuntu-24.04` host runner using `erlef/setup-beam`, matching the environment of `mix_test`, `installer_test`, and `docs`. Key benefits: - Adds `actions/cache` for `integration_test/deps` and `integration_test/_build` keyed on `integration_test/mix.lock`. This avoids recompiling ~50 dependencies on every CI run, saving ~50s of setup time on warm caches. - Eliminates the `apk add` system package installation step, as build tools are pre-installed on the Ubuntu runner image. - Removes background `socat` proxy bridges; GitHub Actions binds database service container ports directly to `localhost`.
rhcarvalho
force-pushed
the
integration-test-ci-host-runner
branch
from
September 2, 2026 21:06
cedbe41 to
817b85b
Compare
Contributor
Author
|
CI run with
Note how the "Compile dependencies" step went from 41s down to 11s (some deps still recompiled) |
Contributor
Author
|
We're also shaving ~10-20s for not having to pull/setup the Alpine container. |
rhcarvalho
marked this pull request as ready for review
September 2, 2026 21:16
Contributor
Author
|
For reference, the next optimization on top of this would be a small patch to use diffdiff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index c9de83067..aef4d6acd 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -96,6 +96,11 @@ jobs:
with:
persist-credentials: false
+ - name: Mount installer/tmp on tmpfs
+ run: |
+ mkdir -p installer/tmp
+ sudo mount -t tmpfs -o size=2G,uid=$(id -u),gid=$(id -g) tmpfs installer/tmp
+
- name: Set up Elixir
uses: erlef/setup-beam@54075bcc5e249e4758d363f27d099f55d843f124 # v1.24.1
with:
@@ -289,6 +294,11 @@ jobs:
with:
persist-credentials: false
+ - name: Mount installer/tmp on tmpfs
+ run: |
+ mkdir -p installer/tmp
+ sudo mount -t tmpfs -o size=2G,uid=$(id -u),gid=$(id -g) tmpfs installer/tmp
+
- name: Set up Elixir
uses: erlef/setup-beam@54075bcc5e249e4758d363f27d099f55d843f124 # v1.24.1``` |
Member
|
@rhcarvalho feel free to go ahead and include the tmpfs mount here |
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.
Migrate the
integration-test-elixirworkflow job from an Alpine Docker container to run directly on theubuntu-24.04host runner usingerlef/setup-beam, matching the environment ofmix_test,installer_test, anddocs.Key benefits:
actions/cacheforintegration_test/depsandintegration_test/_buildkeyed onintegration_test/mix.lock. This avoids recompiling ~50 dependencies on every CI run, saving ~50s of setup time on warm caches.apk addsystem package installation step, as build tools are pre-installed on the Ubuntu runner image.socatproxy bridges; GitHub Actions binds database service container ports directly tolocalhost.