From c87f7b49c5b545467ac7243f29a25fcdf8045016 Mon Sep 17 00:00:00 2001 From: Ivan Date: Wed, 18 Sep 2024 21:19:04 +0300 Subject: [PATCH] ci: fix macos tests Docker didn't work on macOS machine in special jobs in CI. The tests stop and fail after a timeout expires. After the patch, a special `colima` utility was added to CI that to help the docker work properly. --- .github/workflows/full-ci.yml | 40 +++++++++++++++++++-------- .github/workflows/tests.yml | 9 +++++- cli/docker/docker_integration_test.go | 4 +-- 3 files changed, 39 insertions(+), 14 deletions(-) diff --git a/.github/workflows/full-ci.yml b/.github/workflows/full-ci.yml index ec52ac26d..e0df98b2f 100644 --- a/.github/workflows/full-ci.yml +++ b/.github/workflows/full-ci.yml @@ -164,7 +164,7 @@ jobs: - name: Install dependencies run: | - brew install --overwrite go mage wget node + brew install --overwrite go mage wget node docker colima docker-credential-helper pip3 install -r test/requirements.txt - name: Install etcd @@ -175,23 +175,37 @@ jobs: TT_CLI_BUILD_SSL: 'static' run: mage build - - name: Install tarantool + # - name: Install tarantool + # run: | + # ./tt init + # ./tt install tarantool 3.0.2 + # # Delete the tt config so that it does not affect the test environment. + # rm -f tt.yaml + # + # - name: Add Tarantool to Path + # run: | + # echo "${GITHUB_WORKSPACE}/bin" >> $GITHUB_PATH + + - name: Set Tarantool include directory to the environment run: | - ./tt init - ./tt install tarantool 3.0.2 - # Delete the tt config so that it does not affect the test environment. - rm -f tt.yaml + echo "TT_CLI_TARANTOOL_PREFIX=${GITHUB_WORKSPACE}/include/" >> $GITHUB_ENV - - name: Add Tarantool to Path + - name: Start colima and patch mount options + # Also we need to delete line with 'credSotre' to download docker image. run: | - echo "${GITHUB_WORKSPACE}/bin" >> $GITHUB_PATH + colima start --vm-type vz --mount /private/var/folders:w - - name: Set Tarantool include directory to the environment + - name: Print docker config run: | - echo "TT_CLI_TARANTOOL_PREFIX=${GITHUB_WORKSPACE}/include/" >> $GITHUB_ENV + cat ~/.docker/config.json + docker rmi -f $(docker images -aq) + + - name: Docker build + run: docker build -t ubuntu:tt_test cli/docker/testdata/ - name: Run unit tests - run: mage unitfull + # run: mage -v unitfull + run: go test -C cli/docker -tags integration,integration_docker - name: Integration tests run: mage integrationfull @@ -212,6 +226,10 @@ jobs: TARANTOOL_BIN=${GITHUB_WORKSPACE}/bin/tarantool; pkill -SIGINT -f ${TARANTOOL_BIN} || true + - name: Kill colima + if: always() + run: colima delete + # ee suffix means that the job runs ee integration tests. full-ci-macOS-ee: if: | diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index da496a362..ccd4d0e57 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -160,7 +160,7 @@ jobs: - name: Install dependencies run: | - brew install --overwrite go mage node + brew install --overwrite go mage node docker colima pip3 install -r test/requirements.txt - name: Install etcd @@ -189,6 +189,9 @@ jobs: - name: Unit tests run: mage unit + - name: Start colima and patch mount options + run: colima start --vm-type vz --mount /private/var/folders:w + - name: Run integration tests run: mage integration @@ -201,3 +204,7 @@ jobs: run: | ETCD_TT_BIN=${ETCD_PATH}etcd; pkill -SIGINT -f ${ETCD_TT_BIN} || true + + - name: Kill colima + if: always() + run: colima delete diff --git a/cli/docker/docker_integration_test.go b/cli/docker/docker_integration_test.go index 9803d2708..031145f62 100644 --- a/cli/docker/docker_integration_test.go +++ b/cli/docker/docker_integration_test.go @@ -39,10 +39,10 @@ func TestBuildImage(t *testing.T) { client.WithAPIVersionNegotiation()) require.NoError(t, err) defer dockerClient.Close() + t.Cleanup(func() { findAndRemoveBuiltImage(t, dockerClient, "ubuntu:tt_test") }) - require.NoError(t, buildDockerImage(dockerClient, "ubuntu:tt_test", "testdata", false, + require.NoError(t, buildDockerImage(dockerClient, "ubuntu:tt_test", "testdata", true, os.Stdout)) - findAndRemoveBuiltImage(t, dockerClient, "ubuntu:tt_test") } func TestBuildImageFail(t *testing.T) {