diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 7c1f4ab2cb..24f585c11b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -502,3 +502,55 @@ jobs: 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 }} diff --git a/Dockerfile b/Dockerfile index 1abd6c2230..3c3b4cee60 100644 --- a/Dockerfile +++ b/Dockerfile @@ -619,6 +619,20 @@ COPY --from=containerutil /build/ / COPY --from=vpnkit / / COPY --from=build /build / +# smoke tests +# usage: +# > docker buildx bake binary-smoketest +FROM --platform=$TARGETPLATFORM base AS smoketest +WORKDIR /usr/local/bin +COPY --from=build /build . +RUN < make shell # > SYSTEMD=true make shell diff --git a/docker-bake.hcl b/docker-bake.hcl index 95c1c6bcff..899551f9e4 100644 --- a/docker-bake.hcl +++ b/docker-bake.hcl @@ -124,6 +124,20 @@ target "binary-cross" { inherits = ["binary", "_platforms"] } +target "binary-smoketest" { + inherits = ["_common"] + target = "smoketest" + output = ["type=cacheonly"] + platforms = [ + "linux/amd64", + "linux/arm/v6", + "linux/arm/v7", + "linux/arm64", + "linux/ppc64le", + "linux/s390x" + ] +} + # # same as binary but with extra tools as well (containerd, runc, ...) #