diff --git a/cmd/main.go b/cmd/main.go index f9bb4df..dc517f3 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -387,6 +387,13 @@ func run(o options) error { return nil } + // --- release.env (GitLab CI dotenv artifact) --- + releaseEnvPath := filepath.Join(absRepo, "release.env") + if err := os.WriteFile(releaseEnvPath, []byte("NEXT_VERSION="+nextTag+"\n"), 0644); err != nil { + return fmt.Errorf("write release.env: %w", err) + } + logDone("release.env: NEXT_VERSION=%s", nextTag) + // --- pom.xml + CHANGELOG.md (skipped with --tag-only) --- if !o.tagOnly { var filesToCommit []string diff --git a/cmd/main_test.go b/cmd/main_test.go index 5378684..e926260 100644 --- a/cmd/main_test.go +++ b/cmd/main_test.go @@ -658,6 +658,47 @@ func TestRunChangelogFile(t *testing.T) { } } +func TestRunReleaseEnv(t *testing.T) { + _, dir := setupRepo(t) + addFile(t, dir, "x.go", "// fix") + repo, _ := gogit.PlainOpen(dir) + w, _ := repo.Worktree() + w.Add("x.go") + w.Commit("fix: something", &gogit.CommitOptions{Author: testSig()}) + + err := execCmd(t, "--no-push", "--branch", "release/1.2", "--repo", dir) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + + data, err := os.ReadFile(filepath.Join(dir, "release.env")) + if err != nil { + t.Fatal("expected release.env to be created") + } + content := strings.TrimSpace(string(data)) + if content != "NEXT_VERSION=1.2.0" { + t.Errorf("release.env content = %q, want %q", content, "NEXT_VERSION=1.2.0") + } +} + +func TestRunReleaseEnvDryRun(t *testing.T) { + _, dir := setupRepo(t) + addFile(t, dir, "x.go", "// fix") + repo, _ := gogit.PlainOpen(dir) + w, _ := repo.Worktree() + w.Add("x.go") + w.Commit("fix: something", &gogit.CommitOptions{Author: testSig()}) + + err := execCmd(t, "--dry-run", "--branch", "release/1.2", "--repo", dir) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + + if _, err := os.Stat(filepath.Join(dir, "release.env")); err == nil { + t.Error("release.env must not be created in --dry-run mode") + } +} + func TestRunVerbose(t *testing.T) { _, dir := setupRepo(t) addFile(t, dir, "x.go", "// feat")