From 26ffc37076cdeca4ecf5a8c5dd157d32293f4e96 Mon Sep 17 00:00:00 2001 From: Aditya Prima Date: Thu, 4 Jan 2024 17:29:52 +0700 Subject: [PATCH] Added separate build for dockerhub and cifo registry --- .gitlab-ci.cifo.yml | 56 +++++++++++++++++++++++++++++++++++++++++++++ .gitlab-ci.yml | 7 ++++++ Dockerfile | 9 -------- Dockerfile_alpine | 19 +++++++++++++++ Dockerfile_ubuntu | 33 ++++++++++++++++++++++++++ 5 files changed, 115 insertions(+), 9 deletions(-) create mode 100644 .gitlab-ci.cifo.yml create mode 100644 .gitlab-ci.yml delete mode 100644 Dockerfile create mode 100644 Dockerfile_alpine create mode 100644 Dockerfile_ubuntu diff --git a/.gitlab-ci.cifo.yml b/.gitlab-ci.cifo.yml new file mode 100644 index 0000000..98b0c43 --- /dev/null +++ b/.gitlab-ci.cifo.yml @@ -0,0 +1,56 @@ +stages: + - build + +.build: + image: docker:20.10.16 + services: + - name: docker:20.10.16-dind + alias: docker + variables: + DOCKER_HOST: tcp://docker:2376 + DOCKER_TLS_CERTDIR: "/certs" + DOCKER_TLS_VERIFY: 1 + DOCKER_CERT_PATH: "/certs/client" + DOCKER_DRIVER: "overlay" + before_script: + - "docker login ${CI_REGISTRY} -u gitlab-ci-token -p ${CI_JOB_TOKEN}" + after_script: + - "docker logout ${CI_REGISTRY}" + +build_cifo_20: + stage: build + extends: .build + only: + - master + script: + - DOCKER_BUILDKIT=1 docker image build -f Dockerfile_ubuntu --build-arg="UBUNTU_VERSION=jammy" --build-arg="REGISTRY_URL=registry.cifo.co.id/docker" --build-arg="NODE_VERSION=20.10.0" -t ${CI_REGISTRY}/${CI_PROJECT_PATH}:latest -t ${CI_REGISTRY}/${CI_PROJECT_PATH}:20-ubuntu -t ${CI_REGISTRY}/${CI_PROJECT_PATH}:20 . + - DOCKER_BUILDKIT=1 docker image build -f Dockerfile_alpine --build-arg="ALPINE_VERSION=3.19" --build-arg="REGISTRY_URL=registry.cifo.co.id/docker" -t ${CI_REGISTRY}/${CI_PROJECT_PATH}:20-alpine . + - docker image push ${CI_REGISTRY}/${CI_PROJECT_PATH}:latest + - docker image push ${CI_REGISTRY}/${CI_PROJECT_PATH}:20 + - docker image push ${CI_REGISTRY}/${CI_PROJECT_PATH}:20-ubuntu + - docker image push ${CI_REGISTRY}/${CI_PROJECT_PATH}:20-alpine + + +build_cifo_18: + stage: build + extends: .build + only: + - master + script: + - DOCKER_BUILDKIT=1 docker image build -f Dockerfile_ubuntu --build-arg="UBUNTU_VERSION=jammy" --build-arg="REGISTRY_URL=registry.cifo.co.id/docker" --build-arg="NODE_VERSION=18.19.0" -t ${CI_REGISTRY}/${CI_PROJECT_PATH}:18-ubuntu -t ${CI_REGISTRY}/${CI_PROJECT_PATH}:18 . + - DOCKER_BUILDKIT=1 docker image build -f Dockerfile_alpine --build-arg="ALPINE_VERSION=3.18" --build-arg="REGISTRY_URL=registry.cifo.co.id/docker" -t ${CI_REGISTRY}/${CI_PROJECT_PATH}:18-alpine . + - docker image push ${CI_REGISTRY}/${CI_PROJECT_PATH}:18 + - docker image push ${CI_REGISTRY}/${CI_PROJECT_PATH}:18-ubuntu + - docker image push ${CI_REGISTRY}/${CI_PROJECT_PATH}:18-alpine + +build_cifo_16: + stage: build + extends: .build + only: + - master + script: + - DOCKER_BUILDKIT=1 docker image build -f Dockerfile_ubuntu --build-arg="UBUNTU_VERSION=jammy" --build-arg="REGISTRY_URL=registry.cifo.co.id/docker" --build-arg="NODE_VERSION=16.20.2" -t ${CI_REGISTRY}/${CI_PROJECT_PATH}:16-ubuntu -t ${CI_REGISTRY}/${CI_PROJECT_PATH}:16 . + - DOCKER_BUILDKIT=1 docker image build -f Dockerfile_alpine --build-arg="ALPINE_VERSION=3.16" --build-arg="REGISTRY_URL=registry.cifo.co.id/docker" -t ${CI_REGISTRY}/${CI_PROJECT_PATH}:16-alpine . + - docker image push ${CI_REGISTRY}/${CI_PROJECT_PATH}:16 + - docker image push ${CI_REGISTRY}/${CI_PROJECT_PATH}:16-ubuntu + - docker image push ${CI_REGISTRY}/${CI_PROJECT_PATH}:16-alpine diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..8dd6631 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,7 @@ +stages: + - triggers + +build_cifo: + stage: triggers + trigger: + include: .gitlab-ci.cifo.yml diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 3ce5a9b..0000000 --- a/Dockerfile +++ /dev/null @@ -1,9 +0,0 @@ -FROM aprimediet/alpine-base:latest -LABEL maintainer=" aditya.prima@qti.co.id" - -# INSTALL REQUIRED DEPENDENCIES -RUN apk add --update --no-cache \ - nodejs nodejs-dev npm gzip - -# INSTALL YARN FOR JS PACKAGE MANAGER -RUN npm i -g yarn diff --git a/Dockerfile_alpine b/Dockerfile_alpine new file mode 100644 index 0000000..812b26d --- /dev/null +++ b/Dockerfile_alpine @@ -0,0 +1,19 @@ +# 14.21.3 = 3.14 +# 16.20.2 = 3.16 +# 18.19.0 = 3.18 +ARG REGISTRY_URL=aprimediet +ARG ALPINE_VERSION=3.18 + +FROM ${REGISTRY_URL}/alpine:${ALPINE_VERSION} +LABEL maintainer=" aprimediet@gmail.com" + +# INSTALL WGET AND REQUIRED BUILD TOOLS +RUN --mount=type=cache,target=/var/cache/apk \ + apk add --update \ + nodejs nodejs-dev npm + +# INSTALL YARN +RUN npm i -g yarn + +# CLEAR CACHE +RUN rm -rf /var/cache/apk/* \ No newline at end of file diff --git a/Dockerfile_ubuntu b/Dockerfile_ubuntu new file mode 100644 index 0000000..20b7cd4 --- /dev/null +++ b/Dockerfile_ubuntu @@ -0,0 +1,33 @@ +ARG UBUNTU_VERSION=jammy + +FROM aprimediet/ubuntu:${UBUNTU_VERSION} +LABEL maintainer=" aprimediet@gmail.com" + +ARG NVM_VERSION=0.39.5 +ARG NODE_VERSION=18.19.0 + +ENV HOME /root +ENV NVM_DIR $HOME/.nvm + +# UPGRADE PACKAGES FIRST +RUN --mount=type=cache,target=/var/cache/apt/archives \ + apt -y update && apt -y upgrade + +# GET LATEST NVM +ADD https://raw.githubusercontent.com/nvm-sh/nvm/v${NVM_VERSION}/install.sh /tmp + +# INSTALL NVM AND DESIGNATED NODE VERSION +RUN bash /tmp/install.sh && \ + . $NVM_DIR/nvm.sh && \ + nvm install v${NODE_VERSION} && \ + nvm alias default v${NODE_VERSION} && \ + nvm use default + +ENV NODE_PATH $NVM_DIR/versions/node/v${NODE_VERSION}/lib/node_modules +ENV PATH $PATH:$NVM_DIR/versions/node/v${NODE_VERSION}/bin + +# INSTALL YARN +RUN npm i -g yarn + +# CLEAR APT CACHE +RUN apt -y clean && rm -f /tmp/*