Replace upload-artifact with Gitea release API
Some checks failed
Build App / build-windows (push) Failing after 3m8s
Build App / build-linux (push) Has been cancelled

upload-artifact@v4 doesn't support Gitea (GHES). Use the Gitea
REST API to create releases and upload build artifacts directly.
Each successful push creates a tagged release with the build outputs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-27 08:08:57 -08:00
parent 9615b90df0
commit fb8161dc0d

View File

@@ -12,6 +12,10 @@ on:
- "app/**" - "app/**"
workflow_dispatch: workflow_dispatch:
env:
GITEA_URL: ${{ gitea.server_url }}
REPO: ${{ gitea.repository }}
jobs: jobs:
build-linux: build-linux:
runs-on: ubuntu-latest runs-on: ubuntu-latest
@@ -63,15 +67,39 @@ jobs:
working-directory: ./app working-directory: ./app
run: npx tauri build run: npx tauri build
- name: Upload Linux artifacts - name: Collect artifacts
uses: actions/upload-artifact@v4 run: |
with: mkdir -p artifacts
name: triple-c-linux cp app/src-tauri/target/release/bundle/appimage/*.AppImage artifacts/ 2>/dev/null || true
path: | cp app/src-tauri/target/release/bundle/deb/*.deb artifacts/ 2>/dev/null || true
app/src-tauri/target/release/bundle/appimage/*.AppImage cp app/src-tauri/target/release/bundle/rpm/*.rpm artifacts/ 2>/dev/null || true
app/src-tauri/target/release/bundle/deb/*.deb ls -la artifacts/
app/src-tauri/target/release/bundle/rpm/*.rpm
if-no-files-found: warn - name: Upload to Gitea release
if: gitea.event_name == 'push'
env:
TOKEN: ${{ secrets.REGISTRY_TOKEN }}
run: |
TAG="build-$(echo ${{ gitea.sha }} | cut -c1-7)"
# Create release
curl -s -X POST \
-H "Authorization: token ${TOKEN}" \
-H "Content-Type: application/json" \
-d "{\"tag_name\": \"${TAG}\", \"name\": \"Linux Build ${TAG}\", \"body\": \"Automated build from commit ${{ gitea.sha }}\"}" \
"${GITEA_URL}/api/v1/repos/${REPO}/releases" > release.json
RELEASE_ID=$(cat release.json | grep -o '"id":[0-9]*' | head -1 | grep -o '[0-9]*')
echo "Release ID: ${RELEASE_ID}"
# Upload each artifact
for file in artifacts/*; do
[ -f "$file" ] || continue
filename=$(basename "$file")
echo "Uploading ${filename}..."
curl -s -X POST \
-H "Authorization: token ${TOKEN}" \
-H "Content-Type: application/octet-stream" \
--data-binary "@${file}" \
"${GITEA_URL}/api/v1/repos/${REPO}/releases/${RELEASE_ID}/assets?name=${filename}"
done
build-windows: build-windows:
runs-on: windows-latest runs-on: windows-latest
@@ -144,11 +172,37 @@ jobs:
set "PATH=%USERPROFILE%\.cargo\bin;C:\Program Files\nodejs;%PATH%" set "PATH=%USERPROFILE%\.cargo\bin;C:\Program Files\nodejs;%PATH%"
cargo tauri build cargo tauri build
- name: Upload Windows artifacts - name: Collect artifacts
uses: actions/upload-artifact@v4 run: |
with: set "PATH=%USERPROFILE%\.cargo\bin;C:\Program Files\nodejs;%PATH%"
name: triple-c-windows mkdir artifacts
path: | copy app\src-tauri\target\release\bundle\msi\*.msi artifacts\ 2>nul
app/src-tauri/target/release/bundle/msi/*.msi copy app\src-tauri\target\release\bundle\nsis\*.exe artifacts\ 2>nul
app/src-tauri/target/release/bundle/nsis/*.exe dir artifacts\
if-no-files-found: warn
- name: Upload to Gitea release
if: gitea.event_name == 'push'
shell: bash
env:
TOKEN: ${{ secrets.REGISTRY_TOKEN }}
run: |
TAG="build-win-$(echo ${{ gitea.sha }} | cut -c1-7)"
# Create release
curl -s -X POST \
-H "Authorization: token ${TOKEN}" \
-H "Content-Type: application/json" \
-d "{\"tag_name\": \"${TAG}\", \"name\": \"Windows Build ${TAG}\", \"body\": \"Automated build from commit ${{ gitea.sha }}\"}" \
"${GITEA_URL}/api/v1/repos/${REPO}/releases" > release.json
RELEASE_ID=$(cat release.json | grep -o '"id":[0-9]*' | head -1 | grep -o '[0-9]*')
echo "Release ID: ${RELEASE_ID}"
# Upload each artifact
for file in artifacts/*; do
[ -f "$file" ] || continue
filename=$(basename "$file")
echo "Uploading ${filename}..."
curl -s -X POST \
-H "Authorization: token ${TOKEN}" \
-H "Content-Type: application/octet-stream" \
--data-binary "@${file}" \
"${GITEA_URL}/api/v1/repos/${REPO}/releases/${RELEASE_ID}/assets?name=${filename}"
done