name: build-and-release on: push: tags: - "v*" jobs: release: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version: '1.22' - name: Build binaries run: make build-all - name: Create release id: release env: NODE_AUTH_TOKEN: ${{ secrets.NODE_AUTH_TOKEN }} run: | TAG="${{ github.ref_name }}" RESPONSE=$(curl -s -w "\n%{http_code}" -X POST \ -H "Authorization: token ${NODE_AUTH_TOKEN}" \ -H "Content-Type: application/json" \ -d "{\"tag_name\":\"${TAG}\",\"name\":\"${TAG}\",\"draft\":false,\"prerelease\":false}" \ "${{ github.server_url }}/api/v1/repos/${{ github.repository }}/releases") HTTP_CODE=$(echo "$RESPONSE" | tail -1) BODY=$(echo "$RESPONSE" | head -n -1) echo "HTTP $HTTP_CODE: $BODY" if [ "$HTTP_CODE" -lt 200 ] || [ "$HTTP_CODE" -ge 300 ]; then exit 1 fi echo "id=$(echo "$BODY" | jq -r .id)" >> $GITHUB_OUTPUT - name: Upload binaries env: NODE_AUTH_TOKEN: ${{ secrets.NODE_AUTH_TOKEN }} run: | for FILE in dist/bugswatch-*; do curl -sf -X POST \ -H "Authorization: token ${NODE_AUTH_TOKEN}" \ -H "Content-Type: application/octet-stream" \ --data-binary "@${FILE}" \ "${{ github.server_url }}/api/v1/repos/${{ github.repository }}/releases/${{ steps.release.outputs.id }}/assets?name=$(basename ${FILE})" done