1
0
Fork 0
mirror of https://github.com/hadolint/hadolint-action.git synced 2024-08-16 10:09:53 +02:00

hadolint: version bump to 2.4.0

- bump Hadolint version to 2.4.0
- change to debian based image
- add common config options
- expand integration tests for new options

fixes: https://github.com/hadolint/hadolint-action/issues/5
fixes: https://github.com/hadolint/hadolint-action/issues/8
fixes: https://github.com/hadolint/hadolint-action/issues/17
fixes: https://github.com/hadolint/hadolint-action/issues/18
fixes: https://github.com/hadolint/hadolint-action/issues/31
This commit is contained in:
Moritz Röhrich 2021-05-08 13:08:16 +02:00
parent 136c22c8f8
commit 110e47c1b7
8 changed files with 97 additions and 9 deletions

View file

@ -39,11 +39,42 @@ jobs:
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- name: Run integration test - name: Run integration test 1
uses: ./ uses: ./
with: with:
dockerfile: testdata/Dockerfile dockerfile: testdata/Dockerfile
- name: Run integration test 2 - ignore a rule
# This step is supposed to print out an info level rule violation
# but completely ignore the two rules listed below
uses: ./
with:
dockerfile: testdata/warning.Dockerfile
ignore: DL3014 DL3008
- name: Run integration test 3 - set failure threshold
# This step will print out an info level rule violation, but not fail
# because of the high failure threshold.
uses: ./
with:
dockerfile: testdata/info.Dockerfile
failure-threshold: warning
- name: Run integration test 4 - output format
# This step will never fail, but will print out rule violations as json.
uses: ./
with:
dockerfile: testdata/warning.Dockerfile
failure-threshold: error
format: json
- name: Run integration test 4 - output format
# This step will never fail, but will print out rule violations.
uses: ./
with:
dockerfile: testdata/warning.Dockerfile
config: testdata/hadolint.yaml
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

View file

@ -1,4 +1,4 @@
FROM hadolint/hadolint:v2.1.0-alpine FROM hadolint/hadolint:v2.4.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

@ -15,16 +15,25 @@ Add the following step to your workflow configuration:
```yml ```yml
steps: steps:
- uses: hadolint/hadolint-action@v1.4.0 - uses: hadolint/hadolint-action@v1.4.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 |
| format | The output format. One of [tty | json | | tty |
| | checkstyle | codeclimate | | |
| | gitlab_codeclimate] | |
| ignore | Space separated list of Hadolint rules to | <none> |
| | ignore. | |
| config | Custom path to a Hadolint config file | ./.hadolint.yaml |
| failure-threshold | Rule severity threshold for pipeline | info |
| | failure. One of [error | warning | info | | |
| | style | ignore] | |
## Hadolint Configuration ## Hadolint Configuration

View file

@ -3,13 +3,42 @@ description: 'Action that runs Hadolint Dockerfile linting tool'
author: 'Bruno Paz' author: 'Bruno Paz'
inputs: inputs:
dockerfile: dockerfile:
required: false
description: 'The path to the Dockerfile to lint' description: 'The path to the Dockerfile to lint'
default: 'Dockerfile' default: 'Dockerfile'
format:
required: false
description: |
The output format, one of [tty (default) | json | checkstyle |
codeclimate | gitlab_codeclimate ]
default: 'tty'
failure-threshold:
required: false
description: |
Fail the pipeline only if rules with severity above this threshold are
violated. One of [error | warning | info (default) | style | ignore]
default: 'info'
ignore:
required: false
description: 'A space separated string of rules to ignore'
default:
config:
required: false
description: 'Path to a config file'
default:
runs: runs:
using: 'docker' using: 'docker'
image: 'Dockerfile' image: 'Dockerfile'
args: args:
- -f
- ${{ inputs.format }}
- -t
- ${{ inputs.failure-threshold }}
- ${{ inputs.dockerfile }} - ${{ inputs.dockerfile }}
env:
HADOLINT_CONFIG: ${{ inputs.config }}
HADOLINT_IGNORE: ${{ inputs.ignore }}
branding: branding:
icon: 'layers' icon: 'layers'
color: 'purple' color: 'purple'

View file

@ -19,4 +19,13 @@ trap cleanup EXIT
echo "::add-matcher::${TMP_FOLDER}/problem-matcher.json" echo "::add-matcher::${TMP_FOLDER}/problem-matcher.json"
hadolint "$@" if [ -n "$HADOLINT_CONFIG" ]; then
HADOLINT_CONFIG="-c ${HADOLINT_CONFIG}"
fi
for i in $HADOLINT_IGNORE; do
HADOLINT_IGNORE_CMDLINE="${HADOLINT_IGNORE_CMDLINE} --ignore=${i}"
done
# shellcheck disable=SC2086
hadolint $HADOLINT_IGNORE_CMDLINE $HADOLINT_CONFIG "$@"

1
testdata/hadolint.yaml vendored Normal file
View file

@ -0,0 +1 @@
failure-threshold: error

5
testdata/info.Dockerfile vendored Normal file
View file

@ -0,0 +1,5 @@
FROM debian:buster
# info level warning expected here:
RUN echo "Hello"
RUN echo "World"

4
testdata/warning.Dockerfile vendored Normal file
View file

@ -0,0 +1,4 @@
FROM debian:buster
# emits an info and a warning level violation.
RUN apt-get install foo