name: Build and Deploy Go App on: push: branches: - master pull_request: jobs: build: runs-on: docker container: image: golang:1.25.0 steps: - name: Checkout code uses: actions/checkout@v4 - name: Build Go app run: | go mod tidy go build -o nyanimedb . - name: Build Docker image run: docker build -t nyanimedb:latest . - name: Save Docker image artifact run: docker save nyanimedb:latest -o nyanimedb.tar - name: Upload image artifact uses: actions/upload-artifact@v4 with: name: docker-image path: nyanimedb.tar deploy: runs-on: docker needs: build if: ${{ github.event.inputs.deploy == 'true' }} # manual deploy trigger steps: - name: Checkout code uses: actions/checkout@v4 - name: Download image uses: actions/download-artifact@v4 with: name: docker-image path: . - name: Load Docker image run: docker load -i nyanimedb.tar - name: Deploy container locally run: | echo "Deploying nyanimedb locally..." docker stop nyanimedb || true docker rm nyanimedb || true docker run -d --name nyanimedb -p 8080:8080 nyanimedb:latest