Improve Docker build
Signed-off-by: Mark Sagi-Kazar <mark.sagikazar@gmail.com>
This commit is contained in:
		
							
								
								
									
										70
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										70
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							| @@ -1,9 +1,13 @@ | ||||
| name: CI | ||||
|  | ||||
| on: | ||||
|   schedule: | ||||
|     - cron: '0 5 * * *' # everyday at 5 am UTC | ||||
|   push: | ||||
|     branches: | ||||
|       - master | ||||
|     tags: | ||||
|       - v[0-9]+.[0-9]+.[0-9]+ | ||||
|   pull_request: | ||||
|  | ||||
| jobs: | ||||
| @@ -87,21 +91,40 @@ jobs: | ||||
|     runs-on: ubuntu-latest | ||||
|  | ||||
|     steps: | ||||
|       - name: Checkout code | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|  | ||||
|       - name: Get Version | ||||
|         id: info | ||||
|       - name: Calculate Docker image tags | ||||
|         id: tags | ||||
|         env: | ||||
|           DOCKER_IMAGES: "ghcr.io/dexidp/dex dexidp/dex" | ||||
|         run: | | ||||
|           echo ::set-output name=created::$(date -u +'%Y-%m-%dT%H:%M:%SZ') | ||||
|           VERSION=noop | ||||
|  | ||||
|       - name: Determine Docker Tag | ||||
|         uses: haya14busa/action-cond@v1 | ||||
|         id: imagetag | ||||
|         with: | ||||
|           cond: ${{ github.event_name == 'pull_request' }} | ||||
|           if_true: ${{ github.sha }} | ||||
|           if_false: 'master' | ||||
|           if [[ "${{ github.event_name }}" == "schedule" ]]; then | ||||
|             VERSION=nightly | ||||
|           else | ||||
|             case $GITHUB_REF in | ||||
|               refs/tags/*)  VERSION=${GITHUB_REF#refs/tags/};; | ||||
|               refs/heads/*) VERSION=$(echo ${GITHUB_REF#refs/heads/} | sed -r 's#/+#-#g');; | ||||
|               refs/pull/*)  VERSION=pr-${{ github.event.number }};; | ||||
|               *)            VERSION=sha-${GITHUB_SHA::8};; | ||||
|             esac | ||||
|           fi | ||||
|  | ||||
|           TAGS=() | ||||
|           for image in $DOCKER_IMAGES; do | ||||
|             TAGS+=("${image}:${VERSION}") | ||||
|  | ||||
|             if [[ "${{ github.event.repository.default_branch }}" == "$VERSION" ]]; then | ||||
|               TAGS+=("${image}:latest") | ||||
|             fi | ||||
|           done | ||||
|  | ||||
|           echo ::set-output name=version::${VERSION} | ||||
|           echo ::set-output name=tags::$(IFS=,; echo "${TAGS[*]}") | ||||
|           echo ::set-output name=commit_hash::${GITHUB_SHA::8} | ||||
|           echo ::set-output name=build_date::$(git show -s --format=%cI) | ||||
|  | ||||
|       - name: Set up QEMU | ||||
|         uses: docker/setup-qemu-action@v1 | ||||
| @@ -109,7 +132,6 @@ jobs: | ||||
|           platforms: all | ||||
|  | ||||
|       - name: Set up Docker Buildx | ||||
|         id: buildx | ||||
|         uses: docker/setup-buildx-action@v1 | ||||
|         with: | ||||
|           install: true | ||||
| @@ -117,27 +139,39 @@ jobs: | ||||
|           # TODO: Remove driver-opts once fix is released docker/buildx#386 | ||||
|           driver-opts: image=moby/buildkit:master | ||||
|  | ||||
|       - name: Login to DockerHub | ||||
|       - name: Login to GitHub Container Registry | ||||
|         uses: docker/login-action@v1 | ||||
|         with: | ||||
|           registry: ghcr.io | ||||
|           username: ${{ github.repository_owner }} | ||||
|           password: ${{ secrets.CR_PAT }} | ||||
|         if: github.event_name == 'push' | ||||
|  | ||||
|       - name: Login to Docker Hub | ||||
|         uses: docker/login-action@v1 | ||||
|         with: | ||||
|           username: ${{ secrets.DOCKER_USERNAME }} | ||||
|           password: ${{ secrets.DOCKER_PASSWORD }} | ||||
|         if: github.event_name == 'push' | ||||
|  | ||||
|       - name: Build and Push | ||||
|       - name: Build and push | ||||
|         uses: docker/build-push-action@v2 | ||||
|         with: | ||||
|           context: . | ||||
|           file: Dockerfile | ||||
|           platforms: linux/amd64,linux/arm/v7,linux/arm64 | ||||
|           push: ${{ github.event_name == 'push' }} | ||||
|           tags: dexidp/dex:${{ steps.imagetag.outputs.value }} | ||||
|           tags: ${{ steps.tags.outputs.tags }} | ||||
|           build-args: | | ||||
|             VERSION=${{ steps.tags.outputs.version }} | ||||
|             COMMIT_HASH=${{ steps.tags.outputs.commit_hash }} | ||||
|             BUILD_DATE=${{ steps.tags.outputs.build_date }} | ||||
|           labels: | | ||||
|             org.opencontainers.image.title=${{ github.event.repository.name }} | ||||
|             org.opencontainers.image.description=${{ github.event.repository.description }} | ||||
|             org.opencontainers.image.url=${{ github.event.repository.html_url }} | ||||
|             org.opencontainers.image.source=${{ github.event.repository.clone_url }} | ||||
|             org.opencontainers.image.version=${{ steps.imagetag.outputs.value }} | ||||
|             org.opencontainers.image.created=${{ steps.info.outputs.created }} | ||||
|             org.opencontainers.image.version=${{ steps.tags.outputs.version }} | ||||
|             org.opencontainers.image.created=${{ steps.tags.outputs.build_date }} | ||||
|             org.opencontainers.image.revision=${{ github.sha }} | ||||
|             org.opencontainers.image.licenses=${{ github.event.repository.license.spdx_id }} | ||||
|             org.opencontainers.image.documentation=https://dexidp.io/docs/ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user