Compare commits

...

71 commits

Author SHA1 Message Date
Moritz Röhrich
2332a7b74a
feat: trigger release workflow
Release action only triggers if there is a commit with a keyword in the
title since the last release tag was made...

Signed-off-by: Moritz Röhrich <moritz@ildefons.de>
2025-09-22 13:43:49 +02:00
Moritz Röhrich
2bfd2b95f8
Don't trigger release workflow on Tag
Tags are automatically generated and applied by the release action

Signed-off-by: Moritz Röhrich <moritz@ildefons.de>
2025-09-22 13:41:56 +02:00
Moritz Röhrich
0931ae0972
Release v3.3.0
Signed-off-by: Moritz Röhrich <moritz@ildefons.de>
2025-09-22 13:33:25 +02:00
Moritz Röhrich
3fc49fb50d
feat: new minor release
Signed-off-by: Moritz Röhrich <moritz@ildefons.de>
2025-09-03 15:29:46 +02:00
Moritz Röhrich
45eb072a0b
Trigger release workflow on tag
Signed-off-by: Moritz Röhrich <moritz@ildefons.de>
2025-09-03 15:22:29 +02:00
Moritz Röhrich
97f3e4f6be
Merge pull request #94 from felipecrs/patch-1
Update hadolint to v2.13.1
2025-09-03 15:14:35 +02:00
Felipe Santos
3e9a095cc7
Merge branch 'master' into patch-1 2025-09-03 08:42:26 -03:00
Moritz Röhrich
3285327e7a
Merge pull request #96 from m-ildefons/update-ci-yml
Update CI yml
2025-09-03 11:48:58 +02:00
Moritz Röhrich
8bde06f9ce
Update CI yml
Update versions of runner images and action steps

Signed-off-by: Moritz Röhrich <moritz@ildefons.de>
2025-09-03 11:45:35 +02:00
Felipe Santos
24598f413e
Update base image for Hadolint 2025-09-02 14:10:55 -03:00
Felipe Santos
cc71e1bfd1
Update Dockerfile to use stable hadolint version 2025-09-02 14:10:17 -03:00
Felipe Santos
2f0331e821
Update Dockerfile 2025-07-20 00:31:17 -03:00
Felipe Santos
715c307046
Update hadolint to v2.13.1-beta2 2025-07-20 00:26:51 -03:00
José Lorenzo Rodríguez
d292784f8f
Merge pull request #74 from ViacheslavKudinov/master
Fix of ShellCheck. Doc update. Int testing updates. Added ShellCheck job.
2023-02-09 10:27:24 +01:00
José Lorenzo Rodríguez
5d0317e9d0
Merge pull request #75 from DracoBlue/patch-1
Example uses 3.1.0, too
2023-02-09 10:26:34 +01:00
DracoBlue
7857e0b9ce
Example uses 3.1.0, too 2023-02-08 07:12:24 +01:00
Viacheslav Kudinov
218bc411d7
Fix of ShellCheck and doc update. Int testing updates. Added ShellCheck action. (#3)
Co-authored-by: OCP4 migration script <deleng@atg.se>
2023-01-20 09:55:56 +01:00
Viacheslav Kudinov
726b0bb298
Fix of ShellCheck and doc update. Int testing updates. Added ShellCheck action. (#2) 2023-01-19 20:16:51 +01:00
Viacheslav Kudinov
a17195f03e
Fix of ShellCheck and doc update. Int testing updates. Added ShellCheck action. (#1) 2023-01-19 20:09:05 +01:00
José Lorenzo Rodríguez
88c79a349b
Merge pull request #72 from hadolint/revert-68-master 2023-01-18 19:22:12 +01:00
José Lorenzo Rodríguez
a4d0f06c93
Revert "Some shellcheck fixes and new input to print Hadolint results to console" 2023-01-18 19:22:00 +01:00
José Lorenzo Rodríguez
c8298ca3ec
Merge pull request #69 from CandiedCode/update-readme 2023-01-18 16:23:32 +01:00
José Lorenzo Rodríguez
8b07a99429
Merge pull request #70 from DracoBlue/patch-1 2023-01-18 16:19:20 +01:00
José Lorenzo Rodríguez
87a23faa1f
Merge pull request #68 from vk-org/master 2023-01-18 16:17:53 +01:00
Viacheslav Kudinov
79c12b5608
Merge branch 'master' into master 2023-01-17 17:36:09 +01:00
José Lorenzo Rodríguez
54c9adbab1
fix release 2023-01-17 17:19:55 +01:00
José Lorenzo Rodríguez
0ef98d9a5c
Merge pull request #71 from DracoBlue/patch-2
Make output-file by default to /dev/stdout
2023-01-17 17:09:37 +01:00
DracoBlue
1a139ce6cc
Make output-file by default to /dev/stdout
To fix https://github.com/hadolint/hadolint-action/issues/60 in hadolint-action>v2.0.0
2023-01-17 15:38:26 +01:00
DracoBlue
e88bddc55d
Fix the url to the build badge
As suggested in https://github.com/badges/shields/issues/8671
2023-01-17 15:05:26 +01:00
Jennifer Cwagenberg
676012c475
update example usage in readme 2023-01-14 14:59:41 -06:00
Viacheslav Kudinov
77e79bb879
Some shellcheck fixes and new input (#1) 2022-11-15 20:14:37 +01:00
José Lorenzo Rodríguez
4b5806eb9c
Merge pull request #66 from javoweb/hadolint-2.11
Upgrade hadolint to 2.12
2022-11-11 12:13:19 +01:00
José Lorenzo Rodríguez
e977686583
Merge pull request #56 from mgray88/patch-1
Update usage example
2022-11-11 12:10:59 +01:00
José Lorenzo Rodríguez
67d715bb13
Merge pull request #65 from mrdoodles/fix-github-deprecations
fix: update deprecated commands
2022-11-11 12:08:51 +01:00
Gonzalo Tixilima
48c4120377 upgrade hadolint to 2.12 2022-11-11 05:52:50 -05:00
Gonzalo Tixilima
e81a8de9db upgrade hadolint to 2.11 2022-11-11 01:18:35 -05:00
mrdoodles
68a2276a3c
fix-github-deprecations 2022-11-08 21:33:58 +00:00
José Lorenzo Rodríguez
eeab5ede16
Merge pull request #57 from offa/hadolint_2.10
Update hadolint to 2.10
2022-05-13 12:59:47 +02:00
offa
169ddcf265 Update hadolint to 2.10
Use GHCR instead of Dockerhub and a fully qualified FROM
2022-05-13 12:48:12 +02:00
Mike Gray
d51839a6b5
Update usage example
"Example to create a comment in a PR" doesn't work with v2.0.0
2022-04-23 10:19:23 -04:00
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
6 changed files with 153 additions and 69 deletions

View file

@ -3,27 +3,49 @@ on:
push: push:
branches: branches:
- master - master
pull_request: pull_request:
env: env:
TEST_IMAGE_NAME: hadolint-action:${{github.sha}} TEST_IMAGE_NAME: hadolint-action:${{github.sha}}
permissions:
contents: write
issues: write # Used by Release step to update "The automated release is failing" issue
pull-requests: write # Used by ShellCheck Action to add comments on PR
jobs: jobs:
lint: lint:
name: Lint name: Lint
runs-on: ubuntu-20.04 runs-on: ubuntu-24.04
container: pipelinecomponents/hadolint:0.10.1 container: pipelinecomponents/hadolint:0.27.2
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v5
- name: Run hadolint - name: Run hadolint
run: hadolint Dockerfile run: hadolint Dockerfile
shellcheck:
name: ShellCheck
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v5
- name: Run ShellCheck
uses: reviewdog/action-shellcheck@v1.31.0
with:
reporter: github-pr-review
fail_on_error: true
build-test: build-test:
name: Build and Test name: Build and Test
runs-on: ubuntu-20.04 runs-on: ubuntu-24.04
needs: ["lint"] needs:
- lint
- shellcheck
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v5
- name: Build Docker image - name: Build Docker image
run: docker build -t $TEST_IMAGE_NAME . run: docker build -t $TEST_IMAGE_NAME .
@ -34,10 +56,11 @@ jobs:
integration-tests: integration-tests:
name: Integration Tests name: Integration Tests
runs-on: ubuntu-20.04 runs-on: ubuntu-24.04
needs: build-test needs:
- build-test
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v5
- name: Run integration test 1 - name: Run integration test 1
uses: ./ uses: ./
@ -69,29 +92,48 @@ jobs:
failure-threshold: error failure-threshold: error
format: json format: json
- name: Run integration test 5 - output format - name: Run integration test 5 - config file
# This step will never fail, but will print out rule violations. # This step will never fail, but will print out rule violations
# because in config is set the error failure threshold.
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
env:
results: ${{ steps.hadolint5.outputs.results }}
run: echo "$results"
- name: Run integration test 7 - set recursive
# This step will never fail, but will print out rule violations
# for all the Dockerfiles in repository.
uses: ./ uses: ./
with: with:
dockerfile: testdata/warning.Dockerfile dockerfile: "*Dockerfile"
format: sarif failure-threshold: error
output-file: /report.sarif recursive: true
#- name: Run integration test 8 - output to file
# # This step will never fail, but will print out rule violations.
# 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'
name: Release name: Release
runs-on: ubuntu-20.04 runs-on: ubuntu-24.04
needs: integration-tests needs:
- integration-tests
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v5
- uses: cycjimmy/semantic-release-action@v2
- uses: cycjimmy/semantic-release-action@v5
with: with:
extra_plugins: | extra_plugins: |
@semantic-release/git @semantic-release/git

View file

@ -1,4 +1,4 @@
FROM hadolint/hadolint:v2.9.2-debian FROM ghcr.io/hadolint/hadolint:v2.14.0-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

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

View file

@ -6,8 +6,8 @@
[![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/actions/workflow/status/hadolint/hadolint-action/ci.yml?branch=master&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
@ -15,8 +15,8 @@ Add the following step to your workflow configuration:
```yml ```yml
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v3
- uses: hadolint/hadolint-action@v1.6.0 - uses: hadolint/hadolint-action@v3.1.0
with: with:
dockerfile: Dockerfile dockerfile: Dockerfile
``` ```
@ -24,33 +24,49 @@ steps:
## 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 | `/dev/stdout` |
| output-file | A sub-path where to save the | | | `no-color` | Don't create colored output (`true`/`false`) | `false` |
| | output as a file to | | | `no-fail` | Never fail the action (`true`/`false`) | `false` |
| no-color | Don't create colored output | | | `verbose` | Output more information (`true`/`false`) | `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 +81,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.

View file

@ -18,7 +18,7 @@ inputs:
output-file: output-file:
required: false required: false
description: 'The path where to save the linting results to' description: 'The path where to save the linting results to'
default: default: "/dev/stdout"
# standart hadolint options: # standart hadolint options:
no-color: no-color:

View file

@ -1,13 +1,16 @@
#!/bin/bash #!/bin/bash
# The problem-matcher definition must be present in the repository # The problem-matcher definition must be present in the repository
# checkout (outside the Docker container running hadolint). We copy # checkout (outside the Docker container running hadolint). We copy
# problem-matcher.json to the home folder. # problem-matcher.json to the home folder.
cp /problem-matcher.json "$HOME/"
PROBLEM_MATCHER_FILE="/problem-matcher.json"
if [ -f "$PROBLEM_MATCHER_FILE" ]; then
cp "$PROBLEM_MATCHER_FILE" "$HOME/"
fi
# After the run has finished we remove the problem-matcher.json from # After the run has finished we remove the problem-matcher.json from
# the repository so we don't leave the checkout dirty. We also remove # the repository so we don't leave the checkout dirty. We also remove
# the matcher so it won't take effect in later steps. # the matcher so it won't take effect in later steps.
# shellcheck disable=SC2317
cleanup() { cleanup() {
echo "::remove-matcher owner=brpaz/hadolint-action::" echo "::remove-matcher owner=brpaz/hadolint-action::"
} }
@ -19,24 +22,46 @@ 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
COMMAND="hadolint $HADOLINT_CONFIG"
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 RESULTS=$(eval "$COMMAND $flags" -- **/"$filename")
else else
# shellcheck disable=SC2086 flags=$*
hadolint $HADOLINT_CONFIG "$@" $OUTPUT RESULTS=$(eval "$COMMAND" "$flags")
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 "results<<EOF"
echo "$RESULTS"
echo "EOF"
} >>"$GITHUB_OUTPUT"
{
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