.gitlab-ci.yml (view raw)
1stages:
2 - test
3 - build
4 - deploy
5 - analyze
6
7# # CI variables scopées:
8# # - NPM_REGISTRY: URL du NPM registry à utiliser (default: https://npm-8ee.hidora.com/)
9# Test:
10# stage: test
11# coverage: /All\sfiles.*?\s+(\d+.\d+)/
12# image: node:current-alpine3.12
13# rules:
14# - if: "$CI_PIPELINE_SOURCE =~ merge_request_event"
15# - if: '$CI_COMMIT_REF_NAME == "master"'
16# script:
17# - npm set registry ${NPM_REGISTRY:-https://npm-8ee.hidora.com/}
18# - npm ci
19# - npm run test
20# cache:
21# key: "$CI_COMMIT_REF_SLUG"
22# paths:
23# - node_modules/
24# - ~/.npm
25
26Build:
27 stage: build
28 image: docker:stable-git
29 rules:
30 - if: '$CI_COMMIT_REF_NAME == "master"'
31 script:
32 - docker login $CI_REGISTRY -u $CI_REGISTRY_USER -p$CI_REGISTRY_PASSWORD
33 - docker pull $CI_REGISTRY_IMAGE:latest || true
34 - docker build --cache-from $CI_REGISTRY_IMAGE:latest -t $CI_REGISTRY_IMAGE:${CI_COMMIT_TAG:-$CI_COMMIT_SHORT_SHA} ${DIRECTORY:-.}
35 - docker push $CI_REGISTRY_IMAGE:${CI_COMMIT_TAG:-$CI_COMMIT_SHORT_SHA}
36 - docker tag $CI_REGISTRY_IMAGE:${CI_COMMIT_TAG:-$CI_COMMIT_SHORT_SHA} $CI_REGISTRY_IMAGE:latest
37 - docker push $CI_REGISTRY_IMAGE:latest
38
39.deploy:
40 stage: deploy
41 image: git.octree.ch:4567/o/infra/templates/ci/kubectl
42 variables:
43 HELM_EXPERIMENTAL_OCI: 1
44 script:
45 - helm registry login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
46 - helm chart pull git.octree.ch:4567/o/charts/strapi:$STRAPI_CHART_VERSION
47 - helm chart export git.octree.ch:4567/o/charts/strapi:$STRAPI_CHART_VERSION -d charts
48 - >-
49 helm upgrade --install --create-namespace $CI_PROJECT_NAME charts/*
50 -n $ENV_NAMESPACE --cleanup-on-fail
51 --set strapi.image=$CI_REGISTRY_IMAGE:${CI_COMMIT_TAG:-$CI_COMMIT_SHORT_SHA}
52 --set strapi.host=$CI_ENVIRONMENT_URL
53 -f "$ENV_CONFIG"
54
55# CI variables:
56# - STRAPI_CHART_VERSION: Version du chart Strapi à utiliser
57# - ENV_CONFIG [scopée]: Fichier de configuration values.yaml (requis)
58Deploy to Test:
59 extends: .deploy
60 environment:
61 name: test
62 url: "https://$CI_PROJECT_NAME.dev.octr.ee"
63 rules:
64 - if: '$CI_COMMIT_REF_NAME == "master"'
65 variables:
66 ENV_NAMESPACE: $CI_PROJECT_NAME-$CI_ENVIRONMENT_SLUG
67
68# CI variables:
69# - STRAPI_CHART_VERSION: Version du chart Strapi à utiliser
70# - ENV_URL [scopée]: URL de l'environnement (requis)
71# - ENV_CONFIG [scopée]: Fichier de configuration values.yaml (requis)
72# - ENV_NAMESPACE [scopée]: Namespace Kubernetes (default: default)
73Deploy to Staging:
74 extends: .deploy
75 environment:
76 name: staging
77 url: $ENV_URL
78 rules:
79 - if: "$CI_COMMIT_TAG =~ /v.*-rc$/"
80
81# CI variables:
82# - STRAPI_CHART_VERSION: Version du chart Strapi à utiliser
83# - ENV_URL [scopée]: URL de l'environnement (requis)
84# - ENV_CONFIG [scopée]: Fichier de configuration values.yaml (requis)
85# - ENV_NAMESPACE [scopée]: Namespace Kubernetes (default: default)
86Deploy to Production:
87 extends: .deploy
88 environment:
89 name: production
90 url: $ENV_URL
91 rules:
92 - if: "$CI_COMMIT_TAG =~ /v.*[^r][^c]$/"
93 when: manual
94
95# CI variables:
96# - SONAR_URL: URL de SonarQube (requis)
97# - SONAR_LOGIN: Login pour SonarQube (requis)
98# - SONAR_SOURCE: Dossier à scanner (default: .)
99Code Quality:
100 stage: analyze
101 image: ciricihq/gitlab-sonar-scanner
102 rules:
103 - if: '$CI_PIPELINE_SOURCE =~ "schedule"'
104 script:
105 - >-
106 sonar-scanner -Dsonar.host.url=$SONAR_URL
107 -Dsonar.projectKey=$CI_PROJECT_NAME-$CI_ENVIRONMENT_SLUG
108 -Dsonar.login=$SONAR_LOGIN -Dsonar.sources=${SONAR_SOURCE:-.}