chore(ci): pin actions and add tools module for CI#102
Merged
Conversation
Update GitHub Actions workflows to use action SHAs foractions/checkout actions/setup-go, reproducible runner behavior. Replace direct golangci-lint action usage with explicit linter commands that run via the project's tools module. Change test reporting and lint invocations to use go tool -modfile=".github/tools/go.mod" so they use pinned tool dependencies. Add .github/tools/go.mod to pin CI tool dependencies (golangci-lint, go-junit-report, and many lint rules/plugins) and add dependabot config to keep the tools module up to date weekly. Rename the GolangCI-Lint job to Lint and split its steps into a config verification and an explicit run step. These changes improve CI stability, reproducibility, and dependency management for tooling.
5db6691 to
a927221
Compare
Contributor
There was a problem hiding this comment.
Pull Request Overview
This PR improves CI stability and reproducibility by pinning GitHub Actions to specific SHAs and consolidating tool dependencies into a dedicated module. The changes replace version-based action references with immutable SHA references and introduce a tools module to manage CI tool dependencies like golangci-lint and go-junit-report.
- Pin GitHub Actions (checkout, setup-go) to specific commit SHAs for reproducible builds
- Add
.github/tools/go.modmodule to manage CI tool dependencies with pinned versions - Replace direct tool installations with
go tool -modfilecommands for consistent tooling
Reviewed Changes
Copilot reviewed 4 out of 5 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
.github/workflows/release.yaml |
Pin actions/checkout and actions/setup-go to commit SHAs |
.github/workflows/checks.yaml |
Pin actions, replace golangci-lint action with explicit commands, use tools module |
.github/tools/go.mod |
New tools module defining CI dependencies for golangci-lint and go-junit-report |
.github/dependabot.yml |
Add dependabot config for tools module with weekly updates |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Update GitHub Actions workflows to use action SHAs foractions/checkout actions/setup-go, reproducible runner
behavior. Replace direct golangci-lint action usage with explicit linter
commands that run via the project's tools module. Change test reporting
and lint invocations to use go tool -modfile=".github/tools/go.mod" so
they use pinned tool dependencies.
Add .github/tools/go.mod to pin CI tool dependencies (golangci-lint,
go-junit-report, and many lint rules/plugins) and add dependabot config
to keep the tools module up to date weekly. Rename the GolangCI-Lint job
to Lint and split its steps into a config verification and an explicit
run step.
These changes improve CI stability, reproducibility, and dependency
management for tooling.