@@ -306,6 +306,13 @@ func (r *ReleaseVSCodeGoTasks) createReleaseBranch(ctx *wf.TaskContext, release
306
306
return nil
307
307
}
308
308
309
+ // generatePackageExtension builds the vscode-go package extension from source.
310
+ //
311
+ // Uses the 'revision' parameter to determine the commit to build.
312
+ // Uses the 'release' and 'prerelease' to determine the output file name.
313
+ //
314
+ // Returns a CloudBuild struct with information about the built package
315
+ // extension in Google Cloud Storage (GCS).
309
316
func (r * ReleaseVSCodeGoTasks ) generatePackageExtension (ctx * wf.TaskContext , release releaseVersion , prerelease , revision string ) (CloudBuild , error ) {
310
317
steps := func (resultURL string ) []* cloudbuildpb.BuildStep {
311
318
const packageScriptFmt = cloudBuildClientScriptPrefix + `
@@ -905,7 +912,13 @@ func (r *ReleaseVSCodeGoTasks) NewReleaseDefinition() *wf.Definition {
905
912
release := wf .Task1 (wd , "determine the release version" , r .determineReleaseVersion , versionBumpStrategy )
906
913
prerelease := wf .Task1 (wd , "find the latest pre-release version" , r .latestPrereleaseVersion , release )
907
914
908
- _ = wf .Action2 (wd , "await release coordinator's approval" , r .approveStableRelease , release , prerelease )
915
+ approved := wf .Action2 (wd , "await release coordinator's approval" , r .approveStableRelease , release , prerelease )
916
+
917
+ tag := wf .Task2 (wd , "find tag for the release candidate" , findVSCodeReleaseTag , release , prerelease , wf .After (approved ))
918
+ // Skip test result verification because it was already executed in the
919
+ // prerelease flow.
920
+ build := wf .Task3 (wd , "generate package extension (.vsix) from release candidate tag" , r .generatePackageExtension , release , wf .Const ("" ), tag )
921
+ _ = wf .Action2 (wd , "publish to vscode marketplace" , r .publishPackageExtension , release , build )
909
922
910
923
return wd
911
924
}
@@ -925,3 +938,11 @@ func (r *ReleaseVSCodeGoTasks) latestPrereleaseVersion(ctx *wf.TaskContext, rele
925
938
926
939
return prerelease , nil
927
940
}
941
+
942
+ // findVSCodeReleaseTag returns the tag for the VS Code release candidate.
943
+ //
944
+ // It wraps the versionString function and includes an extra parameter to
945
+ // facilitate execution within the release flow steps.
946
+ func findVSCodeReleaseTag (_ * wf.TaskContext , release releaseVersion , prerelease string ) (string , error ) {
947
+ return versionString (release , prerelease ), nil
948
+ }
0 commit comments