name: CI/CD Pipeline

on:
    push:
        tags:
            - "*"

jobs:
    release:
        name: Build and Release
        runs-on: ubuntu-latest

        steps:
            - name: Checkout code
              uses: actions/checkout@v3

            - name: Set up QEMU
              uses: docker/setup-qemu-action@v3

            - name: Set up Docker Buildx
              uses: docker/setup-buildx-action@v2

            - name: Log in to Docker Hub
              uses: docker/login-action@v2
              with:
                  username: ${{ secrets.DOCKER_HUB_USERNAME }}
                  password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}

            - name: Extract tag name
              id: get-tag
              run: echo "TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV

            - name: Install Go
              uses: actions/setup-go@v4
              with:
                  go-version: 1.23.1

            - name: Update version in main.go
              run: |
                  TAG=${{ env.TAG }}
                  if [ -f main.go ]; then
                    sed -i 's/Newt version replaceme/Newt version '"$TAG"'/' main.go
                    echo "Updated main.go with version $TAG"
                  else
                    echo "main.go not found"
                  fi

            - name: Build and push Docker images
              run: |
                  TAG=${{ env.TAG }}
                  make docker-build-release tag=$TAG

            - name: Build binaries
              run: |
                  make go-build-release

            - name: Upload artifacts from /bin
              uses: actions/upload-artifact@v4
              with:
                  name: binaries
                  path: bin/
