From 6a126c92a995cbb7c7ebbaac07ef20dfbe9e240f Mon Sep 17 00:00:00 2001 From: Tim Brust Date: Wed, 15 Jan 2025 22:38:01 +0100 Subject: [PATCH 1/4] fix: simplify dockerimage jib --- .github/workflows/dockerimage.yml | 113 ++++++++---------------------- 1 file changed, 29 insertions(+), 84 deletions(-) diff --git a/.github/workflows/dockerimage.yml b/.github/workflows/dockerimage.yml index e5b5d42..e884412 100644 --- a/.github/workflows/dockerimage.yml +++ b/.github/workflows/dockerimage.yml @@ -10,98 +10,43 @@ on: jobs: build: runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + ruby-version: [3.1, 3.2, 3.3, 3.4] + node-version: [18, 20, 22] + variant: [default, slim, alpine] + steps: - uses: actions/checkout@v4.2.2 - - name: Build the Docker image + - name: Build and test Docker image run: | - echo "3.1 with Node.js 18" - docker run -i $(docker build -q 3.1/18) /bin/sh -c "ruby --version && node --version && npm --version" - echo "3.1 slim with Node.js 18" - docker run -i $(docker build -q 3.1/18/slim) /bin/sh -c "ruby --version && node --version && npm --version" - echo "3.1 alpine with Node.js 18" - docker run -i $(docker build -q 3.1/18/alpine) /bin/sh -c "ruby --version && node --version && npm --version" - - echo "3.2 with Node.js 18" - docker run -i $(docker build -q 3.2/18) /bin/sh -c "ruby --version && node --version && npm --version" - echo "3.2 slim with Node.js 18" - docker run -i $(docker build -q 3.2/18/slim) /bin/sh -c "ruby --version && node --version && npm --version" - echo "3.2 alpine with Node.js 18" - docker run -i $(docker build -q 3.2/18/alpine) /bin/sh -c "ruby --version && node --version && npm --version" - - echo "3.3 with Node.js 18" - docker run -i $(docker build -q 3.3/18) /bin/sh -c "ruby --version && node --version && npm --version" - echo "3.3 slim with Node.js 18" - docker run -i $(docker build -q 3.3/18/slim) /bin/sh -c "ruby --version && node --version && npm --version" - echo "3.3 alpine with Node.js 18" - docker run -i $(docker build -q 3.3/18/alpine) /bin/sh -c "ruby --version && node --version && npm --version" - - echo "3.4 with Node.js 18" - docker run -i $(docker build -q 3.4/18) /bin/sh -c "ruby --version && node --version && npm --version" - echo "3.4 slim with Node.js 18" - docker run -i $(docker build -q 3.4/18/slim) /bin/sh -c "ruby --version && node --version && npm --version" - echo "3.4 alpine with Node.js 18" - docker run -i $(docker build -q 3.4/18/alpine) /bin/sh -c "ruby --version && node --version && npm --version" - - echo "3.1 with Node.js 20" - docker run -i $(docker build -q 3.1/20) /bin/sh -c "ruby --version && node --version && npm --version" - echo "3.1 slim with Node.js 20" - docker run -i $(docker build -q 3.1/20/slim) /bin/sh -c "ruby --version && node --version && npm --version" - echo "3.1 alpine with Node.js 20" - docker run -i $(docker build -q 3.1/20/alpine) /bin/sh -c "ruby --version && node --version && npm --version" - - echo "3.2 with Node.js 20" - docker run -i $(docker build -q 3.2/20) /bin/sh -c "ruby --version && node --version && npm --version" - echo "3.2 slim with Node.js 20" - docker run -i $(docker build -q 3.2/20/slim) /bin/sh -c "ruby --version && node --version && npm --version" - echo "3.2 alpine with Node.js 20" - docker run -i $(docker build -q 3.2/20/alpine) /bin/sh -c "ruby --version && node --version && npm --version" + VARIANT_PATH="${{ matrix.variant != 'default' && '/${{ matrix.variant }}' || '' }}" + IMAGE_PATH="${{ matrix.ruby-version }}/${{ matrix.node-version }}${VARIANT_PATH}" + VARIANT_LABEL="${{ matrix.variant != 'default' && ' ${{ matrix.variant }}' || '' }}" + + echo "${{ matrix.ruby-version }} with Node.js ${{ matrix.node-version }}${VARIANT_LABEL}" + + # Run container and capture version outputs + VERSIONS=$(docker run -i $(docker build -q ${IMAGE_PATH}) /bin/sh -c "ruby --version && node --version && npm --version") + echo "$VERSIONS" + + # Check Ruby version + if ! echo "$VERSIONS" | grep -q "ruby ${{ matrix.ruby-version }}"; then + echo "::error::Expected Ruby ${{ matrix.ruby-version }} but got different version" + exit 1 + fi + + # Check Node version + if ! echo "$VERSIONS" | grep -q "v${{ matrix.node-version }}"; then + echo "::error::Expected Node.js ${{ matrix.node-version }} but got different version" + exit 1 + fi - echo "3.3 with Node.js 20" - docker run -i $(docker build -q 3.3/20) /bin/sh -c "ruby --version && node --version && npm --version" - echo "3.3 slim with Node.js 20" - docker run -i $(docker build -q 3.3/20/slim) /bin/sh -c "ruby --version && node --version && npm --version" - echo "3.3 alpine with Node.js 20" - docker run -i $(docker build -q 3.3/20/alpine) /bin/sh -c "ruby --version && node --version && npm --version" - - echo "3.4 with Node.js 20" - docker run -i $(docker build -q 3.4/20) /bin/sh -c "ruby --version && node --version && npm --version" - echo "3.4 slim with Node.js 20" - docker run -i $(docker build -q 3.4/20/slim) /bin/sh -c "ruby --version && node --version && npm --version" - echo "3.4 alpine with Node.js 20" - docker run -i $(docker build -q 3.4/20/alpine) /bin/sh -c "ruby --version && node --version && npm --version" - - echo "3.1 with Node.js 22" - docker run -i $(docker build -q 3.1/22) /bin/sh -c "ruby --version && node --version && npm --version" - echo "3.1 slim with Node.js 22" - docker run -i $(docker build -q 3.1/22/slim) /bin/sh -c "ruby --version && node --version && npm --version" - echo "3.1 alpine with Node.js 22" - docker run -i $(docker build -q 3.1/22/alpine) /bin/sh -c "ruby --version && node --version && npm --version" - - echo "3.2 with Node.js 22" - docker run -i $(docker build -q 3.2/22) /bin/sh -c "ruby --version && node --version && npm --version" - echo "3.2 slim with Node.js 22" - docker run -i $(docker build -q 3.2/22/slim) /bin/sh -c "ruby --version && node --version && npm --version" - echo "3.2 alpine with Node.js 22" - docker run -i $(docker build -q 3.2/22/alpine) /bin/sh -c "ruby --version && node --version && npm --version" - - echo "3.3 with Node.js 22" - docker run -i $(docker build -q 3.3/22) /bin/sh -c "ruby --version && node --version && npm --version" - echo "3.3 slim with Node.js 22" - docker run -i $(docker build -q 3.3/22/slim) /bin/sh -c "ruby --version && node --version && npm --version" - echo "3.3 alpine with Node.js 22" - docker run -i $(docker build -q 3.3/22/alpine) /bin/sh -c "ruby --version && node --version && npm --version" - - echo "3.4 with Node.js 22" - docker run -i $(docker build -q 3.4/22) /bin/sh -c "ruby --version && node --version && npm --version" - echo "3.4 slim with Node.js 22" - docker run -i $(docker build -q 3.4/22/slim) /bin/sh -c "ruby --version && node --version && npm --version" - echo "3.4 alpine with Node.js 22" - docker run -i $(docker build -q 3.4/22/alpine) /bin/sh -c "ruby --version && node --version && npm --version" auto-merge: runs-on: ubuntu-latest needs: build - permissions: pull-requests: write contents: write From 391f36cc2863b4228935de37011551958c3ab697 Mon Sep 17 00:00:00 2001 From: Tim Brust Date: Wed, 15 Jan 2025 22:48:33 +0100 Subject: [PATCH 2/4] fix: bad substitution --- .github/workflows/dockerimage.yml | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/.github/workflows/dockerimage.yml b/.github/workflows/dockerimage.yml index e884412..07954ed 100644 --- a/.github/workflows/dockerimage.yml +++ b/.github/workflows/dockerimage.yml @@ -22,10 +22,15 @@ jobs: - name: Build and test Docker image run: | - VARIANT_PATH="${{ matrix.variant != 'default' && '/${{ matrix.variant }}' || '' }}" - IMAGE_PATH="${{ matrix.ruby-version }}/${{ matrix.node-version }}${VARIANT_PATH}" - VARIANT_LABEL="${{ matrix.variant != 'default' && ' ${{ matrix.variant }}' || '' }}" + if [ "${{ matrix.variant }}" = "default" ]; then + VARIANT_PATH="" + VARIANT_LABEL="" + else + VARIANT_PATH="/${{ matrix.variant }}" + VARIANT_LABEL=" ${{ matrix.variant }}" + fi + IMAGE_PATH="${{ matrix.ruby-version }}/${{ matrix.node-version }}${VARIANT_PATH}" echo "${{ matrix.ruby-version }} with Node.js ${{ matrix.node-version }}${VARIANT_LABEL}" # Run container and capture version outputs @@ -37,7 +42,7 @@ jobs: echo "::error::Expected Ruby ${{ matrix.ruby-version }} but got different version" exit 1 fi - + # Check Node version if ! echo "$VERSIONS" | grep -q "v${{ matrix.node-version }}"; then echo "::error::Expected Node.js ${{ matrix.node-version }} but got different version" @@ -50,7 +55,6 @@ jobs: permissions: pull-requests: write contents: write - steps: - name: Automatically merge dependabot upgrades uses: fastify/github-action-merge-dependabot@v3.11.0 From 9fe6404477118fab9002b5ae0145316788541b1a Mon Sep 17 00:00:00 2001 From: Tim Brust Date: Wed, 15 Jan 2025 22:55:05 +0100 Subject: [PATCH 3/4] fix: bad Node.js version combos --- 3.1/20/alpine/Dockerfile | 8 +++++--- 3.1/22/alpine/Dockerfile | 8 +++----- 3.2/20/alpine/Dockerfile | 8 +++++--- 3.2/22/alpine/Dockerfile | 8 +++----- 3.3/20/alpine/Dockerfile | 8 +++++--- 3.3/22/alpine/Dockerfile | 8 +++----- 3.4/20/alpine/Dockerfile | 8 +++++--- 3.4/22/alpine/Dockerfile | 9 +++------ 8 files changed, 32 insertions(+), 33 deletions(-) diff --git a/3.1/20/alpine/Dockerfile b/3.1/20/alpine/Dockerfile index 44cfb56..93cecf8 100644 --- a/3.1/20/alpine/Dockerfile +++ b/3.1/20/alpine/Dockerfile @@ -4,8 +4,10 @@ LABEL maintainer "Tim Brust " ARG REFRESHED_AT ENV REFRESHED_AT $REFRESHED_AT -RUN apk -U upgrade \ +RUN echo @old-stable https://dl-cdn.alpinelinux.org/alpine/v3.20/community >> /etc/apk/repositories \ + && echo @old-stable https://dl-cdn.alpinelinux.org/alpine/v3.20/main >> /etc/apk/repositories \ + && apk -U upgrade \ && apk add --no-cache \ - nodejs \ - npm \ + nodejs@old-stable \ + npm@old-stable \ yarn diff --git a/3.1/22/alpine/Dockerfile b/3.1/22/alpine/Dockerfile index 10ef13d..44cfb56 100644 --- a/3.1/22/alpine/Dockerfile +++ b/3.1/22/alpine/Dockerfile @@ -4,10 +4,8 @@ LABEL maintainer "Tim Brust " ARG REFRESHED_AT ENV REFRESHED_AT $REFRESHED_AT -RUN echo @edge https://dl-cdn.alpinelinux.org/alpine/edge/community >> /etc/apk/repositories \ - && echo @edge https://dl-cdn.alpinelinux.org/alpine/edge/main >> /etc/apk/repositories \ - && apk -U upgrade \ +RUN apk -U upgrade \ && apk add --no-cache \ - nodejs-current@edge \ - npm@edge \ + nodejs \ + npm \ yarn diff --git a/3.2/20/alpine/Dockerfile b/3.2/20/alpine/Dockerfile index ccad4d1..66a65c0 100644 --- a/3.2/20/alpine/Dockerfile +++ b/3.2/20/alpine/Dockerfile @@ -4,8 +4,10 @@ LABEL maintainer "Tim Brust " ARG REFRESHED_AT ENV REFRESHED_AT $REFRESHED_AT -RUN apk -U upgrade \ +RUN echo @old-stable https://dl-cdn.alpinelinux.org/alpine/v3.20/community >> /etc/apk/repositories \ + && echo @old-stable https://dl-cdn.alpinelinux.org/alpine/v3.20/main >> /etc/apk/repositories \ + && apk -U upgrade \ && apk add --no-cache \ - nodejs \ - npm \ + nodejs@old-stable \ + npm@old-stable \ yarn diff --git a/3.2/22/alpine/Dockerfile b/3.2/22/alpine/Dockerfile index 7f3c624..ccad4d1 100644 --- a/3.2/22/alpine/Dockerfile +++ b/3.2/22/alpine/Dockerfile @@ -4,10 +4,8 @@ LABEL maintainer "Tim Brust " ARG REFRESHED_AT ENV REFRESHED_AT $REFRESHED_AT -RUN echo @edge https://dl-cdn.alpinelinux.org/alpine/edge/community >> /etc/apk/repositories \ - && echo @edge https://dl-cdn.alpinelinux.org/alpine/edge/main >> /etc/apk/repositories \ - && apk -U upgrade \ +RUN apk -U upgrade \ && apk add --no-cache \ - nodejs-current@edge \ - npm@edge \ + nodejs \ + npm \ yarn diff --git a/3.3/20/alpine/Dockerfile b/3.3/20/alpine/Dockerfile index c5b356e..13bebff 100644 --- a/3.3/20/alpine/Dockerfile +++ b/3.3/20/alpine/Dockerfile @@ -4,8 +4,10 @@ LABEL maintainer "Tim Brust " ARG REFRESHED_AT ENV REFRESHED_AT $REFRESHED_AT -RUN apk -U upgrade \ +RUN echo @old-stable https://dl-cdn.alpinelinux.org/alpine/v3.20/community >> /etc/apk/repositories \ + && echo @old-stable https://dl-cdn.alpinelinux.org/alpine/v3.20/main >> /etc/apk/repositories \ + && apk -U upgrade \ && apk add --no-cache \ - nodejs \ - npm \ + nodejs@old-stable \ + npm@old-stable \ yarn diff --git a/3.3/22/alpine/Dockerfile b/3.3/22/alpine/Dockerfile index 3e2b2b1..c5b356e 100644 --- a/3.3/22/alpine/Dockerfile +++ b/3.3/22/alpine/Dockerfile @@ -4,10 +4,8 @@ LABEL maintainer "Tim Brust " ARG REFRESHED_AT ENV REFRESHED_AT $REFRESHED_AT -RUN echo @edge https://dl-cdn.alpinelinux.org/alpine/edge/community >> /etc/apk/repositories \ - && echo @edge https://dl-cdn.alpinelinux.org/alpine/edge/main >> /etc/apk/repositories \ - && apk -U upgrade \ +RUN apk -U upgrade \ && apk add --no-cache \ - nodejs-current@edge \ - npm@edge \ + nodejs \ + npm \ yarn diff --git a/3.4/20/alpine/Dockerfile b/3.4/20/alpine/Dockerfile index 5c26698..e2f1353 100644 --- a/3.4/20/alpine/Dockerfile +++ b/3.4/20/alpine/Dockerfile @@ -4,8 +4,10 @@ LABEL maintainer "Tim Brust " ARG REFRESHED_AT ENV REFRESHED_AT $REFRESHED_AT -RUN apk -U upgrade \ +RUN echo @old-stable https://dl-cdn.alpinelinux.org/alpine/v3.20/community >> /etc/apk/repositories \ + && echo @old-stable https://dl-cdn.alpinelinux.org/alpine/v3.20/main >> /etc/apk/repositories \ + && apk -U upgrade \ && apk add --no-cache \ - nodejs \ - npm \ + nodejs@old-stable \ + npm@old-stable \ yarn diff --git a/3.4/22/alpine/Dockerfile b/3.4/22/alpine/Dockerfile index 36d7f62..5c26698 100644 --- a/3.4/22/alpine/Dockerfile +++ b/3.4/22/alpine/Dockerfile @@ -4,11 +4,8 @@ LABEL maintainer "Tim Brust " ARG REFRESHED_AT ENV REFRESHED_AT $REFRESHED_AT -RUN echo @edge https://dl-cdn.alpinelinux.org/alpine/edge/community >> /etc/apk/repositories \ - && echo @edge https://dl-cdn.alpinelinux.org/alpine/edge/main >> /etc/apk/repositories \ - && apk -U upgrade \ +RUN apk -U upgrade \ && apk add --no-cache \ - nodejs-current@edge \ - npm@edge \ + nodejs \ + npm \ yarn - From 7758c9e4ee108f11e3b66a3f5486c90a81e1c849 Mon Sep 17 00:00:00 2001 From: Tim Brust Date: Wed, 15 Jan 2025 23:16:09 +0100 Subject: [PATCH 4/4] fix: adds missing pkg --- 3.1/20/alpine/Dockerfile | 1 + 3.2/20/alpine/Dockerfile | 1 + 3.3/20/alpine/Dockerfile | 1 + 3.4/20/alpine/Dockerfile | 1 + 4 files changed, 4 insertions(+) diff --git a/3.1/20/alpine/Dockerfile b/3.1/20/alpine/Dockerfile index 93cecf8..93d75f7 100644 --- a/3.1/20/alpine/Dockerfile +++ b/3.1/20/alpine/Dockerfile @@ -8,6 +8,7 @@ RUN echo @old-stable https://dl-cdn.alpinelinux.org/alpine/v3.20/community >> /e && echo @old-stable https://dl-cdn.alpinelinux.org/alpine/v3.20/main >> /etc/apk/repositories \ && apk -U upgrade \ && apk add --no-cache \ + ada-libs@old-stable \ nodejs@old-stable \ npm@old-stable \ yarn diff --git a/3.2/20/alpine/Dockerfile b/3.2/20/alpine/Dockerfile index 66a65c0..8e38e8e 100644 --- a/3.2/20/alpine/Dockerfile +++ b/3.2/20/alpine/Dockerfile @@ -8,6 +8,7 @@ RUN echo @old-stable https://dl-cdn.alpinelinux.org/alpine/v3.20/community >> /e && echo @old-stable https://dl-cdn.alpinelinux.org/alpine/v3.20/main >> /etc/apk/repositories \ && apk -U upgrade \ && apk add --no-cache \ + ada-libs@old-stable \ nodejs@old-stable \ npm@old-stable \ yarn diff --git a/3.3/20/alpine/Dockerfile b/3.3/20/alpine/Dockerfile index 13bebff..2becd9c 100644 --- a/3.3/20/alpine/Dockerfile +++ b/3.3/20/alpine/Dockerfile @@ -8,6 +8,7 @@ RUN echo @old-stable https://dl-cdn.alpinelinux.org/alpine/v3.20/community >> /e && echo @old-stable https://dl-cdn.alpinelinux.org/alpine/v3.20/main >> /etc/apk/repositories \ && apk -U upgrade \ && apk add --no-cache \ + ada-libs@old-stable \ nodejs@old-stable \ npm@old-stable \ yarn diff --git a/3.4/20/alpine/Dockerfile b/3.4/20/alpine/Dockerfile index e2f1353..e58fd31 100644 --- a/3.4/20/alpine/Dockerfile +++ b/3.4/20/alpine/Dockerfile @@ -8,6 +8,7 @@ RUN echo @old-stable https://dl-cdn.alpinelinux.org/alpine/v3.20/community >> /e && echo @old-stable https://dl-cdn.alpinelinux.org/alpine/v3.20/main >> /etc/apk/repositories \ && apk -U upgrade \ && apk add --no-cache \ + ada-libs@old-stable \ nodejs@old-stable \ npm@old-stable \ yarn