stages: - test - build - deploy - analyze # # CI variables scopées: # # - NPM_REGISTRY: URL du NPM registry à utiliser (default: https://npm-8ee.hidora.com/) # Test: # stage: test # coverage: /All\sfiles.*?\s+(\d+.\d+)/ # image: node:current-alpine3.12 # rules: # - if: "$CI_PIPELINE_SOURCE =~ merge_request_event" # - if: '$CI_COMMIT_REF_NAME == "master"' # script: # - npm set registry ${NPM_REGISTRY:-https://npm-8ee.hidora.com/} # - npm ci # - npm run test # cache: # key: "$CI_COMMIT_REF_SLUG" # paths: # - node_modules/ # - ~/.npm Build: stage: build image: docker:stable-git rules: - if: '$CI_COMMIT_REF_NAME == "master"' script: - docker login $CI_REGISTRY -u $CI_REGISTRY_USER -p$CI_REGISTRY_PASSWORD - docker pull $CI_REGISTRY_IMAGE:latest || true - docker build --cache-from $CI_REGISTRY_IMAGE:latest -t $CI_REGISTRY_IMAGE:${CI_COMMIT_TAG:-$CI_COMMIT_SHORT_SHA} ${DIRECTORY:-.} - docker push $CI_REGISTRY_IMAGE:${CI_COMMIT_TAG:-$CI_COMMIT_SHORT_SHA} - docker tag $CI_REGISTRY_IMAGE:${CI_COMMIT_TAG:-$CI_COMMIT_SHORT_SHA} $CI_REGISTRY_IMAGE:latest - docker push $CI_REGISTRY_IMAGE:latest # CI variables scopées: # - ENV_CONFIG: Fichier de configuration values.yaml (requis) Deploy to Test: stage: deploy image: git.octree.ch:4567/o/infra/templates/ci/kubectl environment: name: test url: "https://$CI_PROJECT_NAME.dev.octr.ee" rules: - if: '$CI_COMMIT_REF_NAME == "master"' script: - >- helm upgrade --install $CI_PROJECT_NAME k8s/* -n $CI_PROJECT_NAME-$CI_ENVIRONMENT_SLUG --cleanup-on-fail --set strapi.image=$CI_REGISTRY_IMAGE:${CI_COMMIT_TAG:-$CI_COMMIT_SHORT_SHA} --set strapi.host=$CI_ENVIRONMENT_URL -f "$ENV_CONFIG" # CI variables scopées: # - ENV_URL: URL de l'environnement (requis) # - ENV_CONFIG: Fichier de configuration values.yaml (requis) # - ENV_NAMESPACE: Namespace Kubernetes (default: default) Deploy to Staging: stage: deploy image: git.octree.ch:4567/o/infra/templates/ci/kubectl environment: name: staging url: $ENV_URL rules: - if: "$CI_COMMIT_TAG =~ /v.*-rc$/" script: - >- helm upgrade --install $CI_PROJECT_NAME k8s/* -n $ENV_NAMESPACE--cleanup-on-fail --set strapi.image=$CI_REGISTRY_IMAGE:${CI_COMMIT_TAG:-$CI_COMMIT_SHORT_SHA} --set strapi.host=$CI_ENVIRONMENT_URL -f "$ENV_CONFIG" # CI variables scopées: # - ENV_URL: URL de l'environnement (requis) # - ENV_CONFIG: Fichier de configuration values.yaml (requis) # - ENV_NAMESPACE: Namespace Kubernetes (default: default) Deploy to Production: stage: deploy image: git.octree.ch:4567/o/infra/templates/ci/kubectl environment: name: production url: $ENV_URL rules: - if: "$CI_COMMIT_TAG =~ /v.*[^r][^c]$/" when: manual script: - >- helm upgrade --install $CI_PROJECT_NAME k8s/* -n ${ENV_NAMESPACE:-default}--cleanup-on-fail --set strapi.image=$CI_REGISTRY_IMAGE:${CI_COMMIT_TAG:-$CI_COMMIT_SHORT_SHA} --set strapi.host=$CI_ENVIRONMENT_URL -f "$ENV_CONFIG" # CI variables scopées: # - SONAR_URL: URL de SonarQube (requis) # - SONAR_LOGIN: Login pour SonarQube (requis) # - SONAR_SOURCE: Dossier à scanner (default: .) Code Quality: stage: analyze image: ciricihq/gitlab-sonar-scanner rules: - if: '$CI_PIPELINE_SOURCE =~ "schedule"' script: - >- sonar-scanner -Dsonar.host.url=$SONAR_URL -Dsonar.projectKey=$CI_PROJECT_NAME-$CI_ENVIRONMENT_SLUG -Dsonar.login=$SONAR_LOGIN -Dsonar.sources=${SONAR_SOURCE:-.}