diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 278d03b..5dcd8de 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -4,6 +4,8 @@ on: push: branches: - dev + tags: + - '*' workflow_dispatch: jobs: @@ -11,21 +13,51 @@ jobs: runs-on: ubuntu-latest steps: - - name: Check out code - uses: actions/checkout@v3 + - name: Check out code + uses: actions/checkout@v3 - - name: Login to GitHub Container Registry - uses: docker/login-action@v1 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} + - name: Login to GitHub Container Registry + uses: docker/login-action@v1 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} - - name: Build and push Docker image - uses: docker/build-push-action@v2 - with: - context: . - file: ./Dockerfile - push: true - tags: ghcr.io/${{ github.repository }}:dev + - name: Set tag name + id: set_tag + run: | + if [[ $GITHUB_REF == refs/heads/* ]]; then + echo "::set-output name=tag::$(echo $GITHUB_REF | cut -d'/' -f3)" + else + echo "::set-output name=tag::${{ github.ref_name }}" + fi + + - name: Check if triggered by tag + id: check_tag + run: | + if [[ "${{ github.ref }}" == refs/tags/* ]]; then + echo "::set-output name=triggered_by_tag::true" + else + echo "::set-output name=triggered_by_tag::false" + fi + + - name: Build and push Docker image for dev branch + if: steps.check_tag.outputs.triggered_by_tag == 'false' + uses: docker/build-push-action@v2 + with: + context: . + file: ./Dockerfile + push: true + tags: ghcr.io/${{ github.repository }}:${{ steps.set_tag.outputs.tag }} + + - name: Build and push Docker image for tags + if: steps.check_tag.outputs.triggered_by_tag == 'true' + uses: docker/build-push-action@v2 + with: + context: . + file: ./Dockerfile + push: true + tags: | + ghcr.io/${{ github.repository }}:${{ steps.set_tag.outputs.tag }} + ghcr.io/${{ github.repository }}:latest