name: Build and Publish Docker Image on: push: tags: ['*'] # triggers on any tag push workflow_dispatch: jobs: build-and-push: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Log in to Docker Registry run: echo "${{ secrets.PASSWORD }}" | docker login ${{ secrets.REGISTRY }} -u "${{ secrets.USERNAME }}" --password-stdin - name: Determine Version from package.json id: version run: | echo "VERSION=$(jq -r .version package.json)" >> $GITHUB_OUTPUT - name: Build and Push Docker Images run: | IMAGE_NAME="ktvmanager-backend" REGISTRY="${{ secrets.REGISTRY }}" USERNAME="${{ secrets.USERNAME }}" VERSION="${{ steps.version.outputs.VERSION }}" IMAGE_VERSIONED="$REGISTRY/$USERNAME/$IMAGE_NAME:$VERSION" IMAGE_LATEST="$REGISTRY/$USERNAME/$IMAGE_NAME:latest" echo "🔧 Building $IMAGE_VERSIONED" docker build --no-cache --build-arg VERSION=$VERSION -t "$IMAGE_VERSIONED" . echo "🏷️ Tagging as $IMAGE_LATEST" docker tag "$IMAGE_VERSIONED" "$IMAGE_LATEST" echo "📤 Pushing $IMAGE_VERSIONED" docker push "$IMAGE_VERSIONED" echo "📤 Pushing $IMAGE_LATEST" docker push "$IMAGE_LATEST"