Skip to content
Snippets Groups Projects

K8s deploy

Merged Remi PLANEL requested to merge k8s-deploy into dev
1 file
+ 1
1
Compare changes
  • Side-by-side
  • Inline
+ 85
22
# The Docker image that will be used to build your app
image: node:19.5-bullseye-slim
# Functions that should be executed before the build script is run
variables:
HELM_VERSION: "3.9.3"
IMAGE_NAME: "df-wiki"
cache:
paths:
- node_modules/
@@ -10,28 +12,89 @@ stages:
- build
- deploy
build:
.build:
stage: build
image: docker:24
variables:
CONTEXT: "."
DOCKERFILE: "Dockerfile"
BASE_URL: /wiki/
before_script:
- npm ci
- i=0; while [ "$i" -lt 12 ]; do docker info && break; sleep 5; i=$(( i + 1 )) ; done
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
script:
- NUXT_APP_BASE_URL=/wiki/ npm run generate
artifacts:
paths:
- .output/public
untracked: false
when: on_success
expire_in: "30 days"
pages:
- docker build --pull -t "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$CI_COMMIT_SHORT_SHA" --build-arg "BASE_URL=$BASE_URL" -f $DOCKERFILE $CONTEXT
- docker push "$CI_REGISTRY_IMAGE/$IMAGE_NAME:$CI_COMMIT_SHORT_SHA"
# build:
# stage: build
# before_script:
# - npm ci
# script:
# - NUXT_APP_BASE_URL=/wiki/ npm run generate
# artifacts:
# paths:
# - .output/public
# untracked: false
# when: on_success
# expire_in: "30 days"
build:dev:
extends: .build
rules:
- if: $CI_COMMIT_BRANCH != "main"
.deploy:
stage: deploy
image: harbor.pasteur.fr/kube-system/helm-kubectl:$HELM_VERSION
variables:
CI_DEBUG_TRACE: "true"
TEAM_ID: "df"
script:
- >
helm upgrade --install $CI_PROJECT_NAME-$CI_ENVIRONMENT_NAME ./deploy/df-wiki --namespace=${KUBE_NAMESPACE}
--set registry.image=${CI_REGISTRY_IMAGE}
--set registry.username=${DEPLOY_USER}
--set registry.password=${DEPLOY_TOKEN}
--set registry.host=${CI_REGISTRY}
--set imagePullSecrets[0].name="registry-pull-secret-${CI_COMMIT_REF_SLUG}"
--set image.repository="$CI_REGISTRY_IMAGE/$IMAGE_NAME"
--set image.tag="$CI_COMMIT_SHORT_SHA"
--set image.pullPolicy='Always'
--set env="$ENV"
deploy:dev:
extends: .deploy
rules:
- if: $CI_COMMIT_BRANCH != "main"
needs:
- "build:dev"
variables:
NODE_ENV: "development"
KUBE_NAMESPACE: "defense-finder-dev"
PUBLIC_URL: "defense-finder.dev.pasteur.cloud"
INGRESS_CLASS: "internal"
AUTOSCALE: "true"
AUTSCALING_MIN_REPLICAS: "1"
AUTSCALING_MAX_REPLICAS: "4"
ENV: "development"
environment:
name: k8sdev-01
url: "https://defense-finder.dev.pasteur.cloud"
delete-helm-release:
except:
- master
stage: deploy
only:
- main
when: manual
image: harbor.pasteur.fr/kube-system/helm-kubectl:$HELM_VERSION
variables:
GIT_STRATEGY: none # important to not checkout source when branch is deleted
NAMESPACE: "defense-finder-dev"
environment:
name: "k8sdev-01"
action: stop
script:
- NUXT_APP_BASE_URL=/wiki npm run generate
- rm -rf public
- mv .output/public public
artifacts:
paths:
# The folder that contains the files to be exposed at the Page URL
- public
- echo "Removing $CI_PROJECT_NAME-$CI_ENVIRONMENT_NAME"
- helm delete -n ${NAMESPACE} $CI_PROJECT_NAME-$CI_ENVIRONMENT_NAME
Loading