Request Type
Enhancement to an existing workflow.
Affected Workflow
.github/workflows/go-pr-validation.yml
Problem / Motivation
The consolidated go-pr-validation.yml runs Go analysis by calling the reusable go-pr-analysis.yml. However, it only forwards a subset of go-pr-analysis's inputs. Two inputs that callers actively rely on are not exposed by go-pr-validation and therefore cannot be set when adopting the consolidated workflow:
golangci_lint_args — e.g. "--timeout=5m". Without it, large Go modules hit the default golangci-lint timeout and lint fails in CI.
app_name_prefix — e.g. "plugin-fees". Used to namespace coverage/build artifacts so they don't collide and are identifiable.
These are not edge cases: across our portfolio, ~13 active service repos set app_name_prefix and ~11 set golangci_lint_args: "--timeout=5m" on their develop branches (currently via the separate go-pr-analysis.yml at v1.33.0). Migrating them to the consolidated go-pr-validation.yml (the current go-boilerplate-ddd main shape) would silently drop both, regressing lint timeouts and artifact naming.
Reference — in go-pr-validation.yml@v1.33.1, the analysis job forwards only these inputs (lines ~206-217), omitting the two above:
uses: ./.github/workflows/go-pr-analysis.yml
with:
runner_type: ${{ inputs.runner_type }}
go_version: ${{ inputs.go_version }}
golangci_lint_version: ${{ inputs.golangci_lint_version }}
coverage_threshold: ${{ inputs.coverage_threshold }}
fail_on_coverage_threshold: ${{ inputs.fail_on_coverage_threshold }}
go_private_modules: ${{ inputs.go_private_modules }}
enable_integration_tests: ${{ inputs.enable_integration_tests }}
system_packages: ${{ inputs.system_packages }}
shared_paths: ${{ inputs.shared_paths }}
secrets: inherit
go-pr-analysis.yml already accepts both golangci_lint_args and app_name_prefix, so this is purely a pass-through gap in go-pr-validation.yml.
Proposed Solution
Add two optional inputs to go-pr-validation.yml and forward them to the go-pr-analysis.yml call:
# in on.workflow_call.inputs, under the "Go analysis" section:
golangci_lint_args:
description: 'Extra arguments passed to golangci-lint (e.g. --timeout=5m)'
type: string
default: ''
app_name_prefix:
description: 'Prefix used to namespace coverage/build artifacts'
type: string
default: ''
# in the go-analysis job's `with:` block:
golangci_lint_args: ${{ inputs.golangci_lint_args }}
app_name_prefix: ${{ inputs.app_name_prefix }}
Empty-string defaults preserve current behavior for existing callers.
Alternatives Considered
- Keep the separate-structure workflows (
go-pr-analysis.yml + pr-security-scan.yml + ...) instead of consolidating — preserves the inputs but prevents adopting the consolidated boilerplate shape org-wide.
- Drop the customizations when consolidating — rejected: removing
--timeout=5m causes real lint failures on larger modules.
Example Usage
jobs:
validate:
uses: LerianStudio/github-actions-shared-workflows/.github/workflows/go-pr-validation.yml@vX.Y.Z
with:
go_version: "1.26.4"
golangci_lint_version: "v2.11.3"
golangci_lint_args: "--timeout=5m"
app_name_prefix: "plugin-fees"
coverage_threshold: 85
fail_on_coverage_threshold: true
go_private_modules: "github.com/LerianStudio/*"
ignore_file: ".trivyignore.yaml"
secrets: inherit
Would This Be a Breaking Change?
No. Both inputs are optional with empty-string defaults; existing callers are unaffected.
Additional Context
This unblocks migrating the active plugin/service repos from the separate-structure (v1.33.0) to the consolidated go-pr-validation/go-release shape used by go-boilerplate-ddd main, without regressing lint timeouts or artifact naming.
Request Type
Enhancement to an existing workflow.
Affected Workflow
.github/workflows/go-pr-validation.ymlProblem / Motivation
The consolidated
go-pr-validation.ymlruns Go analysis by calling the reusablego-pr-analysis.yml. However, it only forwards a subset ofgo-pr-analysis's inputs. Two inputs that callers actively rely on are not exposed bygo-pr-validationand therefore cannot be set when adopting the consolidated workflow:golangci_lint_args— e.g."--timeout=5m". Without it, large Go modules hit the default golangci-lint timeout and lint fails in CI.app_name_prefix— e.g."plugin-fees". Used to namespace coverage/build artifacts so they don't collide and are identifiable.These are not edge cases: across our portfolio, ~13 active service repos set
app_name_prefixand ~11 setgolangci_lint_args: "--timeout=5m"on theirdevelopbranches (currently via the separatego-pr-analysis.ymlat v1.33.0). Migrating them to the consolidatedgo-pr-validation.yml(the currentgo-boilerplate-dddmain shape) would silently drop both, regressing lint timeouts and artifact naming.Reference — in
go-pr-validation.yml@v1.33.1, the analysis job forwards only these inputs (lines ~206-217), omitting the two above:go-pr-analysis.ymlalready accepts bothgolangci_lint_argsandapp_name_prefix, so this is purely a pass-through gap ingo-pr-validation.yml.Proposed Solution
Add two optional inputs to
go-pr-validation.ymland forward them to thego-pr-analysis.ymlcall:Empty-string defaults preserve current behavior for existing callers.
Alternatives Considered
go-pr-analysis.yml+pr-security-scan.yml+ ...) instead of consolidating — preserves the inputs but prevents adopting the consolidated boilerplate shape org-wide.--timeout=5mcauses real lint failures on larger modules.Example Usage
Would This Be a Breaking Change?
No. Both inputs are optional with empty-string defaults; existing callers are unaffected.
Additional Context
This unblocks migrating the active plugin/service repos from the separate-structure (v1.33.0) to the consolidated
go-pr-validation/go-releaseshape used bygo-boilerplate-dddmain, without regressing lint timeouts or artifact naming.