-
-
Notifications
You must be signed in to change notification settings - Fork 588
chore(ci): try Shipfox #3268
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
chore(ci): try Shipfox #3268
Conversation
✅ Deploy Preview for testcontainers-go ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
Summary by CodeRabbit
✏️ Tip: You can customize this high-level summary in your review settings. WalkthroughGitHub Actions workflows across the repository are updated to use a new custom runner image ( Changes
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~3 minutes Poem
Pre-merge checks and finishing touches✅ Passed checks (3 passed)
✨ Finishing touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
| required: true | ||
| type: string | ||
| default: "ubuntu-latest" | ||
| default: "shipfox-2vcpu-ubuntu-2404" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Remove either required: true or the default value.
The platforms input is marked as required: true but also has a default value. If an input is required, its default value will never be used since callers must always provide a value. This creates confusion about the intended behavior.
🔎 Recommended fix
Choose one approach:
Option 1: Remove the default if the value must always be explicitly provided:
platforms:
required: true
type: string
- default: "shipfox-2vcpu-ubuntu-2404"
description: "The platforms in which the project will be run"Option 2: Remove required: true if the default should be used when not specified:
platforms:
- required: true
+ required: false
type: string
default: "shipfox-2vcpu-ubuntu-2404"
description: "The platforms in which the project will be run"Based on the workflow design where callers explicitly provide platform matrices (see ci.yml lines 72, 95, 116, 137), Option 1 appears more appropriate.
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| default: "shipfox-2vcpu-ubuntu-2404" | |
| platforms: | |
| required: true | |
| type: string | |
| description: "The platforms in which the project will be run" |
🧰 Tools
🪛 actionlint (1.7.9)
14-14: input "platforms" of workflow_call event has the default value "shipfox-2vcpu-ubuntu-2404", but it is also required. if an input is marked as required, its default value will never be used
(events)
🤖 Prompt for AI Agents
In .github/workflows/ci-test-go.yml around line 14, the `platforms` input is
marked `required: true` while also providing a default value; remove this
contradiction by deleting the default value so callers must explicitly provide
platforms (Option 1), or alternatively remove `required: true` if you want the
default to be used; based on existing callers, remove the default value to
enforce explicit input.
| jobs: | ||
| detect-modules: | ||
| runs-on: ubuntu-latest | ||
| runs-on: shipfox-2vcpu-ubuntu-2404 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
🏁 Script executed:
cat -n .github/workflows/ci.yml | head -160Repository: testcontainers/testcontainers-go
Length of output: 6552
🏁 Script executed:
#!/bin/bash
# Check for Ubuntu version references in codebase
echo "=== Checking for Ubuntu version references ==="
rg "ubuntu-2[0-9]|jammy|noble" --type yaml --type sh --type toml --type md -n
echo -e "\n=== Checking for Docker version constraints ==="
rg "docker.*version|DOCKER_VERSION|DOCKER_BUILDKIT" -n --type yaml --type sh --type toml
echo -e "\n=== Checking for kernel version or system-specific constraints ==="
rg "uname|kernel.*version|lsb_release" -n --type yaml --type shRepository: testcontainers/testcontainers-go
Length of output: 444
🏁 Script executed:
# Check if there are any known issues or compatibility notes for Ubuntu 24.04 in docs
echo "=== Checking for compatibility notes or setup documentation ==="
find . -maxdepth 2 -type f \( -name "README*" -o -name "SETUP*" -o -name "*.md" \) | head -10 | xargs grep -l "ubuntu\|docker\|24.04\|noble" 2>/dev/null | head -5Repository: testcontainers/testcontainers-go
Length of output: 147
🏁 Script executed:
#!/bin/bash
# Check for other CI workflow files
echo "=== Other workflow files ==="
find .github/workflows -type f -name "*.yml" -o -name "*.yaml" | sort
echo -e "\n=== Check for README or infrastructure docs ==="
find . -maxdepth 2 -type f \( -name "README*" -o -name "CONTRIBUTING*" -o -name "*INFRA*" \) | head -10
echo -e "\n=== Look for any documentation on runners or CI ==="
find . -type f -name "*.md" | xargs grep -l "shipfox\|runner\|ubuntu.*24" 2>/dev/null | head -5Repository: testcontainers/testcontainers-go
Length of output: 953
🏁 Script executed:
# Check ci-test-go.yml to understand how the platform parameter is used
echo "=== Checking ci-test-go.yml for platform usage ==="
cat .github/workflows/ci-test-go.yml | head -100Repository: testcontainers/testcontainers-go
Length of output: 3633
🏁 Script executed:
# Look for any fallback logic or GitHub runner configuration elsewhere
echo "=== Checking for github.io or other runner configurations ==="
rg "runs-on|ubuntu-latest|macos-latest|windows-latest" .github/workflows/ -A 2 -B 2Repository: testcontainers/testcontainers-go
Length of output: 6218
Verify Ubuntu 24.04 compatibility for non-modulegen modules and ensure fallback strategy is documented.
The Shipfox runner is already established across the CI infrastructure. However, non-modulegen modules lack fallback runners. Before merging, verify:
-
Ubuntu 24.04 compatibility: Confirm that testcontainers functionality works correctly with Ubuntu 24.04's Docker version and kernel behavior. The modulegen module already tests on macOS and Windows; consider extending cross-platform validation to other modules if applicable.
-
Fallback strategy for standard modules: Unlike modulegen (which tests on
shipfox-2vcpu-ubuntu-2404,macos-latest, andwindows-latest), other modules test only on the Shipfox runner. Document whether this is intentional or whether a fallback to GitHub-hosted runners should be added.
🧰 Tools
🪛 actionlint (1.7.9)
15-15: label "shipfox-2vcpu-ubuntu-2404" is unknown. available labels are "windows-latest", "windows-latest-8-cores", "windows-2025", "windows-2022", "windows-11-arm", "ubuntu-slim", "ubuntu-latest", "ubuntu-latest-4-cores", "ubuntu-latest-8-cores", "ubuntu-latest-16-cores", "ubuntu-24.04", "ubuntu-24.04-arm", "ubuntu-22.04", "ubuntu-22.04-arm", "macos-latest", "macos-latest-xl", "macos-latest-xlarge", "macos-latest-large", "macos-26-xlarge", "macos-26", "macos-15-intel", "macos-15-xlarge", "macos-15-large", "macos-15", "macos-14-xl", "macos-14-xlarge", "macos-14-large", "macos-14", "macos-13-xl", "macos-13-xlarge", "macos-13-large", "macos-13", "self-hosted", "x64", "arm", "arm64", "linux", "macos", "windows". if it is a custom label for self-hosted runner, set list of labels in actionlint.yaml config file
(runner-label)
🤖 Prompt for AI Agents
In .github/workflows/ci.yml around line 15, the workflow pins runs-on to
shipfox-2vcpu-ubuntu-2404 but there is no verification or documented fallback
for non-modulegen modules; confirm testcontainers and all CI-dependent tooling
are compatible with Ubuntu 24.04 (Docker/kernel behavior) and either document
that compatibility check and rationale for using only the Shipfox runner, or add
a fallback matrix entry to run tests on GitHub-hosted runners (e.g.,
ubuntu-latest and/or macos-latest/windows-latest) for standard modules; update
the CI file and repository docs to reflect the chosen approach and the
verification steps performed.
What does this PR do?
Try Shipfox, basically just by changing the job runners for all the pipelines.
Why is it important?
They are sponsoring the development of the OSS libraries, so I think it's a great chance to demonstrate kindness with the project.
FYI, in case you want to use it, you have 3,000 free minutes each month!