hadolint / hadolint-action

GitHub action for Hadolint, A Dockerfile linting tool
MIT License
192 stars 50 forks source link

withBinaryFile: does not exist (No such file or directory) #80

Open pantelis-karamolegkos opened 1 year ago

pantelis-karamolegkos commented 1 year ago

I have the following Dockerfile

FROM golang:1.19 AS builder

ARG WDIR=myapp
ARG VERSION

COPY . ${WDIR}

WORKDIR ${WDIR}

RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 \
    go build -a \
    --ldflags="-X main.buildVersion=${VERSION} -s -w" \
    -o /myapp

FROM gcr.io/myregistry/base/golang/alpine/1.19:stable

COPY --from=builder /myapp /bin/myapp

CMD ["/bin/myapp"]

This fails the lint with:

hadolint: ./myapp/Dockerfile: withBinaryFile: does not exist (No such file or directory)

The Dockerfile works as expected though

szepeviktor commented 1 year ago

Could it be the reason that there is no Dockerfile in the root of the project?

gnzsnz commented 9 months ago

Same issue here

my .pre-commit.yaml file

repos:
  - repo: https://github.com/hadolint/hadolint
    rev: v2.12.0
    hooks:
      - id: hadolint-docker

output

Lint Dockerfiles.........................................................Failed
- hook id: hadolint-docker
- exit code: 1

hadolint: Dockerfile.template: withBinaryFile: does not exist (No such file or directory)
hadolint: latest/Dockerfile.tws: withBinaryFile: does not exist (No such file or directory)

The files stated on the output are there, and the linter can find them. however it fails.

If I change my pre-commit config file to

repos:
  - repo: https://github.com/hadolint/hadolint
    rev: v2.12.0
    hooks:
      - id: hadolint

it works fine

nvtkaszpir commented 7 months ago

I've seen this when there is no Dockerfile in the repo in any directory or subdirectory. This usually happens when the repo is fresh (no Dockerfile yet) or if the Dockerfiles were deleted in the commit. The first one is quite obvious, but the second one means that github action is executed when the files were deleted and actually step should be skipped.

So this Github Action should be patched to support this, I do not have solution for it.

Yet if anyone is interested I can provide custom GitHub workflow that handles the case (skip action if no Dockerfiles are changed or are deleted). If someone is interested I can get it next week. With proper github action workflow in the script it would probably take a bit more time, but is also doable.