Skip to content

Commit

Permalink
Use only public URLS for release notes index
Browse files Browse the repository at this point in the history
We now switch over to use only the public urls for the index.

Signed-off-by: Sascha Grunert <sgrunert@redhat.com>
  • Loading branch information
saschagrunert committed Oct 11, 2024
1 parent 1e84a62 commit 8020353
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 17 deletions.
28 changes: 22 additions & 6 deletions pkg/release/publish.go
Original file line number Diff line number Diff line change
Expand Up @@ -402,11 +402,23 @@ 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
}

// PublishReleaseNotesIndex updates or creates the release notes index JSON at
// the target `gcsIndexRootPath`.
func (p *Publisher) PublishReleaseNotesIndex(
gcsIndexRootPath, gcsReleaseNotesPath, version string,
) error {
logrus.Infof("Using index root path: %s", gcsIndexRootPath)
logrus.Infof("Using GCS release notes path: %s", gcsReleaseNotesPath)

const releaseNotesIndex = "/release-notes-index.json"

indexFilePath, err := p.client.NormalizePath(
Expand All @@ -417,11 +429,6 @@ func (p *Publisher) PublishReleaseNotesIndex(
}
logrus.Infof("Publishing release notes index %s", indexFilePath)

releaseNotesFilePath, err := p.client.NormalizePath(gcsReleaseNotesPath)
if err != nil {
return fmt.Errorf("normalize release notes file: %w", err)
}

success, err := p.client.GSUtilStatus("-q", "stat", indexFilePath)
if err != nil {
return fmt.Errorf("run gcsutil stat: %w", err)
Expand Down Expand Up @@ -456,7 +463,16 @@ func (p *Publisher) PublishReleaseNotesIndex(
} else {
logrus.Info("Creating non existing release notes index file")
}
versions[version] = releaseNotesFilePath
versions[version] = gcsReleaseNotesPath

// 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
}

versionJSON, err := p.client.Marshal(versions)
if err != nil {
Expand Down
14 changes: 4 additions & 10 deletions pkg/release/publish_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -299,31 +299,25 @@ func TestPublishReleaseNotesIndex(t *testing.T) {
},
shouldError: true,
},
{ // failure NormalizePath 0
{ // failure NormalizePath
prepare: func(mock *releasefakes.FakePublisherClient) {
mock.NormalizePathReturnsOnCall(0, "", err)
},
shouldError: true,
},
{ // failure NormalizePath 1
prepare: func(mock *releasefakes.FakePublisherClient) {
mock.NormalizePathReturnsOnCall(1, "", err)
},
shouldError: true,
},
} {
sut := release.NewPublisher()
clientMock := &releasefakes.FakePublisherClient{}
sut.SetClient(clientMock)
tc.prepare(clientMock)

err := sut.PublishReleaseNotesIndex(
"", "", "",
"gs://foo-bar/release", "gs://foo-bar/release/v1.2.3/index.json", "v1.2.3",
)
if tc.shouldError {
require.NotNil(t, err)
require.Error(t, err)
} else {
require.Nil(t, err)
require.NoError(t, err)
}
}
}
Expand Down
3 changes: 2 additions & 1 deletion pkg/release/release.go
Original file line number Diff line number Diff line change
Expand Up @@ -246,7 +246,8 @@ func GetWorkspaceVersion() (string, error) {
func URLPrefixForBucket(bucket string) string {
bucket = strings.TrimPrefix(bucket, object.GcsPrefix)
urlPrefix := "https://storage.googleapis.com/" + bucket
if bucket == ProductionBucket {
const legacyBucket = "kubernetes-release"
if bucket == ProductionBucket || bucket == legacyBucket {
urlPrefix = ProductionBucketURL
}
return urlPrefix
Expand Down

0 comments on commit 8020353

Please sign in to comment.