ghalint
GitHub Actions linter for security best practices.
Blog post
Policies
How to install
How to use
$ ghalint run
$ ghalint run
ERRO[0000] read a workflow file error="parse a workflow file as YAML: yaml: line 10: could not find expected ':'" program=ghalint version= workflow_file_path=.github/workflows/release.yaml
ERRO[0000] github.token should not be set to workflow's env env_name=GITHUB_TOKEN policy_name=workflow_secrets program=ghalint version= workflow_file_path=.github/workflows/test.yaml
ERRO[0000] secret should not be set to workflow's env env_name=DATADOG_API_KEY policy_name=workflow_secrets program=ghalint version= workflow_file_path=.github/workflows/test.yaml
Configuration file
Configuration file path: ^\.?ghalint\.ya?ml$
You can exclude the policy job_secrets and action_ref_should_be_full_length_commit_sha.
e.g.
excludes:
- policy_name: job_secrets
workflow_file_path: .github/workflows/actionlint.yaml
job_name: actionlint
- policy_name: action_ref_should_be_full_length_commit_sha
action_name: slsa-framework/slsa-github-generator
- policy_name: Only
job_secrets and action_ref_should_be_full_length_commit_sha is supported
Environment variables
GHALINT_LOG_COLOR: Configure log color. One of auto (default), always, and never.
💡 If you want to enable log color in GitHub Actions, please try GHALINT_LOG_COLOR=always
env:
GHALINT_LOG_COLOR: always
AS IS
TO BE
How does it works?
ghalint reads GitHub Actions Workflows ^\.github/workflows/.*\.ya?ml$ and validates them.
If there are violatation ghalint outputs error logs and fails.
If there is no violation ghalint succeeds.
Why not actionlint?
We develop ghalint to support our policies that actionlint doesn't cover.
We don't aim to replace actionlint to ghalint. We use both actionlint and ghalint.
LICENSE
MIT