mirror of
https://github.com/coder/coder.git
synced 2026-06-06 22:48:19 +00:00
b95697a370
Replace the local interactive release CLI and legacy shell scripts with a non-interactive Go tool (`scripts/release-action/`) and a rewritten `release.yaml` workflow. Release managers trigger releases from the GitHub Actions UI by selecting a branch, picking a release type (`rc`, `release`, or `create-release-branch`), and optionally providing a commit SHA. The Go tool has four subcommands: `calculate-version` (computes next version from git state), `generate-notes` (release notes from commit log and PR metadata), `publish` (creates GitHub release with checksums), and the workflow handles tag creation, branch creation, building, and downstream publishing. `scripts/version.sh` fallback now uses `git describe` (nearest ancestor tag) instead of global latest so dev builds on release branches show the correct version series.
30 lines
655 B
Go
30 lines
655 B
Go
package main
|
|
|
|
import (
|
|
"errors"
|
|
"os/exec"
|
|
"strings"
|
|
)
|
|
|
|
// gitOutput runs a read-only git command and returns trimmed stdout.
|
|
func gitOutput(args ...string) (string, error) {
|
|
cmd := exec.Command("git", args...)
|
|
out, err := cmd.Output()
|
|
if err != nil {
|
|
var exitErr *exec.ExitError
|
|
if errors.As(err, &exitErr) {
|
|
return "", exitErr
|
|
}
|
|
return "", err
|
|
}
|
|
return strings.TrimSpace(string(out)), nil
|
|
}
|
|
|
|
// gitRun runs a git command, discarding stdout/stderr. Use this
|
|
// for commands where only the exit code matters (e.g. merge-base
|
|
// --is-ancestor).
|
|
func gitRun(args ...string) error {
|
|
cmd := exec.Command("git", args...)
|
|
return cmd.Run()
|
|
}
|