diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml new file mode 100644 index 0000000..721caf6 --- /dev/null +++ b/.gitea/workflows/build.yml @@ -0,0 +1,78 @@ +name: Build Backend + +on: + push: + branches: + - master + - dev + pull_request: + branches: + - master + - dev + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version: '1.25' + cache: false + + - name: Install build tools + run: sudo apt-get update && sudo apt-get install -y gcc + + - name: Download dependencies + run: go mod download + + - name: Build + env: + GOOS: linux + GOARCH: amd64 + CGO_ENABLED: 1 + run: go build -v -o server ./cmd/server + + - name: Upload artifacts + uses: actions/upload-artifact@v3 + with: + name: backend-server-linux-amd64 + path: server + + build-docker: + runs-on: ubuntu-latest + needs: build + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to Gitea Container Registry + uses: docker/login-action@v3 + with: + registry: code.littlelan.cn + username: ${{ secrets.GIT_USERNAME }} + password: ${{ secrets.GIT_TOKEN }} + + - name: Download artifact + uses: actions/download-artifact@v3 + with: + name: backend-server-linux-amd64 + + - name: Ensure binary executable + run: chmod +x ./server + + - name: Build and push Docker image + uses: docker/build-push-action@v5 + with: + context: . + push: true + tags: | + code.littlelan.cn/carrot_bbs/backend:latest + code.littlelan.cn/carrot_bbs/backend:${{ github.sha }} + platforms: linux/amd64