104 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			104 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| # This workflow is provided just as an usage example and not for repo testing/verification
 | |
| # See https://github.com/docker/build-push-action#complete-workflow
 | |
| name: example
 | |
| 
 | |
| on:
 | |
|   schedule:
 | |
|     - cron: '0 10 * * 0' # everyday sunday at 10am
 | |
|   push:
 | |
|     branches:
 | |
|       - '**'
 | |
|     tags:
 | |
|       - 'v*.*.*'
 | |
|   pull_request:
 | |
| 
 | |
| jobs:
 | |
|   docker:
 | |
|     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.event_name }}" = "schedule" ]; then
 | |
|             VERSION=nightly
 | |
|           elif [[ $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 [[ $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"
 | |
|           elif [ "${{ github.event_name }}" = "push" ]; then
 | |
|             TAGS="$TAGS,${DOCKER_IMAGE}:sha-${GITHUB_SHA::8}"
 | |
|           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 Docker Buildx
 | |
|         uses: docker/setup-buildx-action@v1
 | |
|         with:
 | |
|           driver-opts: network=host
 | |
|       -
 | |
|         name: Build and export to Docker client
 | |
|         uses: ./
 | |
|         with:
 | |
|           context: ./test
 | |
|           file: ./test/Dockerfile
 | |
|           outputs: type=docker
 | |
|           tags: ${{ steps.prep.outputs.tags }}
 | |
|           labels: |
 | |
|             org.opencontainers.image.created=${{ steps.prep.outputs.created }}
 | |
|             org.opencontainers.image.url=${{ github.event.repository.html_url }}
 | |
|             org.opencontainers.image.source=${{ github.event.repository.clone_url }}
 | |
|             org.opencontainers.image.version=${{ steps.prep.outputs.version }}
 | |
|             org.opencontainers.image.revision=${{ github.sha }}
 | |
|             org.opencontainers.image.licenses=${{ github.event.repository.license.spdx_id }}
 | |
|       -
 | |
|         name: Build and push to local registry
 | |
|         uses: ./
 | |
|         with:
 | |
|           context: ./test
 | |
|           file: ./test/Dockerfile
 | |
|           push: ${{ github.event_name != 'pull_request' }}
 | |
|           tags: ${{ steps.prep.outputs.tags }}
 | |
|           labels: |
 | |
|             org.opencontainers.image.created=${{ steps.prep.outputs.created }}
 | |
|             org.opencontainers.image.url=${{ github.event.repository.html_url }}
 | |
|             org.opencontainers.image.source=${{ github.event.repository.clone_url }}
 | |
|             org.opencontainers.image.version=${{ steps.prep.outputs.version }}
 | |
|             org.opencontainers.image.revision=${{ github.sha }}
 | |
|             org.opencontainers.image.licenses=${{ github.event.repository.license.spdx_id }}
 | |
|       -
 | |
|         name: Inspect image
 | |
|         run: |
 | |
|           docker image inspect localhost:5000/name/app:${{ steps.prep.outputs.version }}
 | |
|       -
 | |
|         name: Check manifest
 | |
|         if: github.event_name != 'pull_request'
 | |
|         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
 | 
