diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b715c31..dd236cf 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,39 +1,14 @@ stages: - - prepare - - test - build - - build-image + - package - deploy -include: - - "ci/build/*.inc.yml" - - "ci/build/*/*.inc.yml" - - "ci/variables.yml" +variables: + DIST_DIR: "./src/.vitepress/dist" + CONTAINER_REGISTRY: harbor.vimpelcom.ru + PRODUCT_PROD: vega/beecloud + IMAGE_NAME: docs + +include: + - ci/develop.yml - "ci/rules.yml" - -# default: -# image: harbor.vimpelcom.ru/dockerhub/library/docker:20.10.11-dind - -# cache: -# paths: -# - node_modules/ - -# stages: -# - build -# - package -# - deploy - -# variables: -# DIST_DIR: "./src/.vitepress/dist" -# DMZ_DIST_DIR: "./dmz-dist" -# CONTAINER_REGISTRY: harbor.vimpelcom.ru -# PRODUCT_FEATURE: vega/feature -# PRODUCT_FEATURE_STAND: vega/feature/stand -# PRODUCT_STAGE: vega/stage -# PRODUCT_DMZ: vega/dmz -# PRODUCT_PROD: vega -# IMAGE_NAME: docs - -# include: -# - ci/feature.yml -# - ci/develop.yml diff --git a/build.Dockerfile b/build.Dockerfile new file mode 100644 index 0000000..9b9d65e --- /dev/null +++ b/build.Dockerfile @@ -0,0 +1,12 @@ +FROM --platform=linux/amd64 harbor.vimpelcom.ru/dockerhub/library/nginx:alpine + +ARG DIST_DIR=./src/.vitepress/dist +ARG WROOT_DIR=/usr/share/nginx/html/docs + +WORKDIR ${WROOT_DIR} + +RUN rm -rf ./* +COPY ${DIST_DIR} ./ + +EXPOSE 80 +CMD ["nginx", "-g", "daemon off;"] diff --git a/ci/build/npm/build.inc.yml b/ci/build/npm/build.inc.yml deleted file mode 100644 index 3be45ef..0000000 --- a/ci/build/npm/build.inc.yml +++ /dev/null @@ -1,36 +0,0 @@ -# - > переносы строк удаляются -# - | переносы строк не удаляются - -build-npm: - image: harbor.vimpelcom.ru/dockerhub/library/node:lts - stage: build - cache: - - key: - files: - - package.json - paths: - - node_modules/ - script: - # - | - # if [ -f "${CI_PROJECT_DIR}/VERSION" ]; then - # APPVERSION=$(cat ${CI_PROJECT_DIR}/VERSION) - # fi - # echo "APPVERSION(VERSION) ${APPVERSION}" - - # if [[ -z "$APPVERSION" ]]; then - # echo "APPVERSION is null" - # exit 1 - # fi - # - echo VITE_VERSION = "$APPVERSION" >> .env - - # - export PRODUCT="${PRODUCT_CLOUD}" - - - npm install - - npm run build - artifacts: - paths: - - "$NPM_DIST_DIR" - reports: - dotenv: .env - rules: - - !reference [.build-npm-rules, rules] diff --git a/ci/develop.yml b/ci/develop.yml new file mode 100644 index 0000000..bc0b9ba --- /dev/null +++ b/ci/develop.yml @@ -0,0 +1,48 @@ +develop:npm: + image: harbor.vimpelcom.ru/dockerhub/library/node:lts + stage: build + cache: + - key: + files: + - package.json + paths: + - node_modules/ + rules: + - !reference [.build-npm-rules, rules] + variables: + PRODUCT: "$PRODUCT_PROD" + script: + - export PRODUCT_VERSION=$(node -p "require('./package.json').version") + - echo PRODUCT_VERSION="$PRODUCT_VERSION" >> .env + - echo PRODUCT="$PRODUCT_PROD" >> .env + - npm install + - npm run build + artifacts: + paths: + - "$DIST_DIR" + reports: + dotenv: .env + expire_in: 1h + +develop-image: + image: harbor.vimpelcom.ru/dockerhub/library/docker:20.10.11-dind + stage: package + rules: + - !reference [.build-npm-rules, rules] + before_script: + - cat /certs/ca.crt >> /etc/ssl/certs/ca-certificates.crt + - echo PRODUCT="$PRODUCT" >> .env + - echo PRODUCT_VERSION="$PRODUCT_VERSION" >> .env + - echo "$HARBOR_SECRET" | docker login ${CONTAINER_REGISTRY} --username $HARBOR_USER --password-stdin + script: + - docker build --build-arg DIST_DIR=${DIST_DIR} -f ./build.Dockerfile -t ${CONTAINER_REGISTRY}/${PRODUCT}/${IMAGE_NAME}:$PRODUCT_VERSION -t ${CONTAINER_REGISTRY}/${PRODUCT}/${IMAGE_NAME}:latest . + - docker push ${CONTAINER_REGISTRY}/${PRODUCT}/${IMAGE_NAME}:$PRODUCT_VERSION + - docker push ${CONTAINER_REGISTRY}/${PRODUCT}/${IMAGE_NAME}:latest + needs: + - job: develop:npm + artifacts: true + optional: true + artifacts: + # Передача env без импорта с помощью source + reports: + dotenv: .env diff --git a/ci/rules.yml b/ci/rules.yml index 1b74a07..9849945 100644 --- a/ci/rules.yml +++ b/ci/rules.yml @@ -2,7 +2,7 @@ rules: - if: $CI_COMMIT_BRANCH && $CI_PIPELINE_SOURCE == "merge_request_event" when: never - - if: $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH == "main" + - if: $CI_PIPELINE_SOURCE == "push" && ($CI_COMMIT_BRANCH == "main" || $CI_COMMIT_BRANCH == "feature/ci") exists: - .npmrc - ./*/.npmrc diff --git a/ci/variables.yml b/ci/variables.yml deleted file mode 100644 index 7aaa500..0000000 --- a/ci/variables.yml +++ /dev/null @@ -1,13 +0,0 @@ -variables: - TEAM_NAME: vega - IMAGE_REGISTRY: harbor.vimpelcom.ru - CONTAINER_REGISTRY: ${IMAGE_REGISTRY} - NEXUS: https://nexus.vimpelcom.ru - - NPM_DIST_DIR: "./src/.vitepress/dist" - IMAGE_NAME: ${CI_PROJECT_NAME} - PRODUCT_RELEASE: ${TEAM_NAME} - PRODUCT_DEVELOP: ${TEAM_NAME}/stage - PRODUCT_FEATURE: ${TEAM_NAME}/feature - PRODUCT_CLOUD: ${TEAM_NAME}/cloud - PRODUCT_VERSION: ${APPVERSION}