ci: add release job with Gitea binary uploads
All checks were successful
CI/CD / Test (push) Successful in 1m15s
CI/CD / Lint (push) Successful in 1m21s
CI/CD / Build (amd64, darwin) (push) Successful in 42s
CI/CD / Build (amd64, linux) (push) Successful in 30s
CI/CD / Build (arm64, darwin) (push) Successful in 30s
CI/CD / Build (arm64, linux) (push) Successful in 31s
CI/CD / Release (push) Has been skipped

- Upload artifacts on tag pushes
- Create release via Gitea API
- Attach all platform binaries to release
This commit is contained in:
2026-01-07 12:10:33 +01:00
parent b7dd325c51
commit ab0ff3f28d

View File

@@ -94,3 +94,51 @@ jobs:
run: |
go build -ldflags="-s -w" -o dbbackup-${GOOS}-${GOARCH} .
ls -lh dbbackup-*
- name: Upload artifact
if: startsWith(github.ref, 'refs/tags/')
uses: actions/upload-artifact@v3
with:
name: dbbackup-${{ matrix.goos }}-${{ matrix.goarch }}
path: dbbackup-${{ matrix.goos }}-${{ matrix.goarch }}
release:
name: Release
runs-on: ubuntu-latest
needs: [build]
if: startsWith(github.ref, 'refs/tags/')
steps:
- name: Download all artifacts
uses: actions/download-artifact@v3
with:
path: artifacts
- name: Prepare release files
run: |
mkdir -p release
find artifacts -type f -name 'dbbackup-*' -exec cp {} release/ \;
cd release && ls -lh
- name: Create Gitea Release
env:
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
run: |
TAG=${GITHUB_REF#refs/tags/}
# Create release via API
RELEASE_ID=$(curl -s -X POST \
-H "Authorization: token ${GITEA_TOKEN}" \
-H "Content-Type: application/json" \
-d "{\"tag_name\":\"${TAG}\",\"name\":\"${TAG} - Systemd Integration & Prometheus Metrics\",\"body\":\"## Download\\n\\nSelect the binary for your platform.\",\"draft\":false,\"prerelease\":false}" \
"https://git.uuxo.net/api/v1/repos/${GITHUB_REPOSITORY}/releases" | jq -r '.id')
echo "Created release ID: $RELEASE_ID"
# Upload each binary
for file in release/dbbackup-*; do
echo "Uploading $file..."
curl -s -X POST \
-H "Authorization: token ${GITEA_TOKEN}" \
-F "attachment=@${file}" \
"https://git.uuxo.net/api/v1/repos/${GITHUB_REPOSITORY}/releases/${RELEASE_ID}/assets?name=$(basename $file)"
done