From 13bebba16e09dcd0c74333a2b0233745f2475539 Mon Sep 17 00:00:00 2001 From: LaurensBartelds Date: Fri, 24 Apr 2026 16:05:53 +0200 Subject: [PATCH] feat: add Gitea workflow for automated release building and asset publishing --- .gitea/workflows/release.yml | 47 ++++++++++++++++++++++++++++++------ 1 file changed, 39 insertions(+), 8 deletions(-) diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml index 0638af4..5b355f3 100644 --- a/.gitea/workflows/release.yml +++ b/.gitea/workflows/release.yml @@ -83,11 +83,42 @@ jobs: EOF - name: Create Release - uses: m0606/gitea-release-action@v3 - with: - token: ${{ secrets.GITHUB_TOKEN }} - files: | - brainwave-amd64.tar.gz - brainwave-arm64.tar.gz - docker-compose.amd64.yml - docker-compose.arm64.yml \ No newline at end of file + env: + GITEA_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SERVER_URL: ${{ github.server_url }} + REPOSITORY: ${{ github.repository }} + TAG: ${{ github.ref_name }} + run: | + # 1. Create the release + echo "Creating release for tag: ${TAG}" + RELEASE_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 version ${TAG}\", \"draft\":false, \"prerelease\":false}" \ + "${SERVER_URL}/api/v1/repos/${REPOSITORY}/releases") + + RELEASE_ID=$(echo "$RELEASE_RESPONSE" | python3 -c "import sys, json; data=json.load(sys.stdin); print(data.get('id', data.get('message', 'ERROR')))") + + if [ "$RELEASE_ID" = "ERROR" ] || [ "$RELEASE_ID" = "release already exists for this tag" ]; then + echo "Release might already exist, attempting to find it..." + RELEASE_ID=$(curl -s -H "Authorization: token ${GITEA_TOKEN}" \ + "${SERVER_URL}/api/v1/repos/${REPOSITORY}/releases" \ + | python3 -c "import sys, json; releases=json.load(sys.stdin); print(next((r['id'] for r in releases if r['tag_name'] == '${TAG}'), 'ERROR'))") + fi + + if [ "$RELEASE_ID" = "ERROR" ]; then + echo "Failed to create or find release: $RELEASE_RESPONSE" + exit 1 + fi + + echo "Uploading assets to release ID: ${RELEASE_ID}" + for FILE in brainwave-amd64.tar.gz brainwave-arm64.tar.gz docker-compose.amd64.yml docker-compose.arm64.yml; do + echo "Uploading ${FILE}..." + curl -s -X POST \ + -H "Authorization: token ${GITEA_TOKEN}" \ + -H "Content-Type: application/octet-stream" \ + --data-binary "@${FILE}" \ + "${SERVER_URL}/api/v1/repos/${REPOSITORY}/releases/${RELEASE_ID}/assets?name=${FILE}" \ + | grep -q "id" || { echo "Failed to upload ${FILE}"; exit 1; } + done + echo "Release completed successfully!" \ No newline at end of file