in cmd/krel/cmd/release_notes.go [225:298]
func runReleaseNotes() (err error) {
var tag string
if releaseNotesOpts.tag == "" {
tag, err = tryToFindLatestMinorTag()
if err != nil {
return errors.Wrapf(err, "unable to find latest minor tag")
}
releaseNotesOpts.tag = tag
} else {
tag = releaseNotesOpts.tag
}
if releaseNotesOpts.userFork != "" {
org, repo, err := git.ParseRepoSlug(releaseNotesOpts.userFork)
if err != nil {
return errors.Wrap(err, "parsing the user's fork")
}
releaseNotesOpts.githubOrg = org
releaseNotesOpts.websiteRepo, releaseNotesOpts.draftRepo = repo, repo
// If the slug did not have a repo, use the defaults
if repo == "" {
releaseNotesOpts.websiteRepo = defaultKubernetesSigsRepo
releaseNotesOpts.draftRepo = git.DefaultGithubReleaseRepo
}
}
// First, validate cmdline options
if err := releaseNotesOpts.Validate(); err != nil {
return errors.Wrap(err, "validating command line options")
}
// before running the generators, verify that the repositories are ready
if releaseNotesOpts.createWebsitePR {
if err := github.VerifyFork(
websiteBranchPrefix+tag,
releaseNotesOpts.githubOrg, releaseNotesOpts.websiteRepo,
defaultKubernetesSigsOrg, defaultKubernetesSigsRepo,
); err != nil {
return errors.Wrapf(err, "while checking %s/%s fork", defaultKubernetesSigsOrg, defaultKubernetesSigsRepo)
}
}
if releaseNotesOpts.createDraftPR {
if err := github.VerifyFork(
draftBranchPrefix+tag,
releaseNotesOpts.githubOrg, releaseNotesOpts.draftRepo,
git.DefaultGithubOrg, git.DefaultGithubReleaseRepo,
); err != nil {
return errors.Wrapf(err, "while checking %s/%s fork", git.DefaultGithubOrg, git.DefaultGithubReleaseRepo)
}
}
// Create the PR for relnotes.k8s.io
if releaseNotesOpts.createWebsitePR && confirmWithUser(releaseNotesOpts, "Create website pull request?") {
// Run the website PR process
if err := createWebsitePR(releaseNotesOpts.repoPath, tag); err != nil {
return errors.Wrap(err, "creating website PR")
}
}
// Create the PR for the Release Notes Draft in k/sig-release
if releaseNotesOpts.createDraftPR && confirmWithUser(releaseNotesOpts, "Create draft pull request?") {
// Create the Draft PR Process
if err := createDraftPR(releaseNotesOpts.repoPath, tag); err != nil {
return errors.Wrap(err, "creating Draft PR")
}
}
if releaseNotesOpts.createDraftPR || releaseNotesOpts.createWebsitePR {
logrus.Info("Release notes generation complete!")
}
return nil
}