From 0f7f0219aaa77f8da5bba3632624150cdf4c1461 Mon Sep 17 00:00:00 2001 From: Salastil Date: Sun, 23 Nov 2025 04:47:19 -0500 Subject: [PATCH] Update Gitea workflow --- .gitea/workflows/release.yml | 107 ++++++++++++++++------------------- 1 file changed, 48 insertions(+), 59 deletions(-) diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml index 790d8e9..3d907be 100644 --- a/.gitea/workflows/release.yml +++ b/.gitea/workflows/release.yml @@ -1,11 +1,11 @@ name: Build Release Binaries on: - release: - types: [published] push: tags: - "v*" + release: + types: [published] permissions: contents: write @@ -28,76 +28,64 @@ jobs: go-version-file: go.mod cache: true - - name: Build all platform binaries + - name: Build Puppeteer bundle + run: | + chmod +x scripts/build_node_modules.sh + scripts/build_node_modules.sh + + - name: Build platform binaries run: | mkdir -p dist build() { - GOOS=$1 GOARCH=$2 EXT=$3 - OUT="${BINARY_NAME}${EXT}" - echo "Building $1 $2 => $OUT" - env GOOS=$1 GOARCH=$2 CGO_ENABLED=0 go build -o "dist/${OUT}" . + GOOS="$1" + GOARCH="$2" + EXT="$3" + OUT="streamed-tui_${GOOS}_${GOARCH}${EXT}" + echo "Building ${OUT}" + env GOOS=$GOOS GOARCH=$GOARCH CGO_ENABLED=0 go build -o dist/${OUT} . } - build linux amd64 "" - build linux arm64 "" - build darwin amd64 "" - build darwin arm64 "" + build linux amd64 "" + build linux arm64 "" + build darwin amd64 "" + build darwin arm64 "" - - name: Package binaries + - name: Create source tarball run: | - cd dist + mkdir -p dist + git archive --format=tar.gz -o dist/streamed-tui_${GITHUB_REF_NAME}_source.tar.gz HEAD - pack() { - NAME="$1" - EXT="$2" - - if [[ "$EXT" == "zip" ]]; then - zip "${NAME}.zip" "${BINARY_NAME}${3}" - else - tar -czf "${NAME}.tar.gz" "${BINARY_NAME}${3}" - fi - } - - pack streamed-tui_linux_amd64 tar.gz "" - pack streamed-tui_linux_arm64 tar.gz "" - pack streamed-tui_darwin_amd64 tar.gz "" - pack streamed-tui_darwin_arm64 tar.gz "" - - - name: Create release in Gitea - id: create_release + - name: Ensure release exists (create if missing) + id: ensure_release env: GITEA_TOKEN: ${{ secrets.CI_TOKEN }} TAG: ${{ github.ref_name }} REPO: ${{ github.repository }} API_BASE: ${{ env.API_BASE }} run: | - if [ -z "$GITEA_TOKEN" ]; then - echo "ERROR: Missing CI_TOKEN secret" - exit 1 - fi + echo "Checking if release exists: $TAG" - echo "Creating release for tag: $TAG" + EXISTING=$(curl -s -H "Authorization: token ${GITEA_TOKEN}" \ + "${API_BASE}/repos/${REPO}/releases/tags/${TAG}") - 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 for ${TAG}\", - \"draft\": false, - \"prerelease\": false - }" \ - "${API_BASE}/repos/${REPO}/releases") - - echo "RESPONSE=$RESPONSE" - - RELEASE_ID=$(echo "$RESPONSE" | grep -o '"id":[0-9]*' | head -1 | grep -o '[0-9]*') - echo "Release ID: $RELEASE_ID" + RELEASE_ID=$(echo "$EXISTING" | grep -o '"id":[0-9]*' | head -1 | grep -o '[0-9]*' || true) if [ -z "$RELEASE_ID" ]; then - echo "ERROR: Failed to extract release ID" + 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}\",\"draft\":false}" \ + "${API_BASE}/repos/${REPO}/releases") + + RELEASE_ID=$(echo "$RESPONSE" | grep -o '"id":[0-9]*' | head -1 | grep -o '[0-9]*') + else + echo "Release already exists: $RELEASE_ID" + fi + + if [ -z "$RELEASE_ID" ]; then + echo "Failed to create or fetch release" exit 1 fi @@ -106,20 +94,21 @@ jobs: - name: Upload release assets env: GITEA_TOKEN: ${{ secrets.CI_TOKEN }} - RELEASE_ID: ${{ steps.create_release.outputs.release_id }} + RELEASE_ID: ${{ steps.ensure_release.outputs.release_id }} API_BASE: ${{ env.API_BASE }} REPO: ${{ github.repository }} run: | - echo "Uploading assets..." - cd dist + echo "Uploading assets to release ${RELEASE_ID}" - for file in *; do - echo "Uploading $file..." + for file in dist/*; do + name=$(basename "$file") + echo "Uploading $name..." curl -s -X POST \ -H "Authorization: token ${GITEA_TOKEN}" \ -H "Content-Type: application/octet-stream" \ --data-binary @"$file" \ - "${API_BASE}/repos/${REPO}/releases/${RELEASE_ID}/assets?name=$file" + "${API_BASE}/repos/${REPO}/releases/${RELEASE_ID}/assets?name=${name}" + echo "" done echo "All assets uploaded."