name: Docker Publish on: push: branches: [ main, master ] tags: [ 'v*' ] workflow_dispatch: env: IMAGE_NAME: tmdb-embed-api jobs: build-and-push: runs-on: ubuntu-latest permissions: contents: read packages: write steps: - name: Checkout uses: actions/checkout@v4 - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Set up Buildx uses: docker/setup-buildx-action@v3 - name: Log in to Docker Hub uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Extract version id: vars run: | PKG_VERSION=$(node -p "require('./package.json').version") echo "pkg_version=$PKG_VERSION" >> $GITHUB_OUTPUT if [[ $GITHUB_REF == refs/tags/v* ]]; then TAG=${GITHUB_REF#refs/tags/} echo "ref_tag=$TAG" >> $GITHUB_OUTPUT fi - name: Build & Push (branch) if: startsWith(github.ref, 'refs/heads/') uses: docker/build-push-action@v5 with: context: . push: true platforms: linux/amd64,linux/arm64 tags: | ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:latest ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:${{ steps.vars.outputs.pkg_version }} labels: | org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }} org.opencontainers.image.revision=${{ github.sha }} org.opencontainers.image.version=${{ steps.vars.outputs.pkg_version }} - name: Build & Push (tag) if: startsWith(github.ref, 'refs/tags/v') uses: docker/build-push-action@v5 with: context: . push: true platforms: linux/amd64,linux/arm64 tags: | ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:latest ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:${{ steps.vars.outputs.pkg_version }} ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:${{ steps.vars.outputs.ref_tag }} labels: | org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }} org.opencontainers.image.revision=${{ github.sha }} org.opencontainers.image.version=${{ steps.vars.outputs.pkg_version }} org.opencontainers.image.ref.name=${{ steps.vars.outputs.ref_tag }}