Commit Graph

4 Commits

Author SHA1 Message Date
root ca90facbdd Add .forgejo/workflows/release.yml: tag v* publishes Forgejo release
Triggered on `push` of any `v*` tag. Single `release` job on the `go`
runner produces and uploads four assets to the matching Forgejo release:

  - drover-vX.Y.Z-windows-amd64.exe  (cross-compiled portable binary)
  - drover-vX.Y.Z-windows-amd64.zip  (portable bundle + WinDivert + docs)
  - drover-vX.Y.Z-setup.exe          (Inno Setup installer via Wine)
  - SHA256SUMS.txt                   (sha256 of the three above)

The asset names match what internal/updater/updater.go looks for, so
selfupdate keeps working on tagged releases.

Notes mirroring build.yml constraints:
  - manual git clone instead of actions/checkout (no Node in golang
    image; JS-based actions fail with `node: not found`)
  - apt-get installs wine/wine32:i386/xvfb/zip/jq in-job
  - Inno Setup 6.4.0 pinned, /VERYSILENT /CURRENTUSER install under Wine
  - prerelease auto-detected from a hyphen in the version (rc/beta/alpha)
  - curl uses -fsS so 409 (release exists) and other API errors fail loud
  - secrets.GITHUB_TOKEN handles both clone and Forgejo REST API writes

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-01 00:58:40 +03:00
root 956356ff2b build.yml: drop Node.js-dependent actions (cache, upload-artifact)
The runner image (golang:*) ships without Node.js, and actions/cache@v4
plus actions/upload-artifact@v4 transitively need it for hashFiles +
artifact upload. Verified by CI failure on first push (run #1, task 710):
"OCI runtime exec failed ... 'node': executable file not found in $PATH".

For now we accept ~20-30s of go module download per run (small project,
fine). Real release artifacts go via release.yml (next task) which will
use curl + Forgejo REST API to upload — pure bash, no Node needed.

Drop the smoke-build artifact upload too — it was only for inspection
during dev. Add `./bin/drover --version` to the linux smoke build so we
get exit-code verification that the CLI bootstraps correctly.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-01 00:29:09 +03:00
root 96b6192bb0 Add .forgejo/workflows/build.yml: vet, test, cross-compile to windows/amd64
Two jobs: 'test' runs go vet + go test -race + a Linux smoke build to
catch generic compile errors cheaply. 'build-windows' cross-compiles
drover.exe with version metadata baked in and uploads it as an artifact
with 14-day retention. CGO is disabled - divert-go integration in a
later phase will switch it on with mingw.

Manual git clone (no actions/checkout/setup-go) because the runner's
golang:1.23-bookworm image lacks Node.js. Both jobs cache GOMODCACHE
and GOCACHE keyed by go.sum hash. Concurrency cancel-in-progress keeps
the queue tidy when commits land in quick succession.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-01 00:26:46 +03:00
root 0acbc83e40 Add directory skeleton and CLI entry point with Cobra
- Create internal/{app,config,engine,divert,socks5,bypass,checker,service,tray,procscan,updater} with placeholder doc.go per package.
- Add .gitkeep stubs for internal/frontend, third_party/{windivert,icons}, installer/, .forgejo/workflows/, docs/.
- Implement cmd/drover/main.go: Cobra root with Version/Commit/BuildDate ldflags, --config global flag, and stub subcommands (check, update --check-only, service install/uninstall/start/stop).
- Add github.com/spf13/cobra v1.10.2 dependency.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-01 00:10:30 +03:00