d6f340e784
I had a CI run fail to "Upload reports": Exponential backoff for retry #1. Waiting for 4565 milliseconds before continuing the upload at offset 0 Finished backoff for retry #1, continuing with upload Total file count: 211 ---- Processed file #160 (75.8%) ... Total file count: 211 ---- Processed file #164 (77.7%) Total file count: 211 ---- Processed file #164 (77.7%) Total file count: 211 ---- Processed file #164 (77.7%) A 503 status code has been received, will attempt to retry the upload ##### Begin Diagnostic HTTP information ##### Status Code: 503 Status Message: Service Unavailable Header Information: { "content-length": "592", "content-type": "application/json; charset=utf-8", "date": "Mon, 21 Aug 2023 14:08:10 GMT", "server": "Kestrel", "cache-control": "no-store,no-cache", "pragma": "no-cache", "strict-transport-security": "max-age=2592000", "x-tfs-processid": "b2fc902c-011a-48be-858d-c62e9c397cb6", "activityid": "49a48b53-0411-4ff3-86a7-4528e3f71ba2", "x-tfs-session": "49a48b53-0411-4ff3-86a7-4528e3f71ba2", "x-vss-e2eid": "49a48b53-0411-4ff3-86a7-4528e3f71ba2", "x-vss-senderdeploymentid": "63be6134-28d1-8c82-e969-91f4e88fcdec", "x-frame-options": "SAMEORIGIN" } ###### End Diagnostic HTTP information ###### Retry limit has been reached for chunk at offset 0 to https://pipelinesghubeus5.actions.githubusercontent.com/Y2huPMnV2RyiTvKoReSyXTCrcRyxUdSDRZYoZr0ONBvpl5e9Nu/_apis/resources/Containers/8331549?itemPath=integration-reports%2Fubuntu-22.04-systemd%2Fbundles%2Ftest-integration%2FTestInfoRegistryMirrors%2Fd20ac12e48cea%2Fdocker.log Warning: Aborting upload for /tmp/reports/ubuntu-22.04-systemd/bundles/test-integration/TestInfoRegistryMirrors/d20ac12e48cea/docker.log due to failure Error: aborting artifact upload Total file count: 211 ---- Processed file #165 (78.1%) A 503 status code has been received, will attempt to retry the upload Exponential backoff for retry #1. Waiting for 5799 milliseconds before continuing the upload at offset 0 As a result, the "Download reports" continued retrying: ... Total file count: 1004 ---- Processed file #436 (43.4%) Total file count: 1004 ---- Processed file #436 (43.4%) Total file count: 1004 ---- Processed file #436 (43.4%) An error occurred while attempting to download a file Error: Request timeout: /Y2huPMnV2RyiTvKoReSyXTCrcRyxUdSDRZYoZr0ONBvpl5e9Nu/_apis/resources/Containers/8331549?itemPath=integration-reports%2Fubuntu-20.04%2Fbundles%2Ftest-integration%2FTestCreateWithDuplicateNetworkNames%2Fd47798cc212d1%2Fdocker.log at ClientRequest.<anonymous> (/home/runner/work/_actions/actions/download-artifact/v3/dist/index.js:3681:26) at Object.onceWrapper (node:events:627:28) at ClientRequest.emit (node:events:513:28) at TLSSocket.emitRequestTimeout (node:_http_client:839:9) at Object.onceWrapper (node:events:627:28) at TLSSocket.emit (node:events:525:35) at TLSSocket.Socket._onTimeout (node:net:550:8) at listOnTimeout (node:internal/timers:559:17) at processTimers (node:internal/timers:502:7) Exponential backoff for retry #1. Waiting for 5305 milliseconds before continuing the download Total file count: 1004 ---- Processed file #436 (43.4%) And, it looks like GitHub doesn't allow cancelling the job, possibly because it is defined with `if: always()`? Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
562 lines
15 KiB
YAML
562 lines
15 KiB
YAML
name: test
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
push:
|
|
branches:
|
|
- 'master'
|
|
- '[0-9]+.[0-9]+'
|
|
tags:
|
|
- 'v*'
|
|
pull_request:
|
|
|
|
env:
|
|
GO_VERSION: "1.20.7"
|
|
GOTESTLIST_VERSION: v0.3.1
|
|
TESTSTAT_VERSION: v0.1.3
|
|
ITG_CLI_MATRIX_SIZE: 6
|
|
DOCKER_EXPERIMENTAL: 1
|
|
DOCKER_GRAPHDRIVER: overlay2
|
|
|
|
jobs:
|
|
validate-dco:
|
|
uses: ./.github/workflows/.dco.yml
|
|
|
|
build-dev:
|
|
runs-on: ubuntu-20.04
|
|
needs:
|
|
- validate-dco
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
mode:
|
|
- ""
|
|
- systemd
|
|
steps:
|
|
-
|
|
name: Prepare
|
|
run: |
|
|
if [ "${{ matrix.mode }}" = "systemd" ]; then
|
|
echo "SYSTEMD=true" >> $GITHUB_ENV
|
|
fi
|
|
-
|
|
name: Checkout
|
|
uses: actions/checkout@v3
|
|
-
|
|
name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v2
|
|
-
|
|
name: Build dev image
|
|
uses: docker/bake-action@v2
|
|
with:
|
|
targets: dev
|
|
set: |
|
|
*.cache-from=type=gha,scope=dev${{ matrix.mode }}
|
|
*.cache-to=type=gha,scope=dev${{ matrix.mode }},mode=max
|
|
*.output=type=cacheonly
|
|
|
|
validate-prepare:
|
|
runs-on: ubuntu-20.04
|
|
needs:
|
|
- validate-dco
|
|
outputs:
|
|
matrix: ${{ steps.scripts.outputs.matrix }}
|
|
steps:
|
|
-
|
|
name: Checkout
|
|
uses: actions/checkout@v3
|
|
-
|
|
name: Create matrix
|
|
id: scripts
|
|
run: |
|
|
scripts=$(cd ./hack/validate && jq -nc '$ARGS.positional - ["all", "default", "dco"] | map(select(test("[.]")|not)) + ["generate-files"]' --args *)
|
|
echo "matrix=$scripts" >> $GITHUB_OUTPUT
|
|
-
|
|
name: Show matrix
|
|
run: |
|
|
echo ${{ steps.scripts.outputs.matrix }}
|
|
|
|
validate:
|
|
runs-on: ubuntu-20.04
|
|
timeout-minutes: 120
|
|
needs:
|
|
- validate-prepare
|
|
- build-dev
|
|
strategy:
|
|
fail-fast: true
|
|
matrix:
|
|
script: ${{ fromJson(needs.validate-prepare.outputs.matrix) }}
|
|
steps:
|
|
-
|
|
name: Checkout
|
|
uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 0
|
|
-
|
|
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: Validate
|
|
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 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
|
|
-
|
|
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: 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
|
|
-
|
|
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 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
|
|
-
|
|
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:
|
|
runs-on: ubuntu-20.04
|
|
needs:
|
|
- validate-dco
|
|
outputs:
|
|
matrix: ${{ steps.platforms.outputs.matrix }}
|
|
steps:
|
|
-
|
|
name: Checkout
|
|
uses: actions/checkout@v3
|
|
-
|
|
name: Create matrix
|
|
id: platforms
|
|
run: |
|
|
matrix="$(docker buildx bake binary-smoketest --print | jq -cr '.target."binary-smoketest".platforms')"
|
|
echo "matrix=$matrix" >> $GITHUB_OUTPUT
|
|
-
|
|
name: Show matrix
|
|
run: |
|
|
echo ${{ steps.platforms.outputs.matrix }}
|
|
|
|
smoke:
|
|
runs-on: ubuntu-20.04
|
|
needs:
|
|
- prepare-smoke
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
platform: ${{ fromJson(needs.prepare-smoke.outputs.matrix) }}
|
|
steps:
|
|
-
|
|
name: Checkout
|
|
uses: actions/checkout@v3
|
|
-
|
|
name: Prepare
|
|
run: |
|
|
platform=${{ matrix.platform }}
|
|
echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV
|
|
-
|
|
name: Set up QEMU
|
|
uses: docker/setup-qemu-action@v2
|
|
-
|
|
name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v2
|
|
-
|
|
name: Test
|
|
uses: docker/bake-action@v2
|
|
with:
|
|
targets: binary-smoketest
|
|
set: |
|
|
*.platform=${{ matrix.platform }}
|