ci: new docker image build
Signed-off-by: Mark Sagi-Kazar <mark.sagikazar@gmail.com>
This commit is contained in:
		
							
								
								
									
										112
									
								
								.github/workflows/artifacts.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										112
									
								
								.github/workflows/artifacts.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,112 @@ | ||||
| name: Artifacts | ||||
|  | ||||
| on: | ||||
|   push: | ||||
|     branches: | ||||
|       - master | ||||
|     tags: | ||||
|       - v[0-9]+.[0-9]+.[0-9]+ | ||||
|   pull_request: | ||||
|  | ||||
| jobs: | ||||
|   container-images: | ||||
|     name: Container images | ||||
|     runs-on: ubuntu-latest | ||||
|     strategy: | ||||
|       matrix: | ||||
|         platform: | ||||
|           - linux/amd64 | ||||
|           - linux/arm/v7 | ||||
|           - linux/arm64 | ||||
|  | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v3 | ||||
|  | ||||
|       - name: Calculate container image details | ||||
|         id: details | ||||
|         env: | ||||
|           CONTAINER_IMAGES: "ghcr.io/dexidp/dex dexidp/dex" | ||||
|         run: | | ||||
|           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 | ||||
|  | ||||
|           TAGS=() | ||||
|           for image in $CONTAINER_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 | ||||
|         with: | ||||
|           platforms: all | ||||
|  | ||||
|       - name: Set up Docker Buildx | ||||
|         uses: docker/setup-buildx-action@v1 | ||||
|  | ||||
|       - name: Login to GitHub Container Registry | ||||
|         uses: docker/login-action@v1 | ||||
|         with: | ||||
|           registry: ghcr.io | ||||
|           username: ${{ github.repository_owner }} | ||||
|           password: ${{ github.token }} | ||||
|         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 | ||||
|         uses: docker/build-push-action@v2 | ||||
|         with: | ||||
|           context: . | ||||
|           platforms: ${{ matrix.platform }} | ||||
|           cache-from: type=gha | ||||
|           cache-to: type=gha,mode=max | ||||
|           push: ${{ github.event_name == 'push' }} | ||||
|           tags: ${{ steps.details.outputs.tags }} | ||||
|           build-args: | | ||||
|             VERSION=${{ steps.details.outputs.version }} | ||||
|             COMMIT_HASH=${{ steps.details.outputs.commit_hash }} | ||||
|             BUILD_DATE=${{ steps.details.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.details.outputs.version }} | ||||
|             org.opencontainers.image.created=${{ steps.details.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/ | ||||
|  | ||||
|       - name: Run Trivy vulnerability scanner | ||||
|         uses: aquasecurity/trivy-action@0.2.3 | ||||
|         with: | ||||
|           image-ref: "ghcr.io/dexidp/dex:${{ steps.details.outputs.version }}" | ||||
|           format: "template" | ||||
|           template: "@/contrib/sarif.tpl" | ||||
|           output: "trivy-results.sarif" | ||||
|         if: github.event_name == 'push' | ||||
|  | ||||
|       - name: Upload Trivy scan results to GitHub Security tab | ||||
|         uses: github/codeql-action/upload-sarif@v1 | ||||
|         with: | ||||
|           sarif_file: "trivy-results.sarif" | ||||
|         if: github.event_name == 'push' | ||||
		Reference in New Issue
	
	Block a user