Merge pull request #876 from crazy-max/e2e-matrix
e2e: test buildx and buildkit edge
This commit is contained in:
		
						commit
						9ec154c4b6
					
				
							
								
								
									
										129
									
								
								.github/workflows/.e2e-run.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										129
									
								
								.github/workflows/.e2e-run.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,129 @@
 | 
				
			|||||||
 | 
					# 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@v3
 | 
				
			||||||
 | 
					      -
 | 
				
			||||||
 | 
					        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@v4
 | 
				
			||||||
 | 
					        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 .}}'
 | 
				
			||||||
							
								
								
									
										111
									
								
								.github/workflows/e2e.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										111
									
								
								.github/workflows/e2e.yml
									
									
									
									
										vendored
									
									
								
							@ -2,18 +2,6 @@ name: e2e
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
on:
 | 
					on:
 | 
				
			||||||
  workflow_dispatch:
 | 
					  workflow_dispatch:
 | 
				
			||||||
    inputs:
 | 
					 | 
				
			||||||
      buildx-version:
 | 
					 | 
				
			||||||
        description: 'Buildx version or Git context'
 | 
					 | 
				
			||||||
        default: 'latest'
 | 
					 | 
				
			||||||
        required: false
 | 
					 | 
				
			||||||
      buildkit-image:
 | 
					 | 
				
			||||||
        description: 'BuildKit image'
 | 
					 | 
				
			||||||
        default: 'moby/buildkit:buildx-stable-1'
 | 
					 | 
				
			||||||
        required: false
 | 
					 | 
				
			||||||
      tag:
 | 
					 | 
				
			||||||
        description: 'Additional tag to push'
 | 
					 | 
				
			||||||
        required: false
 | 
					 | 
				
			||||||
  schedule:
 | 
					  schedule:
 | 
				
			||||||
    - cron: '0 10 * * *'
 | 
					    - cron: '0 10 * * *'
 | 
				
			||||||
  push:
 | 
					  push:
 | 
				
			||||||
@ -22,16 +10,9 @@ on:
 | 
				
			|||||||
    tags:
 | 
					    tags:
 | 
				
			||||||
      - 'v*'
 | 
					      - 'v*'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
env:
 | 
					 | 
				
			||||||
  BUILDX_VERSION: latest
 | 
					 | 
				
			||||||
  BUILDKIT_IMAGE: moby/buildkit:buildx-stable-1
 | 
					 | 
				
			||||||
  HARBOR_VERSION: v2.7.0
 | 
					 | 
				
			||||||
  NEXUS_VERSION: 3.47.1
 | 
					 | 
				
			||||||
  DISTRIBUTION_VERSION: 2.8.1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
jobs:
 | 
					jobs:
 | 
				
			||||||
  build:
 | 
					  build:
 | 
				
			||||||
    runs-on: ubuntu-latest
 | 
					    uses: ./.github/workflows/.e2e-run.yml
 | 
				
			||||||
    strategy:
 | 
					    strategy:
 | 
				
			||||||
      fail-fast: false
 | 
					      fail-fast: false
 | 
				
			||||||
      matrix:
 | 
					      matrix:
 | 
				
			||||||
@ -118,86 +99,12 @@ jobs:
 | 
				
			|||||||
            name: Nexus
 | 
					            name: Nexus
 | 
				
			||||||
            id: nexus
 | 
					            id: nexus
 | 
				
			||||||
            type: local
 | 
					            type: local
 | 
				
			||||||
    steps:
 | 
					 | 
				
			||||||
      -
 | 
					 | 
				
			||||||
        name: Checkout
 | 
					 | 
				
			||||||
        uses: actions/checkout@v3
 | 
					 | 
				
			||||||
      -
 | 
					 | 
				
			||||||
        name: Set up env
 | 
					 | 
				
			||||||
        if: matrix.type == 'local'
 | 
					 | 
				
			||||||
        run: |
 | 
					 | 
				
			||||||
          cat ./.github/e2e/${{ matrix.id }}/env >> $GITHUB_ENV
 | 
					 | 
				
			||||||
      -
 | 
					 | 
				
			||||||
        name: Set up BuildKit config
 | 
					 | 
				
			||||||
        run: |
 | 
					 | 
				
			||||||
          touch /tmp/buildkitd.toml
 | 
					 | 
				
			||||||
          if [ "${{ matrix.type }}" = "local" ]; then
 | 
					 | 
				
			||||||
            echo -e "[registry.\"${{ env.REGISTRY_FQDN }}\"]\nhttp = true\ninsecure = true" > /tmp/buildkitd.toml
 | 
					 | 
				
			||||||
          fi
 | 
					 | 
				
			||||||
      -
 | 
					 | 
				
			||||||
        name: Set up Docker daemon
 | 
					 | 
				
			||||||
        if: matrix.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 ${{ matrix.name }}
 | 
					 | 
				
			||||||
        if: matrix.type == 'local'
 | 
					 | 
				
			||||||
        run: |
 | 
					 | 
				
			||||||
          sudo -E bash ./.github/e2e/${{ matrix.id }}/install.sh
 | 
					 | 
				
			||||||
      -
 | 
					 | 
				
			||||||
        name: Docker meta
 | 
					 | 
				
			||||||
        id: meta
 | 
					 | 
				
			||||||
        uses: docker/metadata-action@v4
 | 
					 | 
				
			||||||
    with:
 | 
					    with:
 | 
				
			||||||
          images: ${{ env.REGISTRY_SLUG || matrix.slug }}
 | 
					      id: ${{ matrix.id }}
 | 
				
			||||||
          tags: |
 | 
					      type: ${{ matrix.type }}
 | 
				
			||||||
            type=ref,event=branch
 | 
					      name: ${{ matrix.name }}
 | 
				
			||||||
            type=ref,event=tag
 | 
					      registry: ${{ matrix.registry }}
 | 
				
			||||||
            type=raw,value=${{ inputs.tag }},enable=${{ inputs.tag != '' }}
 | 
					      slug: ${{ matrix.slug }}
 | 
				
			||||||
      -
 | 
					      username_secret: ${{ matrix.username_secret }}
 | 
				
			||||||
        name: Set up QEMU
 | 
					      password_secret: ${{ matrix.password_secret }}
 | 
				
			||||||
        uses: docker/setup-qemu-action@v2
 | 
					    secrets: inherit
 | 
				
			||||||
      -
 | 
					 | 
				
			||||||
        name: Set up Docker Buildx
 | 
					 | 
				
			||||||
        uses: docker/setup-buildx-action@v2
 | 
					 | 
				
			||||||
        with:
 | 
					 | 
				
			||||||
          version: ${{ inputs.buildx-version || env.BUILDX_VERSION }}
 | 
					 | 
				
			||||||
          config: /tmp/buildkitd.toml
 | 
					 | 
				
			||||||
          buildkitd-flags: --debug --allow-insecure-entitlement security.insecure --allow-insecure-entitlement network.host
 | 
					 | 
				
			||||||
          driver-opts: |
 | 
					 | 
				
			||||||
            image=${{ inputs.buildkit-image || env.BUILDKIT_IMAGE }}
 | 
					 | 
				
			||||||
            network=host
 | 
					 | 
				
			||||||
      -
 | 
					 | 
				
			||||||
        name: Login to Registry
 | 
					 | 
				
			||||||
        if: github.event_name != 'pull_request' && (env.REGISTRY_USER || matrix.username_secret) != ''
 | 
					 | 
				
			||||||
        uses: docker/login-action@v2
 | 
					 | 
				
			||||||
        with:
 | 
					 | 
				
			||||||
          registry: ${{ env.REGISTRY_FQDN || matrix.registry }}
 | 
					 | 
				
			||||||
          username: ${{ env.REGISTRY_USER || secrets[matrix.username_secret] }}
 | 
					 | 
				
			||||||
          password: ${{ env.REGISTRY_PASSWORD || secrets[matrix.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 || matrix.slug }}:master
 | 
					 | 
				
			||||||
          cache-to: type=inline
 | 
					 | 
				
			||||||
      -
 | 
					 | 
				
			||||||
        name: Inspect image
 | 
					 | 
				
			||||||
        run: |
 | 
					 | 
				
			||||||
          docker pull ${{ env.REGISTRY_SLUG || matrix.slug }}:${{ steps.meta.outputs.version }}
 | 
					 | 
				
			||||||
          docker image inspect ${{ env.REGISTRY_SLUG || matrix.slug }}:${{ steps.meta.outputs.version }}
 | 
					 | 
				
			||||||
      -
 | 
					 | 
				
			||||||
        name: Check manifest
 | 
					 | 
				
			||||||
        run: |
 | 
					 | 
				
			||||||
          docker buildx imagetools inspect ${{ env.REGISTRY_SLUG || matrix.slug }}:${{ steps.meta.outputs.version }} --format '{{json .}}'
 | 
					 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user