Skip to content

Commit

Permalink
Apply fix for release notes index JSON
Browse files Browse the repository at this point in the history
Signed-off-by: Sascha Grunert <[email protected]>
  • Loading branch information
saschagrunert committed Nov 19, 2024
1 parent 527fb34 commit 72da37f
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 12 deletions.
21 changes: 9 additions & 12 deletions pkg/release/publish.go
Original file line number Diff line number Diff line change
Expand Up @@ -402,13 +402,14 @@ func (p *Publisher) PublishToGcs(
return nil
}

func gcsPathToPublisURL(gcsPath string) (string, error) {
const pathSep = "/"
split := strings.Split(strings.TrimPrefix(gcsPath, object.GcsPrefix), pathSep)
if len(split) < 2 {
return "", fmt.Errorf("invalid GCS path: %s", gcsPath)
}
return URLPrefixForBucket(split[0]) + pathSep + strings.Join(split[1:], pathSep), nil
// TODO: remove this function once https://cdn.dl.k8s.io/release/release-notes-index.json
// is fixed.
func FixPublicReleaseNotesURL(gcsPath string) string {
const prefix = "https://storage.googleapis.com/"
for strings.HasPrefix(gcsPath, prefix) {
gcsPath = strings.TrimPrefix(gcsPath, prefix)
}
return gcsPath
}

// PublishReleaseNotesIndex updates or creates the release notes index JSON at
Expand Down Expand Up @@ -467,11 +468,7 @@ func (p *Publisher) PublishReleaseNotesIndex(

// Fixup the index to only use public URLS
for v, releaseNotesPath := range versions {
releaseNotesPublicURL, err := gcsPathToPublisURL(releaseNotesPath)
if err != nil {
return fmt.Errorf("get publish URL from release notes GCS path: %w", err)
}
versions[v] = releaseNotesPublicURL
versions[v] = FixPublicReleaseNotesURL(releaseNotesPath)
}

versionJSON, err := p.client.Marshal(versions)
Expand Down
28 changes: 28 additions & 0 deletions pkg/release/publish_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -372,3 +372,31 @@ func TestIsUpToDate(t *testing.T) {
})
}
}

func TestFixPublicReleaseNotesURL(t *testing.T) {
t.Parallel()

for name, tc := range map[string]struct {
input, expected string
}{
"should not affect correct URL": {
input: "https://dl.k8s.io/release/v1.32.0-beta.0/release-notes.json",
expected: "https://dl.k8s.io/release/v1.32.0-beta.0/release-notes.json",
},
"should fix wrong URL with 1 prefix": {
input: "https://storage.googleapis.com/https://dl.k8s.io/release/v1.32.0-alpha.3/release-notes.json",
expected: "https://dl.k8s.io/release/v1.32.0-alpha.3/release-notes.json",
},
"should fix wrong URL with multiple prefixes": {
input: "https://storage.googleapis.com/https://storage.googleapis.com/https://dl.k8s.io/release/v1.28.1/release-notes.json",
expected: "https://dl.k8s.io/release/v1.28.1/release-notes.json",
},
} {
t.Run(name, func(t *testing.T) {
t.Parallel()

res := release.FixPublicReleaseNotesURL(tc.input)
require.Equal(t, tc.expected, res)
})
}
}

0 comments on commit 72da37f

Please sign in to comment.