name: update docker image on: push: branches: - dev - master tags: - 'v*.*.*' jobs: build: runs-on: ubuntu-latest steps: - name: set docker image tag run: | if [[ "${{ github.ref }}" == "refs/heads/dev" ]]; then echo "IMAGE_TAG=dev" >> "$GITHUB_ENV" echo "CREATE_IMAGE=true" >> "$GITHUB_ENV" elif [[ "${{ github.ref_type }}" == "tag" ]]; then echo "IMAGE_TAG=${{ github.ref_name }}" >> "$GITHUB_ENV" echo "CREATE_IMAGE=true" >> "$GITHUB_ENV" else echo "CREATE_IMAGE=false" >> "$GITHUB_ENV" fi - name: Login to Docker Hub uses: docker/login-action@v3 if: env.CREATE_IMAGE == 'true' with: username: ${{ vars.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 if: env.CREATE_IMAGE == 'true' - name: Build and push uses: docker/build-push-action@v6 if: env.CREATE_IMAGE == 'true' with: push: true tags: ${{ vars.DOCKERHUB_USERNAME }}/${{ github.event.repository.name }}:${{ env.IMAGE_TAG }}