diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index fdb3fda..0e98f2e 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -50,6 +50,11 @@ jobs: name: Build service if: ${{ !contains(github.event.head_commit.message, 'skip build') }} runs-on: ubuntu-22.04 + strategy: + fail-fast: false + matrix: + node: [ 20 ] + debian: [ 'bookworm' ] steps: - name: Checkout repo uses: actions/checkout@v4 @@ -64,4 +69,4 @@ jobs: - name: Build service env: SOPS_AGE_KEY: ${{ secrets.SOPS_AGE_KEY }} - run: bash ./scripts/build_service.sh -p -r ${{ github.job }} + run: bash ./scripts/build_service.sh -p -r ${{ github.job }} -n ${{ matrix.node }} -d ${{ matrix.debian }} diff --git a/dockerfile b/dockerfile index f548758..5aba334 100644 --- a/dockerfile +++ b/dockerfile @@ -3,13 +3,16 @@ # To enable WebGL support in Docker # https://github.com/flolu/docker-puppeteer-webgl/blob/master/Dockerfile -FROM node:16.13-bullseye-slim as builder +ARG DEBIAN_VERSION=bookworm +ARG NODE_VERSION=20 + +FROM node:${NODE_VERSION}-${DEBIAN_VERSION}-slim as builder ENV HOME /kapture COPY . ${HOME} WORKDIR ${HOME} RUN yarn -FROM node:16.13-bullseye-slim +FROM node:${NODE_VERSION}-${DEBIAN_VERSION}-slim LABEL maintainer "" RUN export DEBIAN_FRONTEND=noninteractive \ diff --git a/scripts/build_service.sh b/scripts/build_service.sh index 2ccb836..7a1c31a 100755 --- a/scripts/build_service.sh +++ b/scripts/build_service.sh @@ -12,10 +12,20 @@ WORKSPACE_DIR="$(dirname "$ROOT_DIR")" ## Parse options ## +DEFAULT_NODE_VER=20 +DEFAULT_DEBIAN_VER=bookworm +NODE_VER=$DEFAULT_NODE_VER +DEBIAN_VER=$DEFAULT_DEBIAN_VER PUBLISH=false CI_STEP_NAME="Build service" -while getopts "pr:" option; do +while getopts "d:n:pr:" option; do case $option in + d) # defines debian version + DEBIAN_VER=$OPTARG + ;; + n) # defines node version + NODE_VER=$OPTARG + ;; p) # publish app PUBLISH=true ;; @@ -50,23 +60,31 @@ load_value_files "$WORKSPACE_DIR/development/common/KALISIO_DOCKERHUB_PASSWORD.e ## IMAGE_NAME="$KALISIO_DOCKERHUB_URL/kalisio/$NAME" -IMAGE_TAG=latest +IMAGE_SHORT_TAG=latest if [[ -n "$GIT_TAG" ]]; then - IMAGE_TAG=$VERSION + IMAGE_SHORT_TAG=$VERSION fi +IMAGE_TAG="$IMAGE_SHORT_TAG-node$NODE_VER-$DEBIAN_VER" + begin_group "Building container $IMAGE_NAME:$IMAGE_TAG ..." docker login --username "$KALISIO_DOCKERHUB_USERNAME" --password-stdin "$KALISIO_DOCKERHUB_URL" < "$KALISIO_DOCKERHUB_PASSWORD" # DOCKER_BUILDKIT is here to be able to use Dockerfile specific dockerginore (app.Dockerfile.dockerignore) DOCKER_BUILDKIT=1 docker build \ + --build-arg NODE_VERSION="$NODE_VER" \ + --build-arg DEBIAN_VERSION="$DEBIAN_VER" \ -f Dockerfile \ -t "$IMAGE_NAME:$IMAGE_TAG" \ "$ROOT_DIR" if [ "$PUBLISH" = true ]; then docker push "$IMAGE_NAME:$IMAGE_TAG" + if [ "$NODE_VER" = "$DEFAULT_NODE_VER" ] && [ "$DEBIAN_VER" = "$DEFAULT_DEBIAN_VER" ]; then + docker tag "$IMAGE_NAME:$IMAGE_TAG" "$IMAGE_NAME:$IMAGE_SHORT_TAG" + docker push "$IMAGE_NAME:$IMAGE_SHORT_TAG" + fi fi docker logout "$KALISIO_DOCKERHUB_URL"