name: Release on: push: tags: - 'v*' jobs: release: runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version: '1.26' - name: Run tests run: go test ./... - name: Build binaries run: | VERSION=${GITHUB_REF_NAME} mkdir -p dist GOOS=linux GOARCH=amd64 go build -ldflags "-s -w -X main.version=${VERSION}" -o dist/review-bot-linux-amd64 ./cmd/review-bot GOOS=linux GOARCH=arm64 go build -ldflags "-s -w -X main.version=${VERSION}" -o dist/review-bot-linux-arm64 ./cmd/review-bot GOOS=darwin GOARCH=amd64 go build -ldflags "-s -w -X main.version=${VERSION}" -o dist/review-bot-darwin-amd64 ./cmd/review-bot GOOS=darwin GOARCH=arm64 go build -ldflags "-s -w -X main.version=${VERSION}" -o dist/review-bot-darwin-arm64 ./cmd/review-bot cd dist && sha256sum * > checksums.txt - name: Create release and upload assets env: GITEA_TOKEN: ${{ secrets.RELEASE_TOKEN }} run: | VERSION=${GITHUB_REF_NAME} GITEA_URL="${{ github.server_url }}" REPO="${{ github.repository }}" # Create release RELEASE_ID=$(curl -sSf -X POST \ -H "Authorization: token ${GITEA_TOKEN}" \ -H "Content-Type: application/json" \ "${GITEA_URL}/api/v1/repos/${REPO}/releases" \ -d "{\"tag_name\": \"${VERSION}\", \"name\": \"${VERSION}\", \"body\": \"Release ${VERSION}\", \"draft\": false, \"prerelease\": false}" \ | jq -r '.id') # Upload each asset for file in dist/*; do filename=$(basename "$file") curl -sSf -X POST \ -H "Authorization: token ${GITEA_TOKEN}" \ -H "Content-Type: application/octet-stream" \ "${GITEA_URL}/api/v1/repos/${REPO}/releases/${RELEASE_ID}/assets?name=${filename}" \ --data-binary "@${file}" done echo "Release ${VERSION} created with $(ls dist/* | wc -l) assets"