diff --git a/.github/workflows/.test.yml b/.github/workflows/.test.yml new file mode 100644 index 0000000000..a29d501732 --- /dev/null +++ b/.github/workflows/.test.yml @@ -0,0 +1,420 @@ +# reusable workflow +name: .test + +# TODO: hide reusable workflow from the UI. Tracked in https://github.com/community/community/discussions/12025 + +on: + workflow_call: + inputs: + storage: + required: true + type: string + default: "graphdriver" + +env: + GO_VERSION: "1.21.3" + GOTESTLIST_VERSION: v0.3.1 + TESTSTAT_VERSION: v0.1.3 + ITG_CLI_MATRIX_SIZE: 6 + DOCKER_EXPERIMENTAL: 1 + DOCKER_GRAPHDRIVER: overlay2 + +jobs: + unit: + runs-on: ubuntu-20.04 + timeout-minutes: 120 + steps: + - + name: Checkout + uses: actions/checkout@v3 + - + name: Set up runner + uses: ./.github/actions/setup-runner + - + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - + name: Build dev image + uses: docker/bake-action@v2 + with: + targets: dev + set: | + dev.cache-from=type=gha,scope=dev + - + name: Test + run: | + make -o build test-unit + - + name: Prepare reports + if: always() + run: | + mkdir -p bundles /tmp/reports + find bundles -path '*/root/*overlay2' -prune -o -type f \( -name '*-report.json' -o -name '*.log' -o -name '*.out' -o -name '*.prof' -o -name '*-report.xml' \) -print | xargs sudo tar -czf /tmp/reports.tar.gz + tar -xzf /tmp/reports.tar.gz -C /tmp/reports + sudo chown -R $(id -u):$(id -g) /tmp/reports + tree -nh /tmp/reports + - + name: Send to Codecov + uses: codecov/codecov-action@v3 + with: + directory: ./bundles + env_vars: RUNNER_OS + flags: unit + - + name: Upload reports + if: always() + uses: actions/upload-artifact@v3 + with: + name: ${{ inputs.storage }}-unit-reports + path: /tmp/reports/* + + unit-report: + runs-on: ubuntu-20.04 + timeout-minutes: 10 + if: always() + needs: + - unit + steps: + - + name: Set up Go + uses: actions/setup-go@v3 + with: + go-version: ${{ env.GO_VERSION }} + - + name: Download reports + uses: actions/download-artifact@v3 + with: + name: ${{ inputs.storage }}-unit-reports + path: /tmp/reports + - + name: Install teststat + run: | + go install github.com/vearutop/teststat@${{ env.TESTSTAT_VERSION }} + - + name: Create summary + run: | + teststat -markdown $(find /tmp/reports -type f -name '*.json' -print0 | xargs -0) >> $GITHUB_STEP_SUMMARY + + docker-py: + runs-on: ubuntu-20.04 + timeout-minutes: 120 + steps: + - + name: Checkout + uses: actions/checkout@v3 + - + name: Set up runner + uses: ./.github/actions/setup-runner + - + name: Set up tracing + uses: ./.github/actions/setup-tracing + - + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - + name: Build dev image + uses: docker/bake-action@v2 + with: + targets: dev + set: | + dev.cache-from=type=gha,scope=dev + - + name: Test + run: | + make -o build test-docker-py + - + name: Prepare reports + if: always() + run: | + mkdir -p bundles /tmp/reports + find bundles -path '*/root/*overlay2' -prune -o -type f \( -name '*-report.json' -o -name '*.log' -o -name '*.out' -o -name '*.prof' -o -name '*-report.xml' \) -print | xargs sudo tar -czf /tmp/reports.tar.gz + tar -xzf /tmp/reports.tar.gz -C /tmp/reports + sudo chown -R $(id -u):$(id -g) /tmp/reports + tree -nh /tmp/reports + + curl -sSLf localhost:16686/api/traces?service=integration-test-client > /tmp/reports/jaeger-trace.json + - + name: Test daemon logs + if: always() + run: | + cat bundles/test-docker-py/docker.log + - + name: Upload reports + if: always() + uses: actions/upload-artifact@v3 + with: + name: ${{ inputs.storage }}-docker-py-reports + path: /tmp/reports/* + + integration-flaky: + runs-on: ubuntu-20.04 + timeout-minutes: 120 + steps: + - + name: Checkout + uses: actions/checkout@v3 + - + name: Set up runner + uses: ./.github/actions/setup-runner + - + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - + name: Build dev image + uses: docker/bake-action@v2 + with: + targets: dev + set: | + dev.cache-from=type=gha,scope=dev + - + name: Test + run: | + make -o build test-integration-flaky + env: + TEST_SKIP_INTEGRATION_CLI: 1 + + integration: + runs-on: ${{ matrix.os }} + timeout-minutes: 120 + strategy: + fail-fast: false + matrix: + os: + - ubuntu-20.04 + - ubuntu-22.04 + mode: + - "" + - rootless + - systemd + #- rootless-systemd FIXME: https://github.com/moby/moby/issues/44084 + steps: + - + name: Checkout + uses: actions/checkout@v3 + - + name: Set up runner + uses: ./.github/actions/setup-runner + - + name: Set up tracing + uses: ./.github/actions/setup-tracing + - + name: Prepare + run: | + CACHE_DEV_SCOPE=dev + if [[ "${{ matrix.mode }}" == *"rootless"* ]]; then + echo "DOCKER_ROOTLESS=1" >> $GITHUB_ENV + fi + if [[ "${{ matrix.mode }}" == *"systemd"* ]]; then + echo "SYSTEMD=true" >> $GITHUB_ENV + CACHE_DEV_SCOPE="${CACHE_DEV_SCOPE}systemd" + fi + echo "CACHE_DEV_SCOPE=${CACHE_DEV_SCOPE}" >> $GITHUB_ENV + - + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - + name: Build dev image + uses: docker/bake-action@v2 + with: + targets: dev + set: | + dev.cache-from=type=gha,scope=${{ env.CACHE_DEV_SCOPE }} + - + name: Test + run: | + make -o build test-integration + env: + TEST_SKIP_INTEGRATION_CLI: 1 + TESTCOVERAGE: 1 + - + name: Prepare reports + if: always() + run: | + reportsPath="/tmp/reports/${{ matrix.os }}" + if [ -n "${{ matrix.mode }}" ]; then + reportsPath="$reportsPath-${{ matrix.mode }}" + fi + mkdir -p bundles $reportsPath + find bundles -path '*/root/*overlay2' -prune -o -type f \( -name '*-report.json' -o -name '*.log' -o -name '*.out' -o -name '*.prof' -o -name '*-report.xml' \) -print | xargs sudo tar -czf /tmp/reports.tar.gz + tar -xzf /tmp/reports.tar.gz -C $reportsPath + sudo chown -R $(id -u):$(id -g) $reportsPath + tree -nh $reportsPath + + curl -sSLf localhost:16686/api/traces?service=integration-test-client > $reportsPath/jaeger-trace.json + - + name: Send to Codecov + uses: codecov/codecov-action@v3 + with: + directory: ./bundles/test-integration + env_vars: RUNNER_OS + flags: integration,${{ matrix.mode }} + - + name: Test daemon logs + if: always() + run: | + cat bundles/test-integration/docker.log + - + name: Upload reports + if: always() + uses: actions/upload-artifact@v3 + with: + name: ${{ inputs.storage }}-integration-reports + path: /tmp/reports/* + + integration-report: + runs-on: ubuntu-20.04 + timeout-minutes: 10 + if: always() + needs: + - integration + steps: + - + name: Set up Go + uses: actions/setup-go@v3 + with: + go-version: ${{ env.GO_VERSION }} + - + name: Download reports + uses: actions/download-artifact@v3 + with: + name: ${{ inputs.storage }}-integration-reports + path: /tmp/reports + - + name: Install teststat + run: | + go install github.com/vearutop/teststat@${{ env.TESTSTAT_VERSION }} + - + name: Create summary + run: | + teststat -markdown $(find /tmp/reports -type f -name '*.json' -print0 | xargs -0) >> $GITHUB_STEP_SUMMARY + + integration-cli-prepare: + runs-on: ubuntu-20.04 + outputs: + matrix: ${{ steps.tests.outputs.matrix }} + steps: + - + name: Checkout + uses: actions/checkout@v3 + - + name: Set up Go + uses: actions/setup-go@v3 + with: + go-version: ${{ env.GO_VERSION }} + - + name: Install gotestlist + run: + go install github.com/crazy-max/gotestlist/cmd/gotestlist@${{ env.GOTESTLIST_VERSION }} + - + name: Create matrix + id: tests + working-directory: ./integration-cli + run: | + # This step creates a matrix for integration-cli tests. Tests suites + # are distributed in integration-cli job through a matrix. There is + # also overrides being added to the matrix like "./..." to run + # "Test integration" step exclusively and specific tests suites that + # take a long time to run. + matrix="$(gotestlist -d ${{ env.ITG_CLI_MATRIX_SIZE }} -o "./..." -o "DockerSwarmSuite" -o "DockerNetworkSuite|DockerExternalVolumeSuite" ./...)" + echo "matrix=$matrix" >> $GITHUB_OUTPUT + - + name: Show matrix + run: | + echo ${{ steps.tests.outputs.matrix }} + + integration-cli: + runs-on: ubuntu-20.04 + timeout-minutes: 120 + needs: + - integration-cli-prepare + strategy: + fail-fast: false + matrix: + test: ${{ fromJson(needs.integration-cli-prepare.outputs.matrix) }} + steps: + - + name: Checkout + uses: actions/checkout@v3 + - + name: Set up runner + uses: ./.github/actions/setup-runner + - + name: Set up tracing + uses: ./.github/actions/setup-tracing + - + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - + name: Build dev image + uses: docker/bake-action@v2 + with: + targets: dev + set: | + dev.cache-from=type=gha,scope=dev + - + name: Test + run: | + make -o build test-integration + env: + TEST_SKIP_INTEGRATION: 1 + TESTCOVERAGE: 1 + TESTFLAGS: "-test.run (${{ matrix.test }})/" + - + name: Prepare reports + if: always() + run: | + reportsPath=/tmp/reports/$(echo -n "${{ matrix.test }}" | sha256sum | cut -d " " -f 1) + mkdir -p bundles $reportsPath + echo "${{ matrix.test }}" | tr -s '|' '\n' | tee -a "$reportsPath/tests.txt" + find bundles -path '*/root/*overlay2' -prune -o -type f \( -name '*-report.json' -o -name '*.log' -o -name '*.out' -o -name '*.prof' -o -name '*-report.xml' \) -print | xargs sudo tar -czf /tmp/reports.tar.gz + tar -xzf /tmp/reports.tar.gz -C $reportsPath + sudo chown -R $(id -u):$(id -g) $reportsPath + tree -nh $reportsPath + + curl -sSLf localhost:16686/api/traces?service=integration-test-client > $reportsPath/jaeger-trace.json + - + name: Send to Codecov + uses: codecov/codecov-action@v3 + with: + directory: ./bundles/test-integration + env_vars: RUNNER_OS + flags: integration-cli + - + name: Test daemon logs + if: always() + run: | + cat bundles/test-integration/docker.log + - + name: Upload reports + if: always() + uses: actions/upload-artifact@v3 + with: + name: ${{ inputs.storage }}-integration-cli-reports + path: /tmp/reports/* + + integration-cli-report: + runs-on: ubuntu-20.04 + timeout-minutes: 10 + if: always() + needs: + - integration-cli + steps: + - + name: Set up Go + uses: actions/setup-go@v3 + with: + go-version: ${{ env.GO_VERSION }} + - + name: Download reports + uses: actions/download-artifact@v3 + with: + name: ${{ inputs.storage }}-integration-cli-reports + path: /tmp/reports + - + name: Install teststat + run: | + go install github.com/vearutop/teststat@${{ env.TESTSTAT_VERSION }} + - + name: Create summary + run: | + teststat -markdown $(find /tmp/reports -type f -name '*.json' -print0 | xargs -0) >> $GITHUB_STEP_SUMMARY diff --git a/.github/workflows/.windows.yml b/.github/workflows/.windows.yml index 895e81d505..b92e40438b 100644 --- a/.github/workflows/.windows.yml +++ b/.github/workflows/.windows.yml @@ -9,6 +9,10 @@ on: os: required: true type: string + storage: + required: true + type: string + default: "graphdriver" send_coverage: required: false type: boolean @@ -101,7 +105,7 @@ jobs: name: Upload artifacts uses: actions/upload-artifact@v3 with: - name: build-${{ inputs.os }} + name: build-${{ inputs.storage }}-${{ inputs.os }} path: ${{ env.BIN_OUT }}/* if-no-files-found: error retention-days: 2 @@ -183,7 +187,7 @@ jobs: if: always() uses: actions/upload-artifact@v3 with: - name: ${{ inputs.os }}-unit-reports + name: ${{ inputs.os }}-${{ inputs.storage }}-unit-reports path: ${{ env.GOPATH }}\src\github.com\docker\docker\bundles\* unit-test-report: @@ -201,7 +205,7 @@ jobs: name: Download artifacts uses: actions/download-artifact@v3 with: - name: ${{ inputs.os }}-unit-reports + name: ${{ inputs.os }}-${{ inputs.storage }}-unit-reports path: /tmp/artifacts - name: Install teststat @@ -254,6 +258,8 @@ jobs: strategy: fail-fast: false matrix: + storage: + - ${{ inputs.storage }} runtime: - builtin - containerd @@ -279,7 +285,7 @@ jobs: name: Download artifacts uses: actions/download-artifact@v3 with: - name: build-${{ inputs.os }} + name: build-${{ inputs.storage }}-${{ inputs.os }} path: ${{ env.BIN_OUT }} - name: Init @@ -469,7 +475,7 @@ jobs: if: always() uses: actions/upload-artifact@v3 with: - name: ${{ inputs.os }}-integration-reports-${{ matrix.runtime }} + name: ${{ inputs.os }}-${{ inputs.storage }}-integration-reports-${{ matrix.runtime }} path: ${{ env.GOPATH }}\src\github.com\docker\docker\bundles\* integration-test-report: @@ -480,6 +486,8 @@ jobs: strategy: fail-fast: false matrix: + storage: + - ${{ inputs.storage }} runtime: - builtin - containerd @@ -493,7 +501,7 @@ jobs: name: Download artifacts uses: actions/download-artifact@v3 with: - name: ${{ inputs.os }}-integration-reports-${{ matrix.runtime }} + name: ${{ inputs.os }}-${{ inputs.storage }}-integration-reports-${{ matrix.runtime }} path: /tmp/artifacts - name: Install teststat diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d32bdb9bbb..77c2b116b2 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -16,11 +16,6 @@ on: env: GO_VERSION: "1.21.3" - GOTESTLIST_VERSION: v0.3.1 - TESTSTAT_VERSION: v0.1.3 - ITG_CLI_MATRIX_SIZE: 6 - DOCKER_EXPERIMENTAL: 1 - DOCKER_GRAPHDRIVER: overlay2 jobs: validate-dco: @@ -59,6 +54,18 @@ jobs: *.cache-to=type=gha,scope=dev${{ matrix.mode }},mode=max *.output=type=cacheonly + test: + needs: + - build-dev + uses: ./.github/workflows/.test.yml + strategy: + fail-fast: false + matrix: + storage: + - graphdriver + with: + storage: ${{ matrix.storage }} + validate-prepare: runs-on: ubuntu-20.04 needs: @@ -114,417 +121,7 @@ jobs: run: | make -o build validate-${{ matrix.script }} - unit: - runs-on: ubuntu-20.04 - timeout-minutes: 120 - needs: - - build-dev - steps: - - - name: Checkout - uses: actions/checkout@v3 - - - name: Set up runner - uses: ./.github/actions/setup-runner - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - - - name: Build dev image - uses: docker/bake-action@v2 - with: - targets: dev - set: | - dev.cache-from=type=gha,scope=dev - - - name: Test - run: | - make -o build test-unit - - - name: Prepare reports - if: always() - run: | - mkdir -p bundles /tmp/reports - find bundles -path '*/root/*overlay2' -prune -o -type f \( -name '*-report.json' -o -name '*.log' -o -name '*.out' -o -name '*.prof' -o -name '*-report.xml' \) -print | xargs sudo tar -czf /tmp/reports.tar.gz - tar -xzf /tmp/reports.tar.gz -C /tmp/reports - sudo chown -R $(id -u):$(id -g) /tmp/reports - tree -nh /tmp/reports - - - name: Send to Codecov - uses: codecov/codecov-action@v3 - with: - directory: ./bundles - env_vars: RUNNER_OS - flags: unit - - - name: Upload reports - if: always() - uses: actions/upload-artifact@v3 - with: - name: unit-reports - path: /tmp/reports/* - - unit-report: - runs-on: ubuntu-20.04 - timeout-minutes: 10 - if: always() - needs: - - unit - steps: - - - name: Set up Go - uses: actions/setup-go@v3 - with: - go-version: ${{ env.GO_VERSION }} - - - name: Download reports - uses: actions/download-artifact@v3 - with: - name: unit-reports - path: /tmp/reports - - - name: Install teststat - run: | - go install github.com/vearutop/teststat@${{ env.TESTSTAT_VERSION }} - - - name: Create summary - run: | - teststat -markdown $(find /tmp/reports -type f -name '*.json' -print0 | xargs -0) >> $GITHUB_STEP_SUMMARY - - docker-py: - runs-on: ubuntu-20.04 - timeout-minutes: 120 - needs: - - build-dev - steps: - - - name: Checkout - uses: actions/checkout@v3 - - - name: Set up runner - uses: ./.github/actions/setup-runner - - - name: Set up tracing - uses: ./.github/actions/setup-tracing - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - - - name: Build dev image - uses: docker/bake-action@v2 - with: - targets: dev - set: | - dev.cache-from=type=gha,scope=dev - - - name: Test - run: | - make -o build test-docker-py - - - name: Prepare reports - if: always() - run: | - mkdir -p bundles /tmp/reports - find bundles -path '*/root/*overlay2' -prune -o -type f \( -name '*-report.json' -o -name '*.log' -o -name '*.out' -o -name '*.prof' -o -name '*-report.xml' \) -print | xargs sudo tar -czf /tmp/reports.tar.gz - tar -xzf /tmp/reports.tar.gz -C /tmp/reports - sudo chown -R $(id -u):$(id -g) /tmp/reports - tree -nh /tmp/reports - - curl -sSLf localhost:16686/api/traces?service=integration-test-client > /tmp/reports/jaeger-trace.json - - - name: Test daemon logs - if: always() - run: | - cat bundles/test-docker-py/docker.log - - - name: Upload reports - if: always() - uses: actions/upload-artifact@v3 - with: - name: docker-py-reports - path: /tmp/reports/* - - integration-flaky: - runs-on: ubuntu-20.04 - timeout-minutes: 120 - needs: - - build-dev - steps: - - - name: Checkout - uses: actions/checkout@v3 - - - name: Set up runner - uses: ./.github/actions/setup-runner - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - - - name: Build dev image - uses: docker/bake-action@v2 - with: - targets: dev - set: | - dev.cache-from=type=gha,scope=dev - - - name: Test - run: | - make -o build test-integration-flaky - env: - TEST_SKIP_INTEGRATION_CLI: 1 - - integration: - runs-on: ${{ matrix.os }} - timeout-minutes: 120 - needs: - - build-dev - strategy: - fail-fast: false - matrix: - os: - - ubuntu-20.04 - - ubuntu-22.04 - mode: - - "" - - rootless - - systemd - #- rootless-systemd FIXME: https://github.com/moby/moby/issues/44084 - steps: - - - name: Checkout - uses: actions/checkout@v3 - - - name: Set up runner - uses: ./.github/actions/setup-runner - - - name: Set up tracing - uses: ./.github/actions/setup-tracing - - - name: Prepare - run: | - CACHE_DEV_SCOPE=dev - if [[ "${{ matrix.mode }}" == *"rootless"* ]]; then - echo "DOCKER_ROOTLESS=1" >> $GITHUB_ENV - fi - if [[ "${{ matrix.mode }}" == *"systemd"* ]]; then - echo "SYSTEMD=true" >> $GITHUB_ENV - CACHE_DEV_SCOPE="${CACHE_DEV_SCOPE}systemd" - fi - echo "CACHE_DEV_SCOPE=${CACHE_DEV_SCOPE}" >> $GITHUB_ENV - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - - - name: Build dev image - uses: docker/bake-action@v2 - with: - targets: dev - set: | - dev.cache-from=type=gha,scope=${{ env.CACHE_DEV_SCOPE }} - - - name: Test - run: | - make -o build test-integration - env: - TEST_SKIP_INTEGRATION_CLI: 1 - TESTCOVERAGE: 1 - - - name: Prepare reports - if: always() - run: | - reportsPath="/tmp/reports/${{ matrix.os }}" - if [ -n "${{ matrix.mode }}" ]; then - reportsPath="$reportsPath-${{ matrix.mode }}" - fi - mkdir -p bundles $reportsPath - find bundles -path '*/root/*overlay2' -prune -o -type f \( -name '*-report.json' -o -name '*.log' -o -name '*.out' -o -name '*.prof' -o -name '*-report.xml' \) -print | xargs sudo tar -czf /tmp/reports.tar.gz - tar -xzf /tmp/reports.tar.gz -C $reportsPath - sudo chown -R $(id -u):$(id -g) $reportsPath - tree -nh $reportsPath - - curl -sSLf localhost:16686/api/traces?service=integration-test-client > $reportsPath/jaeger-trace.json - - - name: Send to Codecov - uses: codecov/codecov-action@v3 - with: - directory: ./bundles/test-integration - env_vars: RUNNER_OS - flags: integration,${{ matrix.mode }} - - - name: Test daemon logs - if: always() - run: | - cat bundles/test-integration/docker.log - - - name: Upload reports - if: always() - uses: actions/upload-artifact@v3 - with: - name: integration-reports - path: /tmp/reports/* - - integration-report: - runs-on: ubuntu-20.04 - timeout-minutes: 10 - if: always() - needs: - - integration - steps: - - - name: Set up Go - uses: actions/setup-go@v3 - with: - go-version: ${{ env.GO_VERSION }} - - - name: Download reports - uses: actions/download-artifact@v3 - with: - name: integration-reports - path: /tmp/reports - - - name: Install teststat - run: | - go install github.com/vearutop/teststat@${{ env.TESTSTAT_VERSION }} - - - name: Create summary - run: | - teststat -markdown $(find /tmp/reports -type f -name '*.json' -print0 | xargs -0) >> $GITHUB_STEP_SUMMARY - - integration-cli-prepare: - runs-on: ubuntu-20.04 - needs: - - validate-dco - outputs: - matrix: ${{ steps.tests.outputs.matrix }} - steps: - - - name: Checkout - uses: actions/checkout@v3 - - - name: Set up Go - uses: actions/setup-go@v3 - with: - go-version: ${{ env.GO_VERSION }} - - - name: Install gotestlist - run: - go install github.com/crazy-max/gotestlist/cmd/gotestlist@${{ env.GOTESTLIST_VERSION }} - - - name: Create matrix - id: tests - working-directory: ./integration-cli - run: | - # This step creates a matrix for integration-cli tests. Tests suites - # are distributed in integration-cli job through a matrix. There is - # also overrides being added to the matrix like "./..." to run - # "Test integration" step exclusively and specific tests suites that - # take a long time to run. - matrix="$(gotestlist -d ${{ env.ITG_CLI_MATRIX_SIZE }} -o "./..." -o "DockerSwarmSuite" -o "DockerNetworkSuite|DockerExternalVolumeSuite" ./...)" - echo "matrix=$matrix" >> $GITHUB_OUTPUT - - - name: Show matrix - run: | - echo ${{ steps.tests.outputs.matrix }} - - integration-cli: - runs-on: ubuntu-20.04 - timeout-minutes: 120 - needs: - - build-dev - - integration-cli-prepare - strategy: - fail-fast: false - matrix: - test: ${{ fromJson(needs.integration-cli-prepare.outputs.matrix) }} - steps: - - - name: Checkout - uses: actions/checkout@v3 - - - name: Set up runner - uses: ./.github/actions/setup-runner - - - name: Set up tracing - uses: ./.github/actions/setup-tracing - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - - - name: Build dev image - uses: docker/bake-action@v2 - with: - targets: dev - set: | - dev.cache-from=type=gha,scope=dev - - - name: Test - run: | - make -o build test-integration - env: - TEST_SKIP_INTEGRATION: 1 - TESTCOVERAGE: 1 - TESTFLAGS: "-test.run (${{ matrix.test }})/" - - - name: Prepare reports - if: always() - run: | - reportsPath=/tmp/reports/$(echo -n "${{ matrix.test }}" | sha256sum | cut -d " " -f 1) - mkdir -p bundles $reportsPath - echo "${{ matrix.test }}" | tr -s '|' '\n' | tee -a "$reportsPath/tests.txt" - find bundles -path '*/root/*overlay2' -prune -o -type f \( -name '*-report.json' -o -name '*.log' -o -name '*.out' -o -name '*.prof' -o -name '*-report.xml' \) -print | xargs sudo tar -czf /tmp/reports.tar.gz - tar -xzf /tmp/reports.tar.gz -C $reportsPath - sudo chown -R $(id -u):$(id -g) $reportsPath - tree -nh $reportsPath - - curl -sSLf localhost:16686/api/traces?service=integration-test-client > $reportsPath/jaeger-trace.json - - - name: Send to Codecov - uses: codecov/codecov-action@v3 - with: - directory: ./bundles/test-integration - env_vars: RUNNER_OS - flags: integration-cli - - - name: Test daemon logs - if: always() - run: | - cat bundles/test-integration/docker.log - - - name: Upload reports - if: always() - uses: actions/upload-artifact@v3 - with: - name: integration-cli-reports - path: /tmp/reports/* - - integration-cli-report: - runs-on: ubuntu-20.04 - timeout-minutes: 10 - if: always() - needs: - - integration-cli - steps: - - - name: Set up Go - uses: actions/setup-go@v3 - with: - go-version: ${{ env.GO_VERSION }} - - - name: Download reports - uses: actions/download-artifact@v3 - with: - name: integration-cli-reports - path: /tmp/reports - - - name: Install teststat - run: | - go install github.com/vearutop/teststat@${{ env.TESTSTAT_VERSION }} - - - name: Create summary - run: | - teststat -markdown $(find /tmp/reports -type f -name '*.json' -print0 | xargs -0) >> $GITHUB_STEP_SUMMARY - - prepare-smoke: + smoke-prepare: runs-on: ubuntu-20.04 needs: - validate-dco @@ -548,11 +145,11 @@ jobs: smoke: runs-on: ubuntu-20.04 needs: - - prepare-smoke + - smoke-prepare strategy: fail-fast: false matrix: - platform: ${{ fromJson(needs.prepare-smoke.outputs.matrix) }} + platform: ${{ fromJson(needs.smoke-prepare.outputs.matrix) }} steps: - name: Checkout diff --git a/.github/workflows/windows-2019.yml b/.github/workflows/windows-2019.yml index 4231ab2946..ab6b76825c 100644 --- a/.github/workflows/windows-2019.yml +++ b/.github/workflows/windows-2019.yml @@ -17,6 +17,12 @@ jobs: needs: - validate-dco uses: ./.github/workflows/.windows.yml + strategy: + fail-fast: false + matrix: + storage: + - graphdriver with: os: windows-2019 + storage: ${{ matrix.storage }} send_coverage: false diff --git a/.github/workflows/windows-2022.yml b/.github/workflows/windows-2022.yml index 1bcc413570..ea11bb7117 100644 --- a/.github/workflows/windows-2022.yml +++ b/.github/workflows/windows-2022.yml @@ -20,6 +20,12 @@ jobs: needs: - validate-dco uses: ./.github/workflows/.windows.yml + strategy: + fail-fast: false + matrix: + storage: + - graphdriver with: os: windows-2022 + storage: ${{ matrix.storage }} send_coverage: true