130 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			130 lines
		
	
	
		
			4.3 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@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 .}}'
 |