mirror of
https://github.com/hadolint/hadolint-action.git
synced 2024-08-16 10:09:53 +02:00
Merge pull request #55 from harmw/set-output
feat: expose results of hadolint to env var
This commit is contained in:
commit
f988afea3d
4 changed files with 50 additions and 14 deletions
5
.github/workflows/ci.yml
vendored
5
.github/workflows/ci.yml
vendored
|
@ -71,11 +71,16 @@ jobs:
|
||||||
|
|
||||||
- name: Run integration test 5 - output format
|
- name: Run integration test 5 - output format
|
||||||
# This step will never fail, but will print out rule violations.
|
# This step will never fail, but will print out rule violations.
|
||||||
|
id: hadolint5
|
||||||
uses: ./
|
uses: ./
|
||||||
with:
|
with:
|
||||||
dockerfile: testdata/warning.Dockerfile
|
dockerfile: testdata/warning.Dockerfile
|
||||||
config: testdata/hadolint.yaml
|
config: testdata/hadolint.yaml
|
||||||
|
|
||||||
|
- name: Run integration test 6 - verify results output parameter
|
||||||
|
# This step will never fail, but will print out the results from step5
|
||||||
|
run: echo "${{ steps.hadolint5.outputs.results }}"
|
||||||
|
|
||||||
#- name: Run integration test 6 - output to file
|
#- name: Run integration test 6 - output to file
|
||||||
# # This step will never fail, but will print out rule violations.
|
# # This step will never fail, but will print out rule violations.
|
||||||
# uses: ./
|
# uses: ./
|
||||||
|
|
2
Makefile
2
Makefile
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
IMAGE_NAME:=hadolint-action
|
IMAGE_NAME:=hadolint-action
|
||||||
|
|
||||||
lint-dockerfile: ## Runs hadoint against application dockerfile
|
lint-dockerfile: ## Runs hadolint against application dockerfile
|
||||||
@docker run --rm -v "$(PWD):/data" -w "/data" hadolint/hadolint hadolint Dockerfile
|
@docker run --rm -v "$(PWD):/data" -w "/data" hadolint/hadolint hadolint Dockerfile
|
||||||
|
|
||||||
lint-yaml: ## Lints yaml configurations
|
lint-yaml: ## Lints yaml configurations
|
||||||
|
|
27
README.md
27
README.md
|
@ -40,6 +40,33 @@ steps:
|
||||||
| `ignore` | Comma separated list of Hadolint rules to ignore. | <none> |
|
| `ignore` | Comma separated list of Hadolint rules to ignore. | <none> |
|
||||||
| `trusted-registries` | Comma separated list of urls of trusted registries | |
|
| `trusted-registries` | Comma separated list of urls of trusted registries | |
|
||||||
|
|
||||||
|
## Output
|
||||||
|
|
||||||
|
The Action will store results in an environment variable that can be used in other steps in a workflow.
|
||||||
|
|
||||||
|
Example to create a comment in a PR:
|
||||||
|
|
||||||
|
```
|
||||||
|
- name: Update Pull Request
|
||||||
|
uses: actions/github-script@v6
|
||||||
|
if: github.event_name == 'pull_request'
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
const output = `
|
||||||
|
#### Hadolint: \`${{ steps.hadolint.outcome }}\`
|
||||||
|
\`\`\`
|
||||||
|
${process.env.HADOLINT_RESULTS}
|
||||||
|
\`\`\`
|
||||||
|
`;
|
||||||
|
|
||||||
|
github.rest.issues.createComment({
|
||||||
|
issue_number: context.issue.number,
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
body: output
|
||||||
|
})
|
||||||
|
```
|
||||||
|
|
||||||
## Hadolint Configuration
|
## Hadolint Configuration
|
||||||
|
|
||||||
To configure Hadolint (for example ignore rules), you can create an `.hadolint.yaml` file in the root of your repository. Please check the Hadolint [documentation](https://github.com/hadolint/hadolint#configure).
|
To configure Hadolint (for example ignore rules), you can create an `.hadolint.yaml` file in the root of your repository. Please check the Hadolint [documentation](https://github.com/hadolint/hadolint#configure).
|
||||||
|
|
26
hadolint.sh
26
hadolint.sh
|
@ -23,26 +23,30 @@ if [ -z "$HADOLINT_TRUSTED_REGISTRIES" ]; then
|
||||||
unset HADOLINT_TRUSTED_REGISTRIES;
|
unset HADOLINT_TRUSTED_REGISTRIES;
|
||||||
fi
|
fi
|
||||||
|
|
||||||
OUTPUT=
|
|
||||||
if [ -n "$HADOLINT_OUTPUT" ]; then
|
|
||||||
if [ -f "$HADOLINT_OUTPUT" ]; then
|
|
||||||
HADOLINT_OUTPUT="$TMP_FOLDER/$HADOLINT_OUTPUT"
|
|
||||||
fi
|
|
||||||
OUTPUT=" | tee $HADOLINT_OUTPUT"
|
|
||||||
fi
|
|
||||||
|
|
||||||
FAILED=0
|
|
||||||
if [ "$HADOLINT_RECURSIVE" = "true" ]; then
|
if [ "$HADOLINT_RECURSIVE" = "true" ]; then
|
||||||
shopt -s globstar
|
shopt -s globstar
|
||||||
|
|
||||||
filename="${!#}"
|
filename="${!#}"
|
||||||
flags="${@:1:$#-1}"
|
flags="${@:1:$#-1}"
|
||||||
|
|
||||||
hadolint $HADOLINT_CONFIG $flags **/$filename $OUTPUT || FAILED=1
|
RESULTS=$(hadolint $HADOLINT_CONFIG $flags **/$filename)
|
||||||
else
|
else
|
||||||
# shellcheck disable=SC2086
|
# shellcheck disable=SC2086
|
||||||
hadolint $HADOLINT_CONFIG "$@" $OUTPUT || FAILED=1
|
RESULTS=$(hadolint $HADOLINT_CONFIG "$@")
|
||||||
fi
|
fi
|
||||||
|
FAILED=$?
|
||||||
|
|
||||||
|
if [ -n "$HADOLINT_OUTPUT" ]; then
|
||||||
|
if [ -f "$HADOLINT_OUTPUT" ]; then
|
||||||
|
HADOLINT_OUTPUT="$TMP_FOLDER/$HADOLINT_OUTPUT"
|
||||||
|
fi
|
||||||
|
echo "$RESULTS" > $HADOLINT_OUTPUT
|
||||||
|
fi
|
||||||
|
|
||||||
|
RESULTS="${RESULTS//$'\\n'/''}"
|
||||||
|
echo "::set-output name=results::$RESULTS"
|
||||||
|
|
||||||
|
{ echo "HADOLINT_RESULTS<<EOF"; echo "$RESULTS"; echo "EOF"; } >> $GITHUB_ENV
|
||||||
|
|
||||||
[ -z "$HADOLINT_OUTPUT" ] || echo "Hadolint output saved to: $HADOLINT_OUTPUT"
|
[ -z "$HADOLINT_OUTPUT" ] || echo "Hadolint output saved to: $HADOLINT_OUTPUT"
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue