name: Docker # This workflow uses actions that are not certified by GitHub. # They are provided by a third-party and are governed by # separate terms of service, privacy policy, and support # documentation. on: push: branches: - 'main' - 'feature-*' tags: - 'v*' env: # Use docker.io for Docker Hub if empty REGISTRY: ghcr.io # github.repository as / IMAGE_NAME: ${{ github.repository }} jobs: build: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v2 # Login against a Docker registry except on PR # https://github.com/docker/login-action - name: Log into registry ${{ env.REGISTRY }} uses: docker/login-action@v1 with: registry: ${{ env.REGISTRY }} username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Generate Image Tags id: generate-image-tags run: | # Generate tags for the image if [[ "${{ github.ref_name }}" == "main" ]]; then tags=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest else tags=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.ref_name }} fi echo "::set-output name=tags::$tags" - name: Extract Docker metadata id: meta uses: docker/metadata-action@v3 with: images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} # Build and push Docker image with Buildx (don't push on PR) # https://github.com/docker/build-push-action - name: Build and push Docker image uses: docker/build-push-action@v2 with: context: . file: Dockerfile push: true tags: ${{ steps.generate-image-tags.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} # Drafts your next Release notes as Pull Requests are merged into "main" - uses: release-drafter/release-drafter@v5 if: github.ref_name == 'main' env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}