diff --git a/.gitea/workflows/build-release.yml b/.gitea/workflows/build-release.yml index 3c2fd06..553d70e 100644 --- a/.gitea/workflows/build-release.yml +++ b/.gitea/workflows/build-release.yml @@ -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." diff --git a/internal/updater/service.go b/internal/updater/service.go index 64889e1..ca3651e 100644 --- a/internal/updater/service.go +++ b/internal/updater/service.go @@ -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 }