Skip to content

Commit ab8ab3b

Browse files
feat: Changes to generate sdk changelog in releases.md and pr description (#229)
Add new SDK changelog
1 parent 6777ace commit ab8ab3b

File tree

12 files changed

+350
-130
lines changed

12 files changed

+350
-130
lines changed

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ require (
1212
github.com/pb33f/libopenapi v0.15.14
1313
github.com/pkg/errors v0.9.1
1414
github.com/speakeasy-api/git-diff-parser v0.0.3
15-
github.com/speakeasy-api/sdk-gen-config v1.31.2
15+
github.com/speakeasy-api/sdk-gen-config v1.31.3
1616
github.com/speakeasy-api/speakeasy-client-sdk-go/v3 v3.15.4
17-
github.com/speakeasy-api/versioning-reports v0.6.0
17+
github.com/speakeasy-api/versioning-reports v0.6.1
1818
github.com/stretchr/testify v1.9.0
1919
golang.org/x/exp v0.0.0-20240213143201-ec583247a57a
2020
golang.org/x/oauth2 v0.11.0

go.sum

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -138,12 +138,12 @@ github.com/skeema/knownhosts v1.2.1 h1:SHWdIUa82uGZz+F+47k8SY4QhhI291cXCpopT1lK2
138138
github.com/skeema/knownhosts v1.2.1/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo=
139139
github.com/speakeasy-api/git-diff-parser v0.0.3 h1:LL12d+HMtSyj6O/hQqIn/lgDPYI6ci/DEhk0la/xA+0=
140140
github.com/speakeasy-api/git-diff-parser v0.0.3/go.mod h1:P46HmmVVmwA9P8h2wa0fDpmRM8/grbVQ+uKhWDtpkIY=
141-
github.com/speakeasy-api/sdk-gen-config v1.31.2 h1:5xquHCkMr/IVt/EUfU0wsu8pj5EFFm3Q7/398kZOCWI=
142-
github.com/speakeasy-api/sdk-gen-config v1.31.2/go.mod h1:e9PjnCRHGa4K4EFKVU+kKmihOZjJ2V4utcU+274+bnQ=
141+
github.com/speakeasy-api/sdk-gen-config v1.31.3 h1:RDFVcOMzb9rysPhXLFOGEKlX70cjQzRnlyXP5NnL/iY=
142+
github.com/speakeasy-api/sdk-gen-config v1.31.3/go.mod h1:e9PjnCRHGa4K4EFKVU+kKmihOZjJ2V4utcU+274+bnQ=
143143
github.com/speakeasy-api/speakeasy-client-sdk-go/v3 v3.15.4 h1:lPVNakwHrrRWRaNIdIHE6BK7RI6B/jpdwbtvI/xPEYo=
144144
github.com/speakeasy-api/speakeasy-client-sdk-go/v3 v3.15.4/go.mod h1:b4fiZ1Wid0JHwwiYqhaPifDwjmC15uiN7A8Cmid+9kw=
145-
github.com/speakeasy-api/versioning-reports v0.6.0 h1:oLokEQ7xnDXqWAQk60Sk+ifwYaRbq3BrLX2KyT8gWxE=
146-
github.com/speakeasy-api/versioning-reports v0.6.0/go.mod h1:LW5FABrvi5SBbeiD3HJYw0JZYe6Rw2Xna59pFJ2BmLI=
145+
github.com/speakeasy-api/versioning-reports v0.6.1 h1:pvuvA1IFO7PVlpdFh7J2Y3hENDzhISFdNy0NVg/Cxb4=
146+
github.com/speakeasy-api/versioning-reports v0.6.1/go.mod h1:LW5FABrvi5SBbeiD3HJYw0JZYe6Rw2Xna59pFJ2BmLI=
147147
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
148148
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
149149
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=

internal/actions/release.go

Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@ func Release() error {
2222
if accessToken == "" {
2323
return errors.New("github access token is required")
2424
}
25+
repoURL := os.Getenv("GITHUB_REPOSITORY")
26+
if strings.Contains(strings.ToLower(repoURL), "speakeasy-api") || strings.Contains(strings.ToLower(repoURL), "speakeasy-sdks") || strings.Contains(strings.ToLower(repoURL), "ryan-timothy-albert") {
27+
os.Setenv("SDK_CHANGELOG_JULY_2025", "true")
28+
}
2529

2630
g, err := initAction()
2731
if err != nil {
@@ -31,9 +35,11 @@ func Release() error {
3135
dir := "."
3236
usingReleasesMd := false
3337
var providesExplicitTarget bool
38+
logging.Info("specificTarget: %s", environment.SpecifiedTarget())
3439
if specificTarget := environment.SpecifiedTarget(); specificTarget != "" {
3540
workflow, err := configuration.GetWorkflowAndValidateLanguages(true)
3641
if err != nil {
42+
logging.Error("error: %v", err)
3743
return err
3844
}
3945
if target, ok := workflow.Targets[specificTarget]; ok {
@@ -42,11 +48,12 @@ func Release() error {
4248
}
4349

4450
dir = filepath.Join(environment.GetWorkingDirectory(), dir)
45-
4651
providesExplicitTarget = true
4752
}
4853
}
4954

55+
logging.Info("providesExplicitTarget is set as: %v", providesExplicitTarget)
56+
5057
if !providesExplicitTarget {
5158
// This searches for files that would be referenced in the GH Action trigger
5259
files, err := g.GetCommitedFiles()
@@ -61,23 +68,40 @@ func Release() error {
6168
}
6269

6370
dir, usingReleasesMd = GetDirAndShouldUseReleasesMD(files, dir, usingReleasesMd)
71+
6472
}
6573

74+
var languages map[string]releases.LanguageReleaseInfo
6675
var latestRelease *releases.ReleasesInfo
76+
var targetSpecificReleaseNotes releases.TargetReleaseNotes = nil
77+
oldReleaseContent := ""
78+
79+
// Old way of getting release Info (uses RELEASES.md)
6780
if usingReleasesMd {
81+
logging.Info("Using RELEASES.md to get release info")
6882
latestRelease, err = releases.GetLastReleaseInfo(dir)
69-
if err != nil {
70-
return err
71-
}
7283
} else {
84+
logging.Info("Using gen lockfile to get release info")
7385
latestRelease, err = releases.GetReleaseInfoFromGenerationFiles(dir)
7486
if err != nil {
87+
fmt.Printf("Error getting release info from generation files: %v\n", err)
7588
return err
7689
}
90+
// targetSpecificReleaseNotes variable is present only if SDK_CHANGELOG_JULY_2025 env is true
91+
targetSpecificReleaseNotes, err = releases.GetTargetSpecificReleaseNotes(dir)
92+
if err != nil {
93+
fmt.Printf("Error getting target specific release notes: %v\n", err)
94+
}
95+
96+
}
97+
if err != nil {
98+
return err
7799
}
100+
languages = latestRelease.Languages
101+
oldReleaseContent = latestRelease.String()
78102

79103
outputs := map[string]string{}
80-
for lang, info := range latestRelease.Languages {
104+
for lang, info := range languages {
81105
outputs[utils.OutputTargetRegenerated(lang)] = "true"
82106
outputs[utils.OutputTargetDirectory(lang)] = info.Path
83107
}
@@ -86,7 +110,7 @@ func Release() error {
86110
return err
87111
}
88112

89-
if err := g.CreateRelease(*latestRelease, outputs); err != nil {
113+
if err := g.CreateRelease(oldReleaseContent, languages, outputs, targetSpecificReleaseNotes); err != nil {
90114
return err
91115
}
92116

@@ -95,7 +119,7 @@ func Release() error {
95119
}
96120

97121
if os.Getenv("SPEAKEASY_API_KEY") != "" {
98-
if err = addCurrentBranchTagging(g, latestRelease.Languages); err != nil {
122+
if err = addCurrentBranchTagging(g, languages); err != nil {
99123
return errors.Wrap(err, "failed to tag registry images")
100124
}
101125
}

internal/actions/runWorkflow.go

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package actions
22

33
import (
4+
"encoding/json"
45
"fmt"
56
"os"
67
"strings"
@@ -9,7 +10,6 @@ import (
910
"github.com/pkg/errors"
1011
"github.com/speakeasy-api/sdk-generation-action/internal/utils"
1112
"github.com/speakeasy-api/sdk-generation-action/internal/versionbumps"
12-
"github.com/speakeasy-api/versioning-reports/versioning"
1313

1414
"github.com/speakeasy-api/sdk-generation-action/internal/configuration"
1515
"github.com/speakeasy-api/sdk-generation-action/internal/git"
@@ -102,6 +102,12 @@ func RunWorkflow() error {
102102
anythingRegenerated := false
103103

104104
var releaseInfo releases.ReleasesInfo
105+
runResultInfo, err := json.MarshalIndent(runRes, "", " ")
106+
if err != nil {
107+
logging.Debug("failed to marshal runRes : %s\n", err)
108+
} else {
109+
logging.Debug("Result of running the command is: %s\n", runResultInfo)
110+
}
105111
if runRes.GenInfo != nil {
106112
docVersion := runRes.GenInfo.OpenAPIDocVersion
107113
resolvedVersion = runRes.GenInfo.SpeakeasyVersion
@@ -150,18 +156,18 @@ func RunWorkflow() error {
150156
}
151157

152158
if err := releases.UpdateReleasesFile(releaseInfo, releasesDir); err != nil {
159+
logging.Error("error while updating releases file: %v", err.Error())
153160
return err
154161
}
155162

156-
if _, err := g.CommitAndPush(docVersion, resolvedVersion, "", environment.ActionRunWorkflow, false); err != nil {
163+
if _, err := g.CommitAndPush(docVersion, resolvedVersion, "", environment.ActionRunWorkflow, false, runRes.VersioningInfo.VersionReport); err != nil {
157164
return err
158165
}
159166
}
160167

161168
outputs["resolved_speakeasy_version"] = resolvedVersion
162-
163169
if sourcesOnly {
164-
if _, err := g.CommitAndPush("", resolvedVersion, "", environment.ActionRunWorkflow, sourcesOnly); err != nil {
170+
if _, err := g.CommitAndPush("", resolvedVersion, "", environment.ActionRunWorkflow, sourcesOnly, nil); err != nil {
165171
return err
166172
}
167173
}
@@ -184,6 +190,7 @@ func RunWorkflow() error {
184190
OpenAPIChangeSummary: runRes.OpenAPIChangeSummary,
185191
GenInfo: runRes.GenInfo,
186192
currentRelease: &releaseInfo,
193+
releaseNotes: runRes.ReleaseNotes,
187194
}); err != nil {
188195
return err
189196
}
@@ -207,10 +214,11 @@ type finalizeInputs struct {
207214
LintingReportURL string
208215
ChangesReportURL string
209216
OpenAPIChangeSummary string
210-
VersioningReport *versioning.MergedVersionReport
211217
VersioningInfo versionbumps.VersioningInfo
212218
GenInfo *run.GenerationInfo
213219
currentRelease *releases.ReleasesInfo
220+
// key is language target name, value is release notes
221+
releaseNotes map[string]string
214222
}
215223

216224
// Sets outputs and creates or adds releases info
@@ -233,13 +241,14 @@ func finalize(inputs finalizeInputs) error {
233241
}
234242
}()
235243

244+
logging.Info("getMode from the environment: %s\n", environment.GetMode())
245+
logging.Info("SDK_CHANGELOG_JULY_2025: %s", os.Getenv("SDK_CHANGELOG_JULY_2025"))
236246
switch environment.GetMode() {
237247
case environment.ModePR:
238248
branchName, pr, err := inputs.Git.FindExistingPR(branchName, environment.ActionFinalize, inputs.SourcesOnly)
239249
if err != nil {
240250
return err
241251
}
242-
243252
pr, err = inputs.Git.CreateOrUpdatePR(git.PRInfo{
244253
BranchName: branchName,
245254
ReleaseInfo: inputs.currentRelease,
@@ -272,11 +281,25 @@ func finalize(inputs finalizeInputs) error {
272281

273282
case environment.ModeDirect:
274283
var releaseInfo *releases.ReleasesInfo
284+
var oldReleaseInfo string
285+
var languages map[string]releases.LanguageReleaseInfo
286+
var targetSpecificReleaseNotes releases.TargetReleaseNotes = nil
275287
if !inputs.SourcesOnly {
276288
releaseInfo = inputs.currentRelease
289+
languages = releaseInfo.Languages
290+
oldReleaseInfo = releaseInfo.String()
291+
logging.Info("release Notes: %+v", inputs.releaseNotes)
292+
if os.Getenv("SDK_CHANGELOG_JULY_2025") == "true" && inputs.releaseNotes != nil {
293+
targetSpecificReleaseNotes = inputs.releaseNotes
294+
}
295+
277296
// We still read from releases info for terraform generations since they use the goreleaser
297+
// Read from Releases.md for terraform generations
278298
if inputs.Outputs[utils.OutputTargetRegenerated("terraform")] == "true" {
279299
releaseInfo, err = getReleasesInfo()
300+
oldReleaseInfo = releaseInfo.String()
301+
targetSpecificReleaseNotes = nil
302+
languages = releaseInfo.Languages
280303
if err != nil {
281304
return err
282305
}
@@ -289,7 +312,7 @@ func finalize(inputs finalizeInputs) error {
289312
}
290313

291314
if !inputs.SourcesOnly {
292-
if err := inputs.Git.CreateRelease(*releaseInfo, inputs.Outputs); err != nil {
315+
if err := inputs.Git.CreateRelease(oldReleaseInfo, languages, inputs.Outputs, targetSpecificReleaseNotes); err != nil {
293316
return err
294317
}
295318
}

internal/actions/suggest.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ func Suggest() error {
6060

6161
outputs["cli_output"] = out
6262

63-
if _, err := g.CommitAndPush("", "", environment.GetOpenAPIDocOutput(), environment.ActionSuggest, false); err != nil {
63+
if _, err := g.CommitAndPush("", "", environment.GetOpenAPIDocOutput(), environment.ActionSuggest, false, nil); err != nil {
6464
return err
6565
}
6666

internal/cli/cli.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,17 @@ var defaultSupportedTargets = []string{
4040
"typescript",
4141
}
4242

43+
// Targets for the new changelog - JULY 2025
44+
var DefaultSupportedTargetsForChangelog = []string{
45+
"typescript",
46+
"python",
47+
"go",
48+
"java",
49+
"csharp",
50+
"php",
51+
"ruby",
52+
}
53+
4354
func GetSupportedTargetNames() []string {
4455
out, err := runSpeakeasyCommand("generate", "supported-targets")
4556
if err == nil && out != "" {

internal/cli/speakeasy.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717

1818
"github.com/speakeasy-api/sdk-generation-action/internal/download"
1919
"github.com/speakeasy-api/sdk-generation-action/internal/environment"
20+
"github.com/speakeasy-api/sdk-generation-action/internal/logging"
2021
)
2122

2223
type Git interface {
@@ -78,9 +79,9 @@ func Download(pinnedVersion string, g Git) (string, error) {
7879
func runSpeakeasyCommand(args ...string) (string, error) {
7980
baseDir := environment.GetBaseDir()
8081
extraRunEnvVars := environment.SpeakeasyEnvVars()
81-
8282
cmdPath := filepath.Join(baseDir, "bin", "speakeasy")
83-
83+
logging.Info("The command path being executed: %s", cmdPath)
84+
logging.Info("The command args: %s", args)
8485
cmd := exec.Command(cmdPath, args...)
8586
cmd.Dir = filepath.Join(environment.GetWorkspace(), "repo", environment.GetWorkingDirectory())
8687
cmd.Env = os.Environ()

0 commit comments

Comments
 (0)