diff --git a/.forgejo/workflows/build-and-deploy.yml b/.forgejo/workflows/build-and-deploy.yml new file mode 100644 index 0000000..2eff2ba --- /dev/null +++ b/.forgejo/workflows/build-and-deploy.yml @@ -0,0 +1,57 @@ +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