mirror of
				https://gitea.com/docker/build-push-action.git
				synced 2025-10-31 09:08:18 +07:00 
			
		
		
		
	e2e: test buildx and buildkit edge
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
This commit is contained in:
		
							parent
							
								
									4b0752a2b1
								
							
						
					
					
						commit
						aca01f02d5
					
				
							
								
								
									
										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 .}}' | ||||||
							
								
								
									
										113
									
								
								.github/workflows/e2e.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										113
									
								
								.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: |     with: | ||||||
|       - |       id: ${{ matrix.id }} | ||||||
|         name: Checkout |       type: ${{ matrix.type }} | ||||||
|         uses: actions/checkout@v3 |       name: ${{ matrix.name }} | ||||||
|       - |       registry: ${{ matrix.registry }} | ||||||
|         name: Set up env |       slug: ${{ matrix.slug }} | ||||||
|         if: matrix.type == 'local' |       username_secret: ${{ matrix.username_secret }} | ||||||
|         run: | |       password_secret: ${{ matrix.password_secret }} | ||||||
|           cat ./.github/e2e/${{ matrix.id }}/env >> $GITHUB_ENV |     secrets: inherit | ||||||
|       - |  | ||||||
|         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 .}}' |  | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user