From b05508b52d9de9459a96ada90692ce32780ba415 Mon Sep 17 00:00:00 2001 From: Andrius Kairiukstis Date: Mon, 19 Feb 2024 15:31:18 +0100 Subject: [PATCH] WIP on github workflows --- .github/workflows/build.yml | 22 ++++++++++++++-------- Dockerfile | 33 ++++++++++++++++++--------------- Dockerfile-2.7 | 35 ----------------------------------- Dockerfile-3.10 | 33 --------------------------------- Dockerfile-3.5 | 32 -------------------------------- Dockerfile-3.6 | 32 -------------------------------- Dockerfile-3.7 | 32 -------------------------------- Dockerfile-3.8 | 33 --------------------------------- Dockerfile-3.9 | 32 -------------------------------- 9 files changed, 32 insertions(+), 252 deletions(-) delete mode 100644 Dockerfile-2.7 delete mode 100644 Dockerfile-3.10 delete mode 100644 Dockerfile-3.5 delete mode 100644 Dockerfile-3.6 delete mode 100644 Dockerfile-3.7 delete mode 100644 Dockerfile-3.8 delete mode 100644 Dockerfile-3.9 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2a2e250..612c4cf 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -5,14 +5,24 @@ on: workflow_dispatch: # schedule: # - cron: '0 0 * * *' # runs every day at midnight +# +defaults: + run: + shell: bash -euo pipefail {0} jobs: build-and-push: runs-on: ubuntu-latest + concurrency: + group: ${{ github.repository }}-${{ github.workflow_ref }}-${{ matrix.alpine_version }}-build + cancel-in-progress: false + timeout-minutes: 20 strategy: + fail-fast: false matrix: alpine_version: - - 2.7 + - latest + - edge - 3.1 - 3.2 - 3.3 @@ -32,8 +42,6 @@ jobs: - 3.17 - 3.18 - 3.19 - - latest - - edge steps: - name: Check out code @@ -48,17 +56,15 @@ jobs: - name: Build and Push Image run: | if [ -f "Dockerfile-${{ matrix.alpine_version }}" ]; then - DOCKERFILE=Dockerfile-${{ matrix.alpine_version }} + DOCKERFILE="Dockerfile-${{ matrix.alpine_version }}" else - DOCKERFILE=Dockerfile + DOCKERFILE="Dockerfile" fi docker buildx build \ --push \ - --pull \ - --quiet \ --platform linux/amd64,linux/arm64 \ --tag andrius/alpine-ruby:${{ matrix.alpine_version }} \ --build-arg ALPINE_VERSION=${{ matrix.alpine_version }} \ - --file $DOCKERFILE + --file $DOCKERFILE \ . diff --git a/Dockerfile b/Dockerfile index 1a259fe..7446389 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,26 +6,29 @@ LABEL "org.opencontainers.image.authors"="Andrius Kairiukstis " LABEL "org.opencontainers.image.source"="https://github.com/andrius/alpine-ruby" LABEL "org.opencontainers.image.description"="Minimal dockerized ruby based on alpine-linux" -ENV NOKOGIRI_USE_SYSTEM_LIBRARIES=1 -ADD gemrc /root/.gemrc -RUN apk update && apk add \ +RUN apk --no-cache add \ + ca-certificates \ + less \ + libressl \ ruby \ - ruby-etc \ ruby-bigdecimal \ + ruby-etc \ ruby-io-console \ - ruby-irb \ - ca-certificates \ - libressl \ - less \ - : \ - && apk add --virtual .build-dependencies build-base ruby-dev libressl-dev \ - && gem install bundler || apk add ruby-bundler \ + ruby-irb + +# The following is needed for nokogiri +ENV NOKOGIRI_USE_SYSTEM_LIBRARIES=1 + +# It tries to install ruby bundler with failback to apk version and nokoiri +RUN apk add --no-cache --virtual .build-dependencies build-base ruby-dev libressl-dev \ + && ( gem install --no-rdoc --no-ri bundler || gem install --no-rdoc --no-ri bundler '~> 2.0' || apk add ruby-bundler ) \ + && gem install --no-rdoc --no-ri json \ && bundle config build.nokogiri --use-system-libraries \ && bundle config git.allow_insecure true \ - && gem install json \ - : \ && gem cleanup \ - && apk del .build-dependencies \ - && rm -rf /usr/lib/ruby/gems/*/cache/* /var/cache/apk/* /tmp/* /var/tmp/* + && rm -rf /usr/lib/ruby/gems/*/cache/* \ + && apk del .build-dependencies + +COPY gemrc /root/.gemrc diff --git a/Dockerfile-2.7 b/Dockerfile-2.7 deleted file mode 100644 index 5ba8eb4..0000000 --- a/Dockerfile-2.7 +++ /dev/null @@ -1,35 +0,0 @@ -# vim:set ft=dockerfile: -FROM alpine:2.7 - -LABEL maintainer="Andrius Kairiukstis " - -ENV NOKOGIRI_USE_SYSTEM_LIBRARIES=1 - -ADD gemrc /root/.gemrc - -RUN apk update \ -&& apk add ruby \ - ruby-bigdecimal \ - ruby-io-console \ - ruby-irb \ - build-base \ - ruby-dev \ - less \ -&& apk add --update-cache --repository http://dl-4.alpinelinux.org/alpine/edge/main/ \ - ca-certificates \ - libressl \ - libressl-dev \ -&& gem install --no-rdoc --no-ri \ - bundler:'~> 1.0' \ - json \ -&& bundle config build.nokogiri --use-system-libraries \ -&& bundle config git.allow_insecure true \ -\ -&& gem cleanup \ -&& apk del build-base \ - ruby-dev \ - libressl-dev \ -&& rm -rf /usr/lib/ruby/gems/*/cache/* \ - /var/cache/apk/* \ - /tmp/* \ - /var/tmp/* diff --git a/Dockerfile-3.10 b/Dockerfile-3.10 deleted file mode 100644 index ad7eb8a..0000000 --- a/Dockerfile-3.10 +++ /dev/null @@ -1,33 +0,0 @@ -# vim:set ft=dockerfile: -FROM alpine:3.10 - -LABEL maintainer="Andrius Kairiukstis " - -ENV NOKOGIRI_USE_SYSTEM_LIBRARIES=1 - -ADD gemrc /root/.gemrc - -RUN apk update \ -&& apk add ruby \ - ruby-etc \ - ruby-bigdecimal \ - ruby-io-console \ - ruby-irb \ - ca-certificates \ - libressl \ - less \ -&& apk add --virtual .build-dependencies \ - build-base \ - ruby-dev \ - libressl-dev \ -&& gem install bundler --no-rdoc --no-ri || apk add ruby-bundler \ -&& bundle config build.nokogiri --use-system-libraries \ -&& bundle config git.allow_insecure true \ -&& gem install --no-rdoc --no-ri json \ -\ -&& gem cleanup \ -&& apk del .build-dependencies \ -&& rm -rf /usr/lib/ruby/gems/*/cache/* \ - /var/cache/apk/* \ - /tmp/* \ - /var/tmp/* diff --git a/Dockerfile-3.5 b/Dockerfile-3.5 deleted file mode 100644 index fc583d1..0000000 --- a/Dockerfile-3.5 +++ /dev/null @@ -1,32 +0,0 @@ -# vim:set ft=dockerfile: -FROM alpine:3.5 - -LABEL maintainer="Andrius Kairiukstis " - -ENV NOKOGIRI_USE_SYSTEM_LIBRARIES=1 - -ADD gemrc /root/.gemrc - -RUN apk update \ -&& apk add ruby \ - ruby-bigdecimal \ - ruby-io-console \ - ruby-irb \ - ca-certificates \ - libressl \ - less \ -&& apk add --virtual .build-dependencies \ - build-base \ - ruby-dev \ - libressl-dev \ -&& gem install --no-rdoc --no-ri bundler:'~> 2.0' \ - json \ -&& bundle config build.nokogiri --use-system-libraries \ -&& bundle config git.allow_insecure true \ -\ -&& gem cleanup \ -&& apk del .build-dependencies \ -&& rm -rf /usr/lib/ruby/gems/*/cache/* \ - /var/cache/apk/* \ - /tmp/* \ - /var/tmp/* diff --git a/Dockerfile-3.6 b/Dockerfile-3.6 deleted file mode 100644 index edb22a2..0000000 --- a/Dockerfile-3.6 +++ /dev/null @@ -1,32 +0,0 @@ -# vim:set ft=dockerfile: -FROM alpine:3.6 - -LABEL maintainer="Andrius Kairiukstis " - -ENV NOKOGIRI_USE_SYSTEM_LIBRARIES=1 - -ADD gemrc /root/.gemrc - -RUN apk update \ -&& apk add ruby \ - ruby-bigdecimal \ - ruby-io-console \ - ruby-irb \ - ca-certificates \ - libressl \ - less \ -&& apk add --virtual .build-dependencies \ - build-base \ - ruby-dev \ - libressl-dev \ -&& gem install --no-rdoc --no-ri bundler:'~> 2.0' \ - json \ -&& bundle config build.nokogiri --use-system-libraries \ -&& bundle config git.allow_insecure true \ -\ -&& gem cleanup \ -&& apk del .build-dependencies \ -&& rm -rf /usr/lib/ruby/gems/*/cache/* \ - /var/cache/apk/* \ - /tmp/* \ - /var/tmp/* diff --git a/Dockerfile-3.7 b/Dockerfile-3.7 deleted file mode 100644 index 24b5e31..0000000 --- a/Dockerfile-3.7 +++ /dev/null @@ -1,32 +0,0 @@ -# vim:set ft=dockerfile: -FROM alpine:3.7 - -LABEL maintainer="Andrius Kairiukstis " - -ENV NOKOGIRI_USE_SYSTEM_LIBRARIES=1 - -ADD gemrc /root/.gemrc - -RUN apk update \ -&& apk add ruby \ - ruby-bigdecimal \ - ruby-io-console \ - ruby-irb \ - ca-certificates \ - libressl \ - less \ -&& apk add --virtual .build-dependencies \ - build-base \ - ruby-dev \ - libressl-dev \ -&& gem install --no-rdoc --no-ri bundler:'~> 2.0' \ - json \ -&& bundle config build.nokogiri --use-system-libraries \ -&& bundle config git.allow_insecure true \ -\ -&& gem cleanup \ -&& apk del .build-dependencies \ -&& rm -rf /usr/lib/ruby/gems/*/cache/* \ - /var/cache/apk/* \ - /tmp/* \ - /var/tmp/* diff --git a/Dockerfile-3.8 b/Dockerfile-3.8 deleted file mode 100644 index 6b428be..0000000 --- a/Dockerfile-3.8 +++ /dev/null @@ -1,33 +0,0 @@ -# vim:set ft=dockerfile: -FROM alpine:3.8 - -LABEL maintainer="Andrius Kairiukstis " - -ENV NOKOGIRI_USE_SYSTEM_LIBRARIES=1 - -ADD gemrc /root/.gemrc - -RUN apk update \ -&& apk add ruby \ - ruby-etc \ - ruby-bigdecimal \ - ruby-io-console \ - ruby-irb \ - ca-certificates \ - libressl \ - less \ -&& apk add --virtual .build-dependencies \ - build-base \ - ruby-dev \ - libressl-dev \ -&& gem install --no-rdoc --no-ri bundler:'~> 2.0' \ - json \ -&& bundle config build.nokogiri --use-system-libraries \ -&& bundle config git.allow_insecure true \ -\ -&& gem cleanup \ -&& apk del .build-dependencies \ -&& rm -rf /usr/lib/ruby/gems/*/cache/* \ - /var/cache/apk/* \ - /tmp/* \ - /var/tmp/* diff --git a/Dockerfile-3.9 b/Dockerfile-3.9 deleted file mode 100644 index 81e11c7..0000000 --- a/Dockerfile-3.9 +++ /dev/null @@ -1,32 +0,0 @@ -FROM alpine:3.9 - -LABEL maintainer="Andrius Kairiukstis " - -ENV NOKOGIRI_USE_SYSTEM_LIBRARIES=1 - -ADD gemrc /root/.gemrc - -RUN apk update \ -&& apk add ruby \ - ruby-etc \ - ruby-bigdecimal \ - ruby-io-console \ - ruby-irb \ - ca-certificates \ - libressl \ - less \ -&& apk add --virtual .build-dependencies \ - build-base \ - ruby-dev \ - libressl-dev \ -&& gem install --no-rdoc --no-ri bundler:'~> 2.0' \ - json \ -&& bundle config build.nokogiri --use-system-libraries \ -&& bundle config git.allow_insecure true \ -\ -&& gem cleanup \ -&& apk del .build-dependencies \ -&& rm -rf /usr/lib/ruby/gems/*/cache/* \ - /var/cache/apk/* \ - /tmp/* \ - /var/tmp/*