hadolint / hadolint-action

GitHub action for Hadolint, A Dockerfile linting tool

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Error: No hadolint failure but Actions job fails

gakugaku opened this issue · comments

commented

No hadolint failure but Actions job fails when executing below actions.

Execution log

error

Actions yaml (part of hadolint job)

  lint-dockerfile:
    runs-on: ubuntu-20.04
    timeout-minutes: 5

    steps:
      - uses: actions/checkout@v3

      - name: hadolint (dockerfile linter)
        uses: hadolint/hadolint-action@f988afea3da57ee48710a9795b6bb677cc901183
        with:
          recursive: true

Workaround: Actions success when setting failure-threshold: "warning" option.
But even if hadolint fails with info severity, Actions job will succeed😢.

error2

  lint-dockerfile:
    runs-on: ubuntu-20.04
    timeout-minutes: 5

    steps:
      - uses: actions/checkout@v3

      - name: hadolint (dockerfile linter)
        uses: hadolint/hadolint-action@f988afea3da57ee48710a9795b6bb677cc901183
        with:
          recursive: true
          failure-threshold: "warning"

I have this problem too

Same problem an currently no solution 😢

The problem seems to be, that some errors/warnings/infos are not displayed in the log.
I have a Dockerfile which doesn't contain any ignore statements.
In my first run, my .hadolint.yaml only contains the exclusion for DL3018.
If I run Hadolint from CLI, I get the message:

Dockerfile:13 DL3059 info: Multiple consecutive `RUN` instructions. Consider consolidation.

But in the CI, no message is displayed but the step fails.

If I add the exclusion for DL3059, the CI step succeeds.

I hate to leave me too messages - but me too :)

Also I believe that if you write the report to file it also is empty

Same here.
Had to switch back to v2.0.0, this works fine.

I've been experiencing this same issue for a couple of months. Is this project still maintained? Last activity seems to be in May.

I found that if you re-run the job with debug logging enabled you will see some output.

For me it worked to set failure-threshold to error or warning

According to the documentation, the default is info. I don´t know how this works internally in Hadolint, but my theory, is that info is making the pipeline fail with any output, even if it has no errors.

Ex:

 - name: Lint Dockerfile
    uses: hadolint/hadolint-action@v3.0.0
    with:
      dockerfile: Dockerfile
      failure-threshold: error

error should probably be the default value, as I think this is what most people would like to fail the pipeline and then they could override to warning for a more strict workflow.

Not sure but this seems to be related to #55

This issue has been fixed by the 3.0.0 release for us (we also pinned at 2.0.0 to avoid having this problem).

You need to set output-file to /dev/stdout.

I added a PR for this at #71

Setting v3.0.0 up tonight, and it fails like many people are mentioning above, unless I explicitly include failure-threshold: error:

    steps:
      - name: Checkout code
        uses: actions/checkout@v3
      - name: Run Hadolint on Dockerfile
        uses: hadolint/hadolint-action@v3.0.0
        with:
          dockerfile: Dockerfile
          # it will fail with no error if I omit this...
          failure-threshold: error

@humphd please use 3.1.0 and the error messages should be visible

I created a PR at #75 to ensure people are not copying v3.0.0 from the README.md

@DracoBlue that's excellent, thank you for the info and fixing the README. Appreciated.