mirror of
				https://gitea.com/docker/build-push-action.git
				synced 2025-10-31 00:58:18 +07:00 
			
		
		
		
	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: | ||||
|   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: | ||||
|     - cron: '0 10 * * *' | ||||
|   push: | ||||
| @ -22,16 +10,9 @@ on: | ||||
|     tags: | ||||
|       - '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: | ||||
|   build: | ||||
|     runs-on: ubuntu-latest | ||||
|     uses: ./.github/workflows/.e2e-run.yml | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
| @ -118,86 +99,12 @@ jobs: | ||||
|             name: Nexus | ||||
|             id: nexus | ||||
|             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: | ||||
|           images: ${{ env.REGISTRY_SLUG || matrix.slug }} | ||||
|           tags: | | ||||
|             type=ref,event=branch | ||||
|             type=ref,event=tag | ||||
|             type=raw,value=${{ inputs.tag }},enable=${{ inputs.tag != '' }} | ||||
|       - | ||||
|         name: Set up QEMU | ||||
|         uses: docker/setup-qemu-action@v2 | ||||
|       - | ||||
|         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 .}}' | ||||
|       id: ${{ matrix.id }} | ||||
|       type: ${{ matrix.type }} | ||||
|       name: ${{ matrix.name }} | ||||
|       registry: ${{ matrix.registry }} | ||||
|       slug: ${{ matrix.slug }} | ||||
|       username_secret: ${{ matrix.username_secret }} | ||||
|       password_secret: ${{ matrix.password_secret }} | ||||
|     secrets: inherit | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user