fix(test): docker startup fail in macos environment#6
Conversation
There was a problem hiding this comment.
Pull request overview
This PR aims to address Docker startup failures on macOS GitHub Actions runners by changing how Docker/Colima/Lima are installed and initialized in the shared dependency setup action.
Changes:
- Update the macOS Docker setup in the composite
dependenceaction to install colima via Homebrew, reset existing colima state, and validate the daemon withdocker info. - Comment out the majority of jobs in
.github/workflows/tests.yml, leaving onlyremote-testenabled and also commenting out the “all required jobs green” aggregator job.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.
| File | Description |
|---|---|
.github/workflows/tests.yml |
Disables most PR test jobs (and the aggregator check), drastically changing CI behavior. |
.github/actions/dependence/action.yml |
Adjusts macOS Docker install/startup flow to rely on Homebrew colima/lima and reinitialize colima before use. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| jobs: | ||
| unit-test: | ||
| uses: ./.github/workflows/unit-test.yml | ||
| unit-mds: | ||
| uses: ./.github/workflows/unit-mds.yml | ||
| case-regression: | ||
| uses: ./.github/workflows/case-regression.yml | ||
| with: | ||
| metadata-matrix: '["zookeeper"]' | ||
| standalone-test: | ||
| uses: ./.github/workflows/standalone-test.yml | ||
| with: | ||
| metadata-matrix: '["zookeeper"]' | ||
| standalone-test-no-optimizer: | ||
| uses: ./.github/workflows/standalone-test-no-optimizer.yml | ||
| with: | ||
| metadata-matrix: '["zookeeper"]' | ||
| db-ce: | ||
| uses: ./.github/workflows/DB-CE.yml | ||
| with: | ||
| metadata-matrix: '["zookeeper"]' | ||
| db-ce-no-optimizer: | ||
| uses: ./.github/workflows/DB-CE.yml | ||
| with: | ||
| metadata-matrix: '["zookeeper"]' | ||
| close-optimizer: "true" | ||
| standalone-test-no-mac-relational: | ||
| uses: ./.github/workflows/standalone-test.yml | ||
| with: | ||
| metadata-matrix: '["zookeeper"]' | ||
| os-matrix: '["ubuntu-latest", "windows-latest"]' | ||
| db-matrix: '["Dameng", "Oracle"]' | ||
| timeout-minutes: 100 | ||
| standalone-test-no-optimizer-no-mac-relational: | ||
| uses: ./.github/workflows/standalone-test-no-optimizer.yml | ||
| with: | ||
| metadata-matrix: '["zookeeper"]' | ||
| os-matrix: '["ubuntu-latest", "windows-latest"]' | ||
| db-matrix: '["Dameng", "Oracle"]' | ||
| timeout-minutes: 100 | ||
| standalone-test-no-mac-no-privs-dameng: | ||
| uses: ./.github/workflows/standalone-test.yml | ||
| with: | ||
| metadata-matrix: '["zookeeper"]' | ||
| os-matrix: '["ubuntu-latest", "windows-latest"]' | ||
| db-matrix: '["Dameng"]' | ||
| db-support-create-database: false | ||
| timeout-minutes: 120 | ||
| standalone-test-no-optimizer-no-mac-no-privs-dameng: | ||
| uses: ./.github/workflows/standalone-test-no-optimizer.yml | ||
| with: | ||
| metadata-matrix: '["zookeeper"]' | ||
| os-matrix: '["ubuntu-latest", "windows-latest"]' | ||
| db-matrix: '["Dameng"]' | ||
| db-support-create-database: false | ||
| timeout-minutes: 100 | ||
| standalone-test-oceanbase: | ||
| uses: ./.github/workflows/standalone-test.yml | ||
| with: | ||
| metadata-matrix: '["zookeeper"]' | ||
| os-matrix: '["ubuntu-latest"]' | ||
| db-matrix: '["OceanBase"]' | ||
| timeout-minutes: 300 | ||
| standalone-test-no-optimizer-oceanbase: | ||
| uses: ./.github/workflows/standalone-test-no-optimizer.yml | ||
| with: | ||
| metadata-matrix: '["zookeeper"]' | ||
| os-matrix: '["ubuntu-latest"]' | ||
| db-matrix: '["OceanBase"]' | ||
| timeout-minutes: 300 | ||
| db-ce-dameng: | ||
| uses: ./.github/workflows/DB-CE.yml | ||
| with: | ||
| metadata-matrix: '["zookeeper"]' | ||
| os-matrix: '["ubuntu-latest", "windows-latest"]' | ||
| db-matrix: '["Dameng"]' | ||
| functest: "NewSessionIT,SQLCompareIT,TagIT,RestIT,TransformIT,UDFIT,RestAnnotationIT,SQLSessionIT,SQLSessionPoolIT,SessionV2IT,CompactionIT,TimePrecisionIT,PySessionIT" | ||
| timeout-minutes: 120 | ||
| db-ce-no-optimizer-dameng: | ||
| uses: ./.github/workflows/DB-CE.yml | ||
| with: | ||
| metadata-matrix: '["zookeeper"]' | ||
| os-matrix: '["ubuntu-latest", "windows-latest"]' | ||
| db-matrix: '["Dameng"]' | ||
| functest: "NewSessionIT,SQLCompareIT,TagIT,RestIT,TransformIT,UDFIT,RestAnnotationIT,SQLSessionIT,SQLSessionPoolIT,SessionV2IT,CompactionIT,TimePrecisionIT,PySessionIT" | ||
| timeout-minutes: 120 | ||
| close-optimizer: "true" | ||
| db-ce-only-linux-relational: | ||
| uses: ./.github/workflows/DB-CE.yml | ||
| with: | ||
| metadata-matrix: '["zookeeper"]' | ||
| os-matrix: '["ubuntu-latest"]' | ||
| db-matrix: '["Oracle", "OceanBase"]' | ||
| functest: "NewSessionIT,SQLCompareIT,TagIT,RestIT,TransformIT,UDFIT,RestAnnotationIT,SQLSessionIT,SQLSessionPoolIT,SessionV2IT,CompactionIT,TimePrecisionIT,PySessionIT" | ||
| timeout-minutes: 120 | ||
| db-ce-no-optimizer-only-linux-relational: | ||
| uses: ./.github/workflows/DB-CE.yml | ||
| with: | ||
| metadata-matrix: '["zookeeper"]' | ||
| os-matrix: '["ubuntu-latest"]' | ||
| db-matrix: '["Oracle", "OceanBase"]' | ||
| functest: "NewSessionIT,SQLCompareIT,TagIT,RestIT,TransformIT,UDFIT,RestAnnotationIT,SQLSessionIT,SQLSessionPoolIT,SessionV2IT,CompactionIT,TimePrecisionIT,PySessionIT" | ||
| timeout-minutes: 120 | ||
| close-optimizer: "true" | ||
| standalone-test-vectordb: | ||
| uses: ./.github/workflows/standalone-test.yml | ||
| with: | ||
| metadata-matrix: '["zookeeper"]' | ||
| os-matrix: '["ubuntu-latest", "windows-latest"]' | ||
| db-matrix: '["VectorDB"]' | ||
| timeout-minutes: 300 | ||
| standalone-test-no-optimizer-vectordb: | ||
| uses: ./.github/workflows/standalone-test-no-optimizer.yml | ||
| with: | ||
| metadata-matrix: '["zookeeper"]' | ||
| os-matrix: '["ubuntu-latest", "windows-latest"]' | ||
| db-matrix: '["VectorDB"]' | ||
| timeout-minutes: 300 | ||
| db-ce-vectordb: | ||
| uses: ./.github/workflows/DB-CE.yml | ||
| with: | ||
| metadata-matrix: '["zookeeper"]' | ||
| os-matrix: '["ubuntu-latest", "windows-latest"]' | ||
| db-matrix: '["VectorDB"]' | ||
| functest: "NewSessionIT,SQLCompareIT,TagIT,RestIT,TransformIT,UDFIT,RestAnnotationIT,SQLSessionIT,SQLSessionPoolIT,SessionV2IT,CompactionIT,TimePrecisionIT,PySessionIT" | ||
| timeout-minutes: 360 | ||
| db-ce-no-optimizer-vectordb: | ||
| uses: ./.github/workflows/DB-CE.yml | ||
| with: | ||
| metadata-matrix: '["zookeeper"]' | ||
| os-matrix: '["ubuntu-latest", "windows-latest"]' | ||
| db-matrix: '["VectorDB"]' | ||
| functest: "NewSessionIT,SQLCompareIT,TagIT,RestIT,TransformIT,UDFIT,RestAnnotationIT,SQLSessionIT,SQLSessionPoolIT,SessionV2IT,CompactionIT,TimePrecisionIT,PySessionIT" | ||
| timeout-minutes: 360 | ||
| close-optimizer: "true" | ||
| # unit-test: | ||
| # uses: ./.github/workflows/unit-test.yml | ||
| # unit-mds: | ||
| # uses: ./.github/workflows/unit-mds.yml | ||
| # case-regression: |
There was a problem hiding this comment.
Most jobs in this workflow have been commented out, leaving only remote-test active. This effectively disables the project's unit/integration/regression CI on PRs and is a large behavioral change unrelated to the stated goal (macOS Docker startup). Please restore the jobs (or gate/disable them via a clear conditional/input) so PRs still run the expected test suite.
| # analyze-required-test-check: | ||
| # if: always() | ||
| # needs: # List of jobs that must pass. Add more jobs if needed. | ||
| # - unit-test | ||
| # - unit-mds | ||
| # - case-regression | ||
| # - standalone-test | ||
| # - standalone-test-no-optimizer | ||
| # - db-ce | ||
| # - db-ce-no-optimizer | ||
| # - standalone-test-vectordb | ||
| # - standalone-test-no-optimizer-vectordb | ||
| # - db-ce-vectordb | ||
| # - db-ce-no-optimizer-vectordb | ||
| # - remote-test | ||
| # - assembly-test | ||
| # - free-thread-test | ||
| # - tpc-h-test | ||
| # - standalone-test-no-mac-relational | ||
| # - standalone-test-no-optimizer-no-mac-relational | ||
| # - db-ce-dameng | ||
| # - db-ce-no-optimizer-dameng | ||
| # - db-ce-only-linux-relational | ||
| # - db-ce-no-optimizer-only-linux-relational | ||
| # - standalone-test-oceanbase | ||
| # - standalone-test-no-optimizer-oceanbase | ||
| # - cluster-test | ||
| # - restart-test | ||
| # runs-on: ubuntu-latest | ||
| # steps: | ||
| # - name: Decide whether the needed jobs succeeded or failed | ||
| # uses: re-actors/alls-green@release/v1 | ||
| # with: | ||
| # jobs: ${{ toJSON(needs) }} |
There was a problem hiding this comment.
analyze-required-test-check has been commented out. If branch protection relies on a single aggregating check (via re-actors/alls-green) to enforce that all matrix jobs passed, removing this job can cause required checks to be bypassed or become inconsistent. Consider keeping this job enabled and updating its needs: list to match the intended job set.
| # analyze-required-test-check: | |
| # if: always() | |
| # needs: # List of jobs that must pass. Add more jobs if needed. | |
| # - unit-test | |
| # - unit-mds | |
| # - case-regression | |
| # - standalone-test | |
| # - standalone-test-no-optimizer | |
| # - db-ce | |
| # - db-ce-no-optimizer | |
| # - standalone-test-vectordb | |
| # - standalone-test-no-optimizer-vectordb | |
| # - db-ce-vectordb | |
| # - db-ce-no-optimizer-vectordb | |
| # - remote-test | |
| # - assembly-test | |
| # - free-thread-test | |
| # - tpc-h-test | |
| # - standalone-test-no-mac-relational | |
| # - standalone-test-no-optimizer-no-mac-relational | |
| # - db-ce-dameng | |
| # - db-ce-no-optimizer-dameng | |
| # - db-ce-only-linux-relational | |
| # - db-ce-no-optimizer-only-linux-relational | |
| # - standalone-test-oceanbase | |
| # - standalone-test-no-optimizer-oceanbase | |
| # - cluster-test | |
| # - restart-test | |
| # runs-on: ubuntu-latest | |
| # steps: | |
| # - name: Decide whether the needed jobs succeeded or failed | |
| # uses: re-actors/alls-green@release/v1 | |
| # with: | |
| # jobs: ${{ toJSON(needs) }} | |
| analyze-required-test-check: | |
| if: always() | |
| needs: # List of jobs that must pass. Add more jobs if needed. | |
| - unit-test | |
| - case-regression | |
| - standalone-test | |
| - standalone-test-no-optimizer | |
| - db-ce | |
| - db-ce-no-optimizer | |
| - standalone-test-vectordb | |
| - standalone-test-no-optimizer-vectordb | |
| - db-ce-vectordb | |
| - db-ce-no-optimizer-vectordb | |
| - remote-test | |
| - assembly-test | |
| - free-thread-test | |
| - tpc-h-test | |
| - standalone-test-no-mac-relational | |
| - standalone-test-no-optimizer-no-mac-relational | |
| - db-ce-dameng | |
| - db-ce-no-optimizer-dameng | |
| - db-ce-only-linux-relational | |
| - db-ce-no-optimizer-only-linux-relational | |
| - standalone-test-oceanbase | |
| - standalone-test-no-optimizer-oceanbase | |
| - cluster-test | |
| - restart-test | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Decide whether the needed jobs succeeded or failed | |
| uses: re-actors/alls-green@release/v1 | |
| with: | |
| jobs: ${{ toJSON(needs) }} |
| sudo curl -L -o $LIMACTL_PATH https://github.com/mikekazakov/lima-nohvf/raw/master/limactl && sudo chmod +x $LIMACTL_PATH | ||
| colima start --network-address --arch arm64 --vm-type=qemu | ||
| docker --version | ||
| brew install docker qemu lima colima |
There was a problem hiding this comment.
The comment says we should keep colima and lima “in sync”, but brew install docker qemu lima colima will not upgrade already-installed packages on the runner. If the failure mode is caused by version skew, consider using brew upgrade colima lima (or brew reinstall) to actually align versions.
| brew install docker qemu lima colima | |
| brew install docker qemu lima colima | |
| brew upgrade colima lima || brew reinstall colima lima |
| docker --version | ||
| brew install docker qemu lima colima | ||
| brew install lima-additional-guestagents || true | ||
| colima delete -f || true |
There was a problem hiding this comment.
brew install lima-additional-guestagents || true will silently ignore installation failures. If this package is required for colima start to work reliably, this can mask the real root cause and lead to harder-to-debug downstream failures. Prefer an explicit conditional (e.g., check formula availability) or emit a clear warning when the install fails.
| colima delete -f || true | |
| if ! colima delete -f; then | |
| echo "Warning: failed to delete existing Colima instance; continuing with colima start." >&2 | |
| fi |
No description provided.