From 82c487db6f65ea807953e94dca1a57e31982addc Mon Sep 17 00:00:00 2001 From: Dominik Siebel Date: Wed, 15 Jan 2025 09:34:09 +0100 Subject: [PATCH 01/10] ci: automatically build image using github actions --- .dockerignore | 5 +++++ .github/workflows/build.yaml | 34 ++++++++++++++++++++++++++++++++++ shellcheckw | 3 +++ 3 files changed, 42 insertions(+) create mode 100644 .dockerignore create mode 100644 .github/workflows/build.yaml diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..738d924 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,5 @@ +.github/ +Dockerfile +justfile +LICENSE +README.md diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml new file mode 100644 index 0000000..8a22dac --- /dev/null +++ b/.github/workflows/build.yaml @@ -0,0 +1,34 @@ +--- +'on': + pull_request: + branches: + - 'master' + push: + branches: + - 'master' + schedule: + - cron: "0 1 * * 0" # Run every Sunday at 1:00 UTC +defaults: + run: + shell: 'bash' +env: + IMAGE_NAME: 'ghcr.io/dsiebel/shellcheck-docker:latest' +jobs: + build: + runs-on: 'ubuntu-latest' + steps: + - name: 'Get git commit timestamps' + id: 'metadata' + run: | + echo "commit_timestamp=$(git log -1 --pretty=%ct)" | tee -a "${GITHUB_OUTPUTS}" + + - name: 'Set up Docker Buildx' + uses: 'docker/setup-buildx-action@v3' + + - name: 'Build' + uses: 'docker/build-push-action@v6' + with: + push: ${{ github.event_name != 'pull_request' }} + tags: ${{ env.IMAGE_NAME}} + env: + SOURCE_DATE_EPOCH: '${{ steps.metadata.outputs.git_commit_timestamp }}' diff --git a/shellcheckw b/shellcheckw index d8d0b41..335747f 100755 --- a/shellcheckw +++ b/shellcheckw @@ -1,6 +1,9 @@ #!/usr/bin/env bash [[ -v VERBOSE ]] && set -x + +#shellcheck enable=check-set-e-suppressed set -eu +shopt -s inherit_errexit excludes=() includes=() From 00cef5e5b5a074cb9eaddad9f43f7bef7c5994f2 Mon Sep 17 00:00:00 2001 From: Dominik Siebel Date: Wed, 15 Jan 2025 09:38:58 +0100 Subject: [PATCH 02/10] upgrade base package on build --- Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Dockerfile b/Dockerfile index 99e9560..8ed7304 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,6 +3,7 @@ FROM debian:bookworm-slim WORKDIR /usr/src/shellcheck RUN apt-get update \ + && apt-get upgrade --yes \ && apt-get install --yes --no-install-recommends \ shellcheck \ file From 96c46c444879975e88a4a2b7ad1d1fc6a26afe0a Mon Sep 17 00:00:00 2001 From: Dominik Siebel Date: Wed, 15 Jan 2025 09:39:06 +0100 Subject: [PATCH 03/10] clean apt after install --- Dockerfile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 8ed7304..222a5c1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,7 +6,9 @@ RUN apt-get update \ && apt-get upgrade --yes \ && apt-get install --yes --no-install-recommends \ shellcheck \ - file + file \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* COPY shellcheckw /usr/local/bin/shellcheckw From 559867d7846b5fd8f4094f6787d752bd3b6b10d4 Mon Sep 17 00:00:00 2001 From: Dominik Siebel Date: Wed, 15 Jan 2025 09:41:24 +0100 Subject: [PATCH 04/10] simplify build --- .github/workflows/{build.yaml => docker-build.yaml} | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) rename .github/workflows/{build.yaml => docker-build.yaml} (68%) diff --git a/.github/workflows/build.yaml b/.github/workflows/docker-build.yaml similarity index 68% rename from .github/workflows/build.yaml rename to .github/workflows/docker-build.yaml index 8a22dac..e70dd87 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/docker-build.yaml @@ -1,4 +1,5 @@ --- +name: 'Docker Build' 'on': pull_request: branches: @@ -17,10 +18,6 @@ jobs: build: runs-on: 'ubuntu-latest' steps: - - name: 'Get git commit timestamps' - id: 'metadata' - run: | - echo "commit_timestamp=$(git log -1 --pretty=%ct)" | tee -a "${GITHUB_OUTPUTS}" - name: 'Set up Docker Buildx' uses: 'docker/setup-buildx-action@v3' @@ -30,5 +27,3 @@ jobs: with: push: ${{ github.event_name != 'pull_request' }} tags: ${{ env.IMAGE_NAME}} - env: - SOURCE_DATE_EPOCH: '${{ steps.metadata.outputs.git_commit_timestamp }}' From 44ba480a2a341b6b012b306a8891d5fbae66c071 Mon Sep 17 00:00:00 2001 From: Dominik Siebel Date: Wed, 15 Jan 2025 09:42:40 +0100 Subject: [PATCH 05/10] run tests on PR --- .github/workflows/docker-build.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/workflows/docker-build.yaml b/.github/workflows/docker-build.yaml index e70dd87..6a9ef6c 100644 --- a/.github/workflows/docker-build.yaml +++ b/.github/workflows/docker-build.yaml @@ -26,4 +26,12 @@ jobs: uses: 'docker/build-push-action@v6' with: push: ${{ github.event_name != 'pull_request' }} + load: ${{ github.event_name == 'pull_request' }} tags: ${{ env.IMAGE_NAME}} + + - name: 'Test' + run: | + docker run --rm ${{ env.IMAGE_NAME}} --version + docker run --rm ${{ env.IMAGE_NAME}} --help + docker run --rm ${{ env.IMAGE_NAME}} shellcheck --version + docker run --rm ${{ env.IMAGE_NAME}} shellcheck --help From 31db930a95dfa947cd80c585065de0be8706fdce Mon Sep 17 00:00:00 2001 From: Dominik Siebel Date: Wed, 15 Jan 2025 09:44:22 +0100 Subject: [PATCH 06/10] simplify build --- .github/workflows/{docker-build.yaml => docker.yaml} | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) rename .github/workflows/{docker-build.yaml => docker.yaml} (77%) diff --git a/.github/workflows/docker-build.yaml b/.github/workflows/docker.yaml similarity index 77% rename from .github/workflows/docker-build.yaml rename to .github/workflows/docker.yaml index 6a9ef6c..d2da71d 100644 --- a/.github/workflows/docker-build.yaml +++ b/.github/workflows/docker.yaml @@ -1,5 +1,5 @@ --- -name: 'Docker Build' +name: 'Docker' 'on': pull_request: branches: @@ -31,7 +31,5 @@ jobs: - name: 'Test' run: | - docker run --rm ${{ env.IMAGE_NAME}} --version docker run --rm ${{ env.IMAGE_NAME}} --help - docker run --rm ${{ env.IMAGE_NAME}} shellcheck --version - docker run --rm ${{ env.IMAGE_NAME}} shellcheck --help + docker run --rm --entrypoint shellcheck ${{ env.IMAGE_NAME}} --version From ef81d6b8ce66f6ead64c6f5f773ab31dc93165d2 Mon Sep 17 00:00:00 2001 From: Dominik Siebel Date: Wed, 15 Jan 2025 09:49:08 +0100 Subject: [PATCH 07/10] use tests that actually make sense --- .github/workflows/docker.yaml | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index d2da71d..64c3779 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -25,11 +25,16 @@ jobs: - name: 'Build' uses: 'docker/build-push-action@v6' with: - push: ${{ github.event_name != 'pull_request' }} - load: ${{ github.event_name == 'pull_request' }} - tags: ${{ env.IMAGE_NAME}} + push: "${{ github.event_name != 'pull_request' }}" + load: "${{ github.event_name == 'pull_request' }}" + tags: "${{ env.IMAGE_NAME}}" - name: 'Test' run: | - docker run --rm ${{ env.IMAGE_NAME}} --help - docker run --rm --entrypoint shellcheck ${{ env.IMAGE_NAME}} --version + docker run --rm --entrypoint shellcheck "${{ env.IMAGE_NAME}}" --version + + docker run --rm \ + --workdir /usr/local/bin \ + --env VERBOSE=1 \ + "${{ env.IMAGE_NAME}}" \ + --include shellcheckw From e05d0620d0a7108415aaf79f0a859d043fa5a7c3 Mon Sep 17 00:00:00 2001 From: Dominik Siebel Date: Wed, 15 Jan 2025 09:55:15 +0100 Subject: [PATCH 08/10] disable artifact upload --- .github/workflows/docker.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index 64c3779..425d6c8 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -24,6 +24,8 @@ jobs: - name: 'Build' uses: 'docker/build-push-action@v6' + env: + DOCKER_BUILD_RECORD_UPLOAD: 'false' with: push: "${{ github.event_name != 'pull_request' }}" load: "${{ github.event_name == 'pull_request' }}" From 08bdae2960b1bf3827606dd7952dddd1df11c0fa Mon Sep 17 00:00:00 2001 From: Dominik Siebel Date: Wed, 15 Jan 2025 09:57:00 +0100 Subject: [PATCH 09/10] enable artifact upload again the creation is done either way, minus the actual upload, so we're not saving much time here --- .github/workflows/docker.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index 425d6c8..64c3779 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -24,8 +24,6 @@ jobs: - name: 'Build' uses: 'docker/build-push-action@v6' - env: - DOCKER_BUILD_RECORD_UPLOAD: 'false' with: push: "${{ github.event_name != 'pull_request' }}" load: "${{ github.event_name == 'pull_request' }}" From e56d692a13bb13f76e3e47398f46e1c7bf4871c6 Mon Sep 17 00:00:00 2001 From: Dominik Siebel Date: Wed, 15 Jan 2025 09:58:59 +0100 Subject: [PATCH 10/10] add usage --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index a5093db..96d04f4 100644 --- a/README.md +++ b/README.md @@ -2,3 +2,11 @@ `debian:bookworm-slim` based Docker image, wrapping [Shellcheck](https://www.shellcheck.net/) with some file include / exclude magic. + +## Usage + +```bash +docker run --rm --volume $(pwd):/mnt --workdir /mnt \ + ghcr.io/dsiebel/shellcheck-docker:latest + --include-file shellcheck.txt +```