306 lines
		
	
	
		
			8.1 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			306 lines
		
	
	
		
			8.1 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| name: ci
 | |
| 
 | |
| on:
 | |
|   push:
 | |
|     branches: master
 | |
|     tags:
 | |
|       - 'v*.*.*'
 | |
|   pull_request:
 | |
|     branches: master
 | |
| 
 | |
| jobs:
 | |
|   git-context:
 | |
|     runs-on: ubuntu-latest
 | |
|     strategy:
 | |
|       fail-fast: false
 | |
|       matrix:
 | |
|         buildx-version:
 | |
|           - latest
 | |
|     services:
 | |
|       registry:
 | |
|         image: registry:2
 | |
|         ports:
 | |
|           - 5000:5000
 | |
|     steps:
 | |
|       -
 | |
|         name: Checkout
 | |
|         uses: actions/checkout@v2.3.2
 | |
|       -
 | |
|         name: Set up QEMU
 | |
|         uses: docker/setup-qemu-action@v1
 | |
|         with:
 | |
|           platforms: all
 | |
|       -
 | |
|         name: Set up Docker Buildx
 | |
|         id: buildx
 | |
|         uses: docker/setup-buildx-action@v1
 | |
|         with:
 | |
|           version: ${{ matrix.buildx-version }}
 | |
|           driver-opts: network=host
 | |
|       -
 | |
|         name: Build and push
 | |
|         id: docker_build
 | |
|         uses: ./
 | |
|         with:
 | |
|           file: ./test/Dockerfile
 | |
|           builder: ${{ steps.buildx.outputs.name }}
 | |
|           platforms: linux/amd64,linux/arm64
 | |
|           push: true
 | |
|           tags: |
 | |
|             localhost:5000/name/app:latest
 | |
|             localhost:5000/name/app:1.0.0
 | |
|           secrets: |
 | |
|             GIT_AUTH_TOKEN=${{ github.token }}
 | |
|       -
 | |
|         name: Inspect
 | |
|         run: |
 | |
|           docker buildx imagetools inspect localhost:5000/name/app:1.0.0
 | |
|       -
 | |
|         name: Image digest
 | |
|         run: echo ${{ steps.docker_build.outputs.digest }}
 | |
|       -
 | |
|         name: Dump context
 | |
|         if: always()
 | |
|         uses: crazy-max/ghaction-dump-context@v1
 | |
| 
 | |
|   path-context:
 | |
|     runs-on: ubuntu-latest
 | |
|     strategy:
 | |
|       fail-fast: false
 | |
|       matrix:
 | |
|         buildx-version:
 | |
|           - ""
 | |
|           - latest
 | |
|     services:
 | |
|       registry:
 | |
|         image: registry:2
 | |
|         ports:
 | |
|           - 5000:5000
 | |
|     steps:
 | |
|       -
 | |
|         name: Checkout
 | |
|         uses: actions/checkout@v2.3.2
 | |
|       -
 | |
|         name: Set up QEMU
 | |
|         uses: docker/setup-qemu-action@v1
 | |
|         with:
 | |
|           platforms: all
 | |
|       -
 | |
|         name: Set up Docker Buildx
 | |
|         id: buildx
 | |
|         uses: docker/setup-buildx-action@v1
 | |
|         with:
 | |
|           version: ${{ matrix.buildx-version }}
 | |
|           driver-opts: network=host
 | |
|       -
 | |
|         name: Build and push
 | |
|         id: docker_build
 | |
|         uses: ./
 | |
|         with:
 | |
|           context: ./test
 | |
|           file: ./test/Dockerfile
 | |
|           builder: ${{ steps.buildx.outputs.name }}
 | |
|           push: true
 | |
|           tags: |
 | |
|             localhost:5000/name/app:latest
 | |
|             localhost:5000/name/app:1.0.0
 | |
|       -
 | |
|         name: Inspect
 | |
|         run: |
 | |
|           docker buildx imagetools inspect localhost:5000/name/app:1.0.0
 | |
|       -
 | |
|         name: Image digest
 | |
|         run: echo ${{ steps.docker_build.outputs.digest }}
 | |
|       -
 | |
|         name: Dump context
 | |
|         if: always()
 | |
|         uses: crazy-max/ghaction-dump-context@v1
 | |
| 
 | |
|   multi:
 | |
|     runs-on: ubuntu-latest
 | |
|     strategy:
 | |
|       fail-fast: false
 | |
|       matrix:
 | |
|         buildx-version:
 | |
|           - ""
 | |
|           - latest
 | |
|         dockerfile:
 | |
|           - multi
 | |
|           - multi-sudo
 | |
|     services:
 | |
|       registry:
 | |
|         image: registry:2
 | |
|         ports:
 | |
|           - 5000:5000
 | |
|     steps:
 | |
|       -
 | |
|         name: Checkout
 | |
|         uses: actions/checkout@v2.3.2
 | |
|       -
 | |
|         name: Set up QEMU
 | |
|         uses: docker/setup-qemu-action@v1
 | |
|         with:
 | |
|           platforms: all
 | |
|       -
 | |
|         name: Set up Docker Buildx
 | |
|         id: buildx
 | |
|         uses: docker/setup-buildx-action@v1
 | |
|         with:
 | |
|           version: ${{ matrix.buildx-version }}
 | |
|           driver-opts: network=host
 | |
|       -
 | |
|         name: Build and push
 | |
|         id: docker_build
 | |
|         uses: ./
 | |
|         with:
 | |
|           context: ./test
 | |
|           file: ./test/Dockerfile-${{ matrix.dockerfile }}
 | |
|           builder: ${{ steps.buildx.outputs.name }}
 | |
|           platforms: linux/amd64,linux/arm64
 | |
|           push: true
 | |
|           tags: |
 | |
|             localhost:5000/name/app:latest
 | |
|             localhost:5000/name/app:1.0.0
 | |
|       -
 | |
|         name: Inspect
 | |
|         run: |
 | |
|           docker buildx imagetools inspect localhost:5000/name/app:1.0.0
 | |
|       -
 | |
|         name: Image digest
 | |
|         run: echo ${{ steps.docker_build.outputs.digest }}
 | |
|       -
 | |
|         name: Dump context
 | |
|         if: always()
 | |
|         uses: crazy-max/ghaction-dump-context@v1
 | |
| 
 | |
|   github-cache:
 | |
|     runs-on: ubuntu-latest
 | |
|     services:
 | |
|       registry:
 | |
|         image: registry:2
 | |
|         ports:
 | |
|           - 5000:5000
 | |
|     steps:
 | |
|       -
 | |
|         name: Checkout
 | |
|         uses: actions/checkout@v2.3.2
 | |
|       -
 | |
|         name: Set up QEMU
 | |
|         uses: docker/setup-qemu-action@v1
 | |
|         with:
 | |
|           platforms: all
 | |
|       -
 | |
|         name: Set up Docker Buildx
 | |
|         id: buildx
 | |
|         uses: docker/setup-buildx-action@v1
 | |
|         with:
 | |
|           driver-opts: network=host
 | |
|       -
 | |
|         name: Cache Docker layers
 | |
|         uses: actions/cache@v2
 | |
|         id: cache
 | |
|         with:
 | |
|           path: /tmp/.buildx-cache
 | |
|           key: ${{ runner.os }}-buildx-${{ github.sha }}
 | |
|           restore-keys: |
 | |
|             ${{ runner.os }}-buildx-
 | |
|       -
 | |
|         name: Build and push
 | |
|         id: docker_build
 | |
|         uses: ./
 | |
|         with:
 | |
|           context: ./test
 | |
|           file: ./test/Dockerfile-multi-golang
 | |
|           builder: ${{ steps.buildx.outputs.name }}
 | |
|           platforms: linux/amd64,linux/arm64
 | |
|           push: true
 | |
|           tags: |
 | |
|             localhost:5000/name/app:latest
 | |
|             localhost:5000/name/app:1.0.0
 | |
|           cache-from: type=local,src=/tmp/.buildx-cache
 | |
|           cache-to: type=local,dest=/tmp/.buildx-cache
 | |
|       -
 | |
|         name: Inspect
 | |
|         run: |
 | |
|           docker buildx imagetools inspect localhost:5000/name/app:1.0.0
 | |
|       -
 | |
|         name: Image digest
 | |
|         run: echo ${{ steps.docker_build.outputs.digest }}
 | |
|       -
 | |
|         name: Cache hit
 | |
|         run: echo ${{ steps.cache.outputs.cache-hit }}
 | |
|       -
 | |
|         name: Dump context
 | |
|         if: always()
 | |
|         uses: crazy-max/ghaction-dump-context@v1
 | |
| 
 | |
|   tags-labels:
 | |
|     runs-on: ubuntu-latest
 | |
|     services:
 | |
|       registry:
 | |
|         image: registry:2
 | |
|         ports:
 | |
|           - 5000:5000
 | |
|     steps:
 | |
|       -
 | |
|         name: Checkout
 | |
|         uses: actions/checkout@v2.3.2
 | |
|       -
 | |
|         name: Prepare
 | |
|         id: prep
 | |
|         run: |
 | |
|           DOCKER_IMAGE=localhost:5000/name/app
 | |
|           VERSION=noop
 | |
|           if [[ $GITHUB_REF == refs/tags/* ]]; then
 | |
|             VERSION=${GITHUB_REF#refs/tags/}
 | |
|           elif [[ $GITHUB_REF == refs/heads/* ]]; then
 | |
|             VERSION=$(echo ${GITHUB_REF#refs/heads/} | sed -r 's#/+#-#g')
 | |
|             if [ "${{ github.event.repository.default_branch }}" = "$VERSION" ]; then
 | |
|               VERSION=edge
 | |
|             fi
 | |
|           elif [[ $GITHUB_REF == refs/pull/* ]]; then
 | |
|             VERSION=pr-${{ github.event.number }}
 | |
|           fi
 | |
|           TAGS="${DOCKER_IMAGE}:${VERSION}"
 | |
|           if [ "${{ github.event_name }}" != "pull_request" ]; then
 | |
|             TAGS="${DOCKER_IMAGE}:sha-${GITHUB_SHA::8}"
 | |
|           fi
 | |
|           if [[ $VERSION =~ ^v[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
 | |
|             MINOR=${VERSION%.*}
 | |
|             MAJOR=${MINOR%.*}
 | |
|             TAGS="$TAGS,${DOCKER_IMAGE}:${MINOR},${DOCKER_IMAGE}:${MAJOR},${DOCKER_IMAGE}:latest"
 | |
|           fi
 | |
|           echo ::set-output name=version::${VERSION}
 | |
|           echo ::set-output name=tags::${TAGS}
 | |
|           echo ::set-output name=created::$(date -u +'%Y-%m-%dT%H:%M:%SZ')
 | |
|       -
 | |
|         name: Set up QEMU
 | |
|         uses: docker/setup-qemu-action@v1
 | |
|       -
 | |
|         name: Set up Docker Buildx
 | |
|         uses: docker/setup-buildx-action@v1
 | |
|         with:
 | |
|           driver-opts: network=host
 | |
|       -
 | |
|         name: Build and push
 | |
|         uses: ./
 | |
|         with:
 | |
|           context: ./test
 | |
|           file: ./test/Dockerfile
 | |
|           push: true
 | |
|           tags: ${{ steps.prep.outputs.tags }}
 | |
|           labels: |
 | |
|             org.opencontainers.image.created=${{ steps.prep.outputs.created }}
 | |
|             org.opencontainers.image.source=${{ github.repositoryUrl }}
 | |
|             org.opencontainers.image.version=${{ steps.prep.outputs.version }}
 | |
|             org.opencontainers.image.revision=${{ github.sha }}
 | |
|             org.opencontainers.image.licenses=${{ github.event.repository.license.name }}
 | |
|       -
 | |
|         name: Inspect
 | |
|         run: |
 | |
|           docker buildx imagetools inspect localhost:5000/name/app:${{ steps.prep.outputs.version }}
 | |
|       -
 | |
|         name: Dump context
 | |
|         if: always()
 | |
|         uses: crazy-max/ghaction-dump-context@v1
 | 
