fix: create Gitea Release in CI + updater uses releases/latest API
All checks were successful
Build & Sign Wraith / Build Windows + Sign (push) Successful in 1m3s
All checks were successful
Build & Sign Wraith / Build Windows + Sign (push) Successful in 1m3s
CI now creates a proper Gitea Release after uploading packages. The
updater queries /api/v1/repos/{owner}/{repo}/releases/latest which
requires a Release object (not just a tag). Previous tags won't have
releases — the updater will start working from this build forward.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
4af90bb80d
commit
4d198e9014
@ -426,3 +426,20 @@ jobs:
|
||||
echo ""
|
||||
echo "=== Contents ==="
|
||||
ls -la dist/
|
||||
|
||||
# ===============================================================
|
||||
# Create Gitea Release
|
||||
# ===============================================================
|
||||
- name: Create Gitea Release
|
||||
run: |
|
||||
VERSION="${{ steps.version.outputs.version }}"
|
||||
GITEA_URL="https://git.command.vigilcyber.com"
|
||||
|
||||
echo "=== Creating Gitea Release for ${VERSION} ==="
|
||||
curl -s -X POST \
|
||||
-H "Authorization: token ${{ secrets.GIT_TOKEN }}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{\"tag_name\": \"${VERSION}\", \"name\": \"Wraith ${VERSION}\", \"body\": \"Auto-release from CI build.\"}" \
|
||||
"${GITEA_URL}/api/v1/repos/vstockwell/wraith/releases"
|
||||
echo ""
|
||||
echo "Release created."
|
||||
|
||||
@ -80,7 +80,7 @@ func (u *UpdateService) CheckForUpdate() (*UpdateInfo, error) {
|
||||
}
|
||||
|
||||
// Fetch latest package version from the Gitea API.
|
||||
// Use Gitea releases API to find the latest release tag
|
||||
// Use Gitea releases API to find the latest release
|
||||
apiURL := fmt.Sprintf(
|
||||
"%s/api/v1/repos/%s/%s/releases/latest",
|
||||
u.baseURL, u.owner, u.pkg,
|
||||
@ -101,13 +101,15 @@ func (u *UpdateService) CheckForUpdate() (*UpdateInfo, error) {
|
||||
|
||||
body, err := io.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("read release API response: %w", err)
|
||||
return nil, fmt.Errorf("read release response: %w", err)
|
||||
}
|
||||
|
||||
slog.Info("release API response", "status", resp.StatusCode, "body", string(body)[:min(len(body), 500)])
|
||||
slog.Info("release API response", "status", resp.StatusCode, "bodyLen", len(body))
|
||||
|
||||
if resp.StatusCode != http.StatusOK {
|
||||
return nil, fmt.Errorf("unexpected status %d from releases API: %s", resp.StatusCode, string(body))
|
||||
// No releases yet — not an error, just nothing to update to
|
||||
slog.Info("no releases found", "status", resp.StatusCode)
|
||||
return info, nil
|
||||
}
|
||||
|
||||
var release giteaRelease
|
||||
@ -116,7 +118,7 @@ func (u *UpdateService) CheckForUpdate() (*UpdateInfo, error) {
|
||||
}
|
||||
|
||||
if release.TagName == "" {
|
||||
slog.Info("no releases found")
|
||||
slog.Info("release has no tag")
|
||||
return info, nil
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user