31 Commits

Author SHA1 Message Date
José Lorenzo Rodríguez f988afea3d Merge pull request #55 from harmw/set-output
feat: expose results of hadolint to env var
2022-03-31 15:57:42 +02:00
Harm Weites 55991004e8 chore: spotted a little typo in readme 2022-03-31 15:32:03 +02:00
Harm Weites d73282b64c chore: update readme 2022-03-31 14:56:53 +02:00
Harm Weites 2faf5c6ef4 chore: remove createComment(), depends on githubToken scopes 2022-03-31 14:17:52 +02:00
Harm Weites 724e05f46b chore: typo in step id 2022-03-31 12:57:54 +02:00
Harm Weites a78be8d386 chore: use env var 2022-03-31 12:52:56 +02:00
Harm Weites 652bc66203 chore: also push results to env var 2022-03-31 12:49:42 +02:00
Harm Weites 1dd44fc493 chore: fix issue with multiline strings in output
Looking at [1] this should do some magic, so let's see.

[1] https://github.community/t/set-output-truncates-multiline-strings/16852
2022-03-31 12:45:58 +02:00
Harm Weites 5fc1b0e2fb chore: escape backticks in results var 2022-03-31 11:14:55 +02:00
Harm Weites a8bbf351c0 chore: update PR with text as test of results 2022-03-31 10:31:29 +02:00
Harm Weites e3462c378d chore: quotes to not parse it by mistake 2022-03-31 10:08:14 +02:00
Harm Weites 0c7fcaa67b chore: typo 2022-03-31 10:03:56 +02:00
Harm Weites 8ea032569b chore: empty commit to trigger ci 2022-03-31 10:01:01 +02:00
Harm Weites 262f403978 chore: add simple integration test 2022-03-31 09:57:07 +02:00
Harm Weites 1878581f63 chore: fix typos 2022-03-31 09:56:25 +02:00
Harm Weites bc289f2eaa feat: use 'set-output name=results'
This will introduce a parameter with name results that holds the
hadolint output. Other steps in a workflow can make use of this.

Also fix an error with the piping to tee that was broken.
2022-03-31 09:51:31 +02:00
José Lorenzo Rodríguez 83b3de1e17 fix example 2022-03-25 10:31:04 +01:00
José Lorenzo Rodríguez 289302ad8f Merge pull request #52 from mikenye/master
Update README.md
2022-03-25 10:28:55 +01:00
Mike Nye 89e60e4868 more info for inputs 2022-03-25 13:09:48 +08:00
Mike Nye 8a428b4815 prettify readme 2022-03-25 13:07:15 +08:00
José Lorenzo Rodríguez 0a6d062e78 disable broken test 2022-03-24 15:36:08 +01:00
José Lorenzo Rodríguez 0b08ca228d fix path 2022-03-24 15:32:24 +01:00
José Lorenzo Rodríguez 9a555bc2d4 run all tests properly 2022-03-24 15:29:17 +01:00
José Lorenzo Rodríguez e8cde77aa0 avoid failing on missing trusted registries 2022-03-24 15:28:03 +01:00
José Lorenzo Rodríguez bc86787e19 bump Hadolint version 2022-03-24 15:18:44 +01:00
José Lorenzo Rodríguez d2b4ab26ff don't fail in CI tests 2022-03-24 15:02:38 +01:00
José Lorenzo Rodríguez 2bcb99c6e2 Merge pull request #50 from paulbarton90/check_exit_status
Apply exit code to hadolint.sh
2022-03-24 14:57:38 +01:00
Paul Barton 63666e594d Apply exit code to hadolint.sh 2022-03-24 13:32:02 +00:00
José Lorenzo Rodríguez 96339c1113 Merge pull request #49 from offa/doc_inputs_typo
Fix typo in input docs
2022-03-22 13:59:30 +01:00
offa 37f399667b Fix markdown 2022-03-22 11:44:03 +01:00
offa aa70df94a2 Fix typo in inputs 2022-03-22 11:40:08 +01:00
5 changed files with 81 additions and 49 deletions
+12 -7
View File
@@ -71,18 +71,23 @@ 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 - output to file - name: Run integration test 6 - verify results output parameter
# This step will never fail, but will print out rule violations. # This step will never fail, but will print out the results from step5
uses: ./ run: echo "${{ steps.hadolint5.outputs.results }}"
with:
dockerfile: testdata/warning.Dockerfile #- name: Run integration test 6 - output to file
format: sarif # # This step will never fail, but will print out rule violations.
output-file: /report.sarif # uses: ./
# with:
# dockerfile: testdata/warning.Dockerfile
# format: sarif
# output-file: report.sarif
release: release:
if: github.event_name == 'push' && github.ref == 'refs/heads/master' if: github.event_name == 'push' && github.ref == 'refs/heads/master'
+1 -1
View File
@@ -1,4 +1,4 @@
FROM hadolint/hadolint:v2.9.2-debian FROM hadolint/hadolint:v2.9.3-debian
COPY LICENSE README.md problem-matcher.json / COPY LICENSE README.md problem-matcher.json /
COPY hadolint.sh /usr/local/bin/hadolint.sh COPY hadolint.sh /usr/local/bin/hadolint.sh
+3 -3
View File
@@ -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
@@ -12,8 +12,8 @@ build: ## Builds the docker image
test: build ## Runs a test in the image test: build ## Runs a test in the image
@docker run -i --rm \ @docker run -i --rm \
-v /var/run/docker.sock:/var/run/docker.sock \ -v /var/run/docker.sock:/var/run/docker.sock \
-v ${PWD}:/test zemanlx/container-structure-test:v1.8.0-alpine \ -v ${PWD}:/test zemanlx/container-structure-test:v1.8.0-alpine \
test \ test \
--image $(IMAGE_NAME) \ --image $(IMAGE_NAME) \
--config test/structure-tests.yaml --config test/structure-tests.yaml
+46 -30
View File
@@ -6,7 +6,6 @@
[![License](https://img.shields.io/badge/License-MIT-yellow.svg?style=for-the-badge)](LICENSE) [![License](https://img.shields.io/badge/License-MIT-yellow.svg?style=for-the-badge)](LICENSE)
[![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg?style=for-the-badge)](http://commitizen.github.io/cz-cli/) [![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg?style=for-the-badge)](http://commitizen.github.io/cz-cli/)
[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg?style=for-the-badge)](https://github.com/semantic-release/semantic-release?style=for-the-badge) [![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg?style=for-the-badge)](https://github.com/semantic-release/semantic-release?style=for-the-badge)
[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/hadolint/hadolint-action/CI?style=for-the-badge)](https://github.com/hadolint/hadolint-action/action) [![GitHub Workflow Status](https://img.shields.io/github/workflow/status/hadolint/hadolint-action/CI?style=for-the-badge)](https://github.com/hadolint/hadolint-action/action)
## Usage ## Usage
@@ -16,41 +15,57 @@ Add the following step to your workflow configuration:
```yml ```yml
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- uses: hadolint/hadolint-action@v1.6.0 - uses: hadolint/hadolint-action@v2.0.0
with: with:
dockerfile: Dockerfile dockerfile: Dockerfile
``` ```
## Inputs ## Inputs
| Name | Description | Default | | Name | Description | Default |
|------------------- |------------------------------------------ |----------------- | |----------------------|-----------------------------------------------------------------------------------------------------------------------------------------|--------------------|
| dockerfile | The path to the Dockerfile to be tested | ./Dockerfile | | `dockerfile` | The path to the Dockerfile to be tested | `./Dockerfile` |
| recursive | Search for specified dockerfile | false | | `recursive` | Search for specified dockerfile </br> recursively, from the project root | `false` |
| | recursively, from the project root | | | `config` | Custom path to a Hadolint config file | `./.hadolint.yaml` |
| config | Custom path to a Hadolint config file | ./.hadolint.yaml | | `output-file` | A sub-path where to save the </br> output as a file to | |
| output-file | A sub-path where to save the | | | `no-color` | Don't create colored output (`true`/`false`) | |
| | output as a file to | | | `no-fail` | Never fail the action (`true`/`false`) | |
| no-color | Don't create colored output | | | `verbose` | Output more information (`true`/`false`) | |
| no-fail | Never fail the action | | | `format` | The output format. One of [`tty` \| `json` \| </br> `checkstyle` \| `codeclimate` \| </br> `gitlab_codeclimate` \| `codacy` \| `sarif`] | `tty` |
| verbose | Output more information | | | `failure-threshold` | Rule severity threshold for pipeline </br> failure. One of [`error` \| `warning` \| </br> `info` \| `style` \| `ignore`] | `info` |
| format | The output format. One of [tty \| json \| | tty | | `override-error` | Comma separated list of rules to treat with `error` severity | |
| | checkstyle \| codeclimate \| | | | `override-warning` | Comma separated list of rules to treat with `warning` severity | |
| | gitlab_codeclimate \| codacy \| sarif] | | | `override-info` | Comma separated list of rules to treat with `info` severity | |
| failure-threshold | Rule severity threshold for pipeline | info | | `override-style` | Comma separated list of rules to treat with `style` severity | |
| | failure. One of [error \| warning \| | | | `ignore` | Comma separated list of Hadolint rules to ignore. | <none> |
| | info \| style \| ignore] | | | `trusted-registries` | Comma separated list of urls of trusted registries | |
| override-error | List of rules to treat with 'error' | |
| | severity | | ## Output
| override-warning | List of rules to treat with 'warning' | |
| | severity | | The Action will store results in an environment variable that can be used in other steps in a workflow.
| override-info | List of rules to treat with 'info' | |
| | severity | | Example to create a comment in a PR:
| override-style | List of rules to treat with 'style' | |
| | severity | | ```
| ignore | Space separated list of Hadolint rules to | <none> | - name: Update Pull Request
| | ignore. | | uses: actions/github-script@v6
| trusted-resgitries | List of urls of trusted registries | | 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
@@ -65,6 +80,7 @@ Contributions are what make the open source community such an amazing place to b
3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`) 3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the Branch (`git push origin feature/AmazingFeature`) 4. Push to the Branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request 5. Open a Pull Request
## 💛 Support the project ## 💛 Support the project
If this project was useful to you in some form, We would be glad to have your support. It will help keeping the project alive. If this project was useful to you in some form, We would be glad to have your support. It will help keeping the project alive.
+19 -8
View File
@@ -19,12 +19,8 @@ if [ -n "$HADOLINT_CONFIG" ]; then
HADOLINT_CONFIG="-c ${HADOLINT_CONFIG}" HADOLINT_CONFIG="-c ${HADOLINT_CONFIG}"
fi fi
OUTPUT= if [ -z "$HADOLINT_TRUSTED_REGISTRIES" ]; then
if [ -n "$HADOLINT_OUTPUT" ]; then unset HADOLINT_TRUSTED_REGISTRIES;
if [ -f "$HADOLINT_OUTPUT" ]; then
HADOLINT_OUTPUT="$TMP_FOLDER/$HADOLINT_OUTPUT"
fi
OUTPUT=" | tee $HADOLINT_OUTPUT"
fi fi
if [ "$HADOLINT_RECURSIVE" = "true" ]; then if [ "$HADOLINT_RECURSIVE" = "true" ]; then
@@ -33,10 +29,25 @@ if [ "$HADOLINT_RECURSIVE" = "true" ]; then
filename="${!#}" filename="${!#}"
flags="${@:1:$#-1}" flags="${@:1:$#-1}"
hadolint $HADOLINT_CONFIG $flags **/$filename $OUTPUT RESULTS=$(hadolint $HADOLINT_CONFIG $flags **/$filename)
else else
# shellcheck disable=SC2086 # shellcheck disable=SC2086
hadolint $HADOLINT_CONFIG "$@" $OUTPUT RESULTS=$(hadolint $HADOLINT_CONFIG "$@")
fi
FAILED=$?
if [ -n "$HADOLINT_OUTPUT" ]; then
if [ -f "$HADOLINT_OUTPUT" ]; then
HADOLINT_OUTPUT="$TMP_FOLDER/$HADOLINT_OUTPUT"
fi
echo "$RESULTS" > $HADOLINT_OUTPUT
fi 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"
exit $FAILED