Unique filenames for builds
Some checks failed
Build Release Binaries / build-and-release (push) Failing after 10m29s

This commit is contained in:
Salastil
2025-11-23 05:42:55 -05:00
parent 1feedc4488
commit 37bfd30a84

View File

@@ -1,6 +1,8 @@
name: Build Release Binaries name: Build Release Binaries
on: on:
release:
types: [published]
push: push:
tags: tags:
- "v*" - "v*"
@@ -17,32 +19,19 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
# -------------------------------------------------------------
# Checkout
# -------------------------------------------------------------
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4 uses: actions/checkout@v4
# -------------------------------------------------------------
# Setup Go
# -------------------------------------------------------------
- name: Set up Go - name: Set up Go
uses: actions/setup-go@v5 uses: actions/setup-go@v5
with: with:
go-version-file: go.mod go-version-file: go.mod
cache: true cache: true
# ------------------------------------------------------------- - name: Bundle Node.js dependencies
# Bundle Node Modules (important for puppeteer-extra)
# -------------------------------------------------------------
- name: Bundle node_modules for extractor
run: | run: |
chmod +x scripts/build_node_modules.sh bash scripts/build_node_modules.sh
./scripts/build_node_modules.sh
# -------------------------------------------------------------
# Build all platform binaries
# -------------------------------------------------------------
- name: Build all platform binaries - name: Build all platform binaries
run: | run: |
mkdir -p dist mkdir -p dist
@@ -50,110 +39,77 @@ jobs:
build() { build() {
GOOS=$1 GOOS=$1
GOARCH=$2 GOARCH=$2
SUFFIX=$3 EXT=$3
OUT="${BINARY_NAME}${SUFFIX}" OUT="${BINARY_NAME}_${GOOS}_${GOARCH}${EXT}"
echo "Building $GOOS $GOARCH => $OUT"
echo "Building: GOOS=$1 GOARCH=$2 OUTPUT=$OUT" env GOOS=$1 GOARCH=$2 CGO_ENABLED=0 go build -o "dist/${OUT}" .
env GOOS=$1 GOARCH=$2 CGO_ENABLED=0 go build -o "dist/$OUT" .
} }
build linux amd64 "" build linux amd64 ""
build linux arm64 "" build linux arm64 ""
build darwin amd64 "" build darwin amd64 ""
build darwin arm64 "" build darwin arm64 ""
# ------------------------------------------------------------- - name: Create release in Gitea
# Create or fetch the Gitea release
# -------------------------------------------------------------
- name: Ensure release exists (create if missing)
id: create_release id: create_release
env: env:
GITEA_TOKEN: ${{ secrets.CI_TOKEN2 }} GITEA_TOKEN: ${{ secrets.CI_TOKEN }}
TAG: ${{ github.ref_name }} TAG: ${{ github.ref_name }}
REPO: ${{ github.repository }} REPO: ${{ github.repository }}
API_BASE: ${{ env.API_BASE }}
run: | run: |
if [ -z "$GITEA_TOKEN" ]; then if [ -z "$GITEA_TOKEN" ]; then
echo "ERROR: Missing CI_TOKEN2 secret" echo "ERROR: Missing CI_TOKEN secret"
exit 1 exit 1
fi fi
echo "Checking if release exists: $TAG" echo "Checking if release exists: $TAG"
EXISTING=$(curl -s -o /dev/null -w "%{http_code}" \ # Check release existence
CHECK=$(curl -s -o /dev/null -w "%{http_code}" \
-H "Authorization: token ${GITEA_TOKEN}" \ -H "Authorization: token ${GITEA_TOKEN}" \
"${API_BASE}/repos/${REPO}/releases/tags/${TAG}") "${{ env.API_BASE }}/repos/${REPO}/releases/tags/${TAG}")
if [ "$EXISTING" = "200" ]; then if [ "$CHECK" = "200" ]; then
echo "Release already exists — fetching ID" echo "Release already exists."
BODY=$(curl -s \ RELEASE_ID=$(curl -s \
-H "Authorization: token ${GITEA_TOKEN}" \ -H "Authorization: token ${GITEA_TOKEN}" \
"${API_BASE}/repos/${REPO}/releases/tags/${TAG}") "${{ env.API_BASE }}/repos/${REPO}/releases/tags/${TAG}" | \
grep -o '"id":[0-9]*' | grep -o '[0-9]*')
else
echo "Release does not exist — creating"
RESPONSE=$(curl -s -X POST \
-H "Authorization: token ${GITEA_TOKEN}" \
-H "Content-Type: application/json" \
-d "{
\"tag_name\": \"${TAG}\",
\"name\": \"Release ${TAG}\",
\"body\": \"Automated release ${TAG}\",
\"draft\": false,
\"prerelease\": false
}" \
"${{ env.API_BASE }}/repos/${REPO}/releases")
RELEASE_ID=$(echo "$BODY" | grep -o '"id":[0-9]*' | head -1 | grep -o '[0-9]*') RELEASE_ID=$(echo "$RESPONSE" | grep -o '"id":[0-9]*' | grep -o '[0-9]*')
echo "Found release ID: $RELEASE_ID"
echo "release_id=${RELEASE_ID}" >> $GITHUB_OUTPUT
exit 0
fi fi
echo "Release does not exist — creating"
# Create new release, capture body + status code
RESPONSE=$(curl -s -w "\n%{http_code}" -X POST \
-H "Authorization: token ${GITEA_TOKEN}" \
-H "Content-Type: application/json" \
-d "{
\"tag_name\": \"${TAG}\",
\"name\": \"Release ${TAG}\",
\"body\": \"Automated release ${TAG}\",
\"draft\": false,
\"prerelease\": false
}" \
"${API_BASE}/repos/${REPO}/releases")
BODY=$(echo "$RESPONSE" | sed '$d')
CODE=$(echo "$RESPONSE" | tail -n1)
echo "Gitea API Response Code: $CODE"
echo "Gitea API Response Body:"
echo "$BODY"
if [ "$CODE" -ne 201 ] && [ "$CODE" -ne 200 ]; then
echo "ERROR: Release creation failed"
exit 1
fi
RELEASE_ID=$(echo "$BODY" | grep -o '"id":[0-9]*' | head -1 | grep -o '[0-9]*')
if [ -z "$RELEASE_ID" ]; then
echo "ERROR: Could not extract release ID"
exit 1
fi
echo "Created release ID: $RELEASE_ID"
echo "release_id=${RELEASE_ID}" >> $GITHUB_OUTPUT echo "release_id=${RELEASE_ID}" >> $GITHUB_OUTPUT
# ------------------------------------------------------------- - name: Upload release assets
# Upload binaries
# -------------------------------------------------------------
- name: Upload binaries to Gitea release
env: env:
GITEA_TOKEN: ${{ secrets.CI_TOKEN2 }} GITEA_TOKEN: ${{ secrets.CI_TOKEN }}
RELEASE_ID: ${{ steps.create_release.outputs.release_id }} RELEASE_ID: ${{ steps.create_release.outputs.release_id }}
API_BASE: ${{ env.API_BASE }} API_BASE: ${{ env.API_BASE }}
REPO: ${{ github.repository }} REPO: ${{ github.repository }}
run: | run: |
cd dist
echo "Uploading binaries..." echo "Uploading binaries..."
for file in *; do for file in dist/*; do
echo "Uploading $file" echo "Uploading $file"
curl -s -X POST \ curl -s -X POST \
-H "Authorization: token ${GITEA_TOKEN}" \ -H "Authorization: token ${GITEA_TOKEN}" \
-H "Content-Type: application/octet-stream" \ -H "Content-Type: application/octet-stream" \
--data-binary @"$file" \ --data-binary @"$file" \
"${API_BASE}/repos/${REPO}/releases/${RELEASE_ID}/assets?name=$file" "${API_BASE}/repos/${REPO}/releases/${RELEASE_ID}/assets?name=$(basename "$file")"
done done
echo "All binaries uploaded successfully." echo "Done uploading release artifacts"