131 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			131 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| # 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
 | |
|           sudo chown $(id -u):$(id -g) -R ~/.docker
 | |
|       -
 | |
|         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@v3
 | |
|       -
 | |
|         name: Set up Docker Buildx
 | |
|         uses: docker/setup-buildx-action@v3
 | |
|         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@v3
 | |
|         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 .}}'
 | 
