# reusable workflow name: .e2e-run on: workflow_call: inputs: id: required: false type: string type: required: true type: string name: required: true type: string registry: required: false type: string slug: required: false type: string username_secret: required: false type: string password_secret: required: false type: string env: HARBOR_VERSION: v2.7.0 NEXUS_VERSION: 3.47.1 DISTRIBUTION_VERSION: 2.8.1 jobs: run: runs-on: ubuntu-latest strategy: fail-fast: false matrix: include: - buildx_version: latest buildkit_image: moby/buildkit:buildx-stable-1 - buildx_version: https://github.com/docker/buildx.git#master buildkit_image: moby/buildkit:master steps: - name: Checkout uses: actions/checkout@v4 - name: Set up env if: inputs.type == 'local' run: | cat ./.github/e2e/${{ inputs.id }}/env >> $GITHUB_ENV - name: Set up BuildKit config run: | touch /tmp/buildkitd.toml if [ "${{ inputs.type }}" = "local" ]; then echo -e "[registry.\"${{ env.REGISTRY_FQDN }}\"]\nhttp = true\ninsecure = true" > /tmp/buildkitd.toml fi - name: Set up Docker daemon if: inputs.type == 'local' run: | if [ ! -e /etc/docker/daemon.json ]; then echo '{}' | tee /etc/docker/daemon.json >/dev/null fi DOCKERD_CONFIG=$(jq '.+{"insecure-registries":["http://${{ env.REGISTRY_FQDN }}"]}' /etc/docker/daemon.json) sudo tee /etc/docker/daemon.json <<<"$DOCKERD_CONFIG" >/dev/null sudo service docker restart - name: Install ${{ inputs.name }} if: inputs.type == 'local' run: | sudo -E bash ./.github/e2e/${{ inputs.id }}/install.sh - name: Docker meta id: meta uses: docker/metadata-action@v5 with: images: ${{ env.REGISTRY_SLUG || inputs.slug }} tags: | type=ref,event=branch,enable=${{ matrix.buildx_version == 'latest' && matrix.buildkit_image == 'moby/buildkit:buildx-stable-1' }} type=ref,event=tag,enable=${{ matrix.buildx_version == 'latest' && matrix.buildkit_image == 'moby/buildkit:buildx-stable-1' }} type=raw,gh-runid-${{ github.run_id }} - name: Set up QEMU uses: docker/setup-qemu-action@v2 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 with: version: ${{ matrix.buildx_version }} config: /tmp/buildkitd.toml buildkitd-flags: --debug --allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host driver-opts: | image=${{ matrix.buildkit_image }} network=host - name: Login to Registry if: github.event_name != 'pull_request' && (env.REGISTRY_USER || inputs.username_secret) != '' uses: docker/login-action@v2 with: registry: ${{ env.REGISTRY_FQDN || inputs.registry }} username: ${{ env.REGISTRY_USER || secrets[inputs.username_secret] }} password: ${{ env.REGISTRY_PASSWORD || secrets[inputs.password_secret] }} - name: Build and push uses: ./ with: context: ./test file: ./test/multi.Dockerfile platforms: linux/386,linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} cache-from: type=registry,ref=${{ env.REGISTRY_SLUG || inputs.slug }}:master cache-to: type=inline - name: Inspect image run: | docker pull ${{ env.REGISTRY_SLUG || inputs.slug }}:${{ steps.meta.outputs.version }} docker image inspect ${{ env.REGISTRY_SLUG || inputs.slug }}:${{ steps.meta.outputs.version }} - name: Check manifest run: | docker buildx imagetools inspect ${{ env.REGISTRY_SLUG || inputs.slug }}:${{ steps.meta.outputs.version }} --format '{{json .}}'