From 552bb1e6148242aba67591ae4aee0941d0e7e73a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nick=20J=C3=BCttner?= Date: Wed, 25 Jun 2025 12:33:31 +0200 Subject: [PATCH 1/3] add changelog validation workflow for release PRs --- cmd/gen/workflows/runner.go | 1 + .../internal/file/validate_changelog.go | 31 +++++++++++++++++ .../file/validate_changelog.yaml.template | 34 +++++++++++++++++++ pkg/gen/input/workflows/workflows.go | 4 +++ 4 files changed, 70 insertions(+) create mode 100644 pkg/gen/input/workflows/internal/file/validate_changelog.go create mode 100644 pkg/gen/input/workflows/internal/file/validate_changelog.yaml.template diff --git a/cmd/gen/workflows/runner.go b/cmd/gen/workflows/runner.go index a20c93b9f..fe6881682 100644 --- a/cmd/gen/workflows/runner.go +++ b/cmd/gen/workflows/runner.go @@ -55,6 +55,7 @@ func (r *runner) run(ctx context.Context, cmd *cobra.Command, args []string) err inputs := []input.Input{ workflowsInput.CreateRelease(), workflowsInput.CreateReleasePR(), + workflowsInput.ValidateChangelog(), } if r.flag.Language == "go" { diff --git a/pkg/gen/input/workflows/internal/file/validate_changelog.go b/pkg/gen/input/workflows/internal/file/validate_changelog.go new file mode 100644 index 000000000..ff8cbcd45 --- /dev/null +++ b/pkg/gen/input/workflows/internal/file/validate_changelog.go @@ -0,0 +1,31 @@ +package file + +import ( + _ "embed" + + "github.com/giantswarm/devctl/v7/pkg/gen/input" + "github.com/giantswarm/devctl/v7/pkg/gen/input/workflows/internal/params" +) + +//go:embed validate_changelog.yaml.template +var validateChangelogTemplate string + +//go:generate go run ../../../update-template-sha.go validate_changelog.yaml.template +//go:embed validate_changelog.yaml.template.sha +var validateChangelogTemplateSha string + +func NewValidateChangelogInput(p params.Params) input.Input { + i := input.Input{ + Path: params.RegenerableFileName(p, "validate_changelog.yaml"), + TemplateBody: validateChangelogTemplate, + TemplateDelims: input.InputTemplateDelims{ + Left: "{{{{", + Right: "}}}}", + }, + TemplateData: map[string]interface{}{ + "Header": params.Header("#", validateChangelogTemplateSha), + }, + } + + return i +} diff --git a/pkg/gen/input/workflows/internal/file/validate_changelog.yaml.template b/pkg/gen/input/workflows/internal/file/validate_changelog.yaml.template new file mode 100644 index 000000000..3f6ae6582 --- /dev/null +++ b/pkg/gen/input/workflows/internal/file/validate_changelog.yaml.template @@ -0,0 +1,34 @@ +{{{{ .Header }}}} +name: Validate Release Changelog + +on: + workflow_call: + pull_request: + types: [opened, synchronize, reopened] + paths: + - 'CHANGELOG.md' + branches: + - 'legacy#release#v*.*.*' + - 'main#release#v*.*.*' + - 'main#release#major' + - 'main#release#minor' + - 'main#release#patch' + - 'master#release#v*.*.*' + - 'master#release#major' + - 'master#release#minor' + - 'master#release#patch' + - 'release#v*.*.*' + - 'release#major' + - 'release#minor' + - 'release#patch' + - 'release-v*.*.x#release#v*.*.*' + # "!" negates previous positive patterns so it has to be at the end. + - '!release-v*.x.x#release#v*.*.*' + +permissions: + contents: read + pull-requests: write + +jobs: + validate-changelog: + uses: giantswarm/github-workflows/.github/workflows/validate-changelog.yaml@validate-changelog diff --git a/pkg/gen/input/workflows/workflows.go b/pkg/gen/input/workflows/workflows.go index e1f694d81..3dd1dee4c 100644 --- a/pkg/gen/input/workflows/workflows.go +++ b/pkg/gen/input/workflows/workflows.go @@ -83,3 +83,7 @@ func (w *Workflows) RunOSSFScorecard() input.Input { func (w *Workflows) UpdateChart() input.Input { return file.NewUpdateChartInput(w.params) } + +func (w *Workflows) ValidateChangelog() input.Input { + return file.NewValidateChangelogInput(w.params) +} From 9132452cb05900b571b663124d4c24b379bfe012 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nick=20J=C3=BCttner?= Date: Wed, 25 Jun 2025 12:37:29 +0200 Subject: [PATCH 2/3] add changelog validation workflow for release PRs --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d71c82685..59e341c26 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Added + +- Add changelog validation workflow for release PRs. + ## [7.3.0] - 2025-06-24 ## [7.2.7] - 2025-06-11 From 68605fd91a6f789a602ac09947a83c211ef42f07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nick=20J=C3=BCttner?= Date: Thu, 26 Jun 2025 11:33:10 +0200 Subject: [PATCH 3/3] update sha --- .../workflows/internal/file/validate_changelog.yaml.template | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/gen/input/workflows/internal/file/validate_changelog.yaml.template b/pkg/gen/input/workflows/internal/file/validate_changelog.yaml.template index 3f6ae6582..23fe8124f 100644 --- a/pkg/gen/input/workflows/internal/file/validate_changelog.yaml.template +++ b/pkg/gen/input/workflows/internal/file/validate_changelog.yaml.template @@ -1,5 +1,5 @@ {{{{ .Header }}}} -name: Validate Release Changelog +name: Validate changelog on: workflow_call: @@ -31,4 +31,4 @@ permissions: jobs: validate-changelog: - uses: giantswarm/github-workflows/.github/workflows/validate-changelog.yaml@validate-changelog + uses: giantswarm/github-workflows/.github/workflows/validate-changelog.yaml@3681e34c08ca044821ef7c1c037cf8b859194777