.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/)
9Test:
10 stage: test
11 coverage: /All\sfiles.*?\s+(\d+.\d+)/
12 image: node:current-alpine3.12
13 only:
14 - merge_requests
15 - master
16 script:
17 - npm set registry ${NPM_REGISTRY:-https://npm-8ee.hidora.com/}
18 - apk add --no-cache python3
19 - cd app
20 - npm i
21 - npm run lint
22 # - npm run test
23 cache:
24 key: "$CI_COMMIT_REF_SLUG"
25 paths:
26 - node_modules/
27 - ~/.npm
28
29Build:
30 stage: build
31 image: docker:stable-git
32 environment:
33 REACT_APP_URL: $ENV_URL
34 rules:
35 - if: '$CI_COMMIT_REF_NAME == "master"'
36 script:
37 - docker login $CI_REGISTRY -u $CI_REGISTRY_USER -p$CI_REGISTRY_PASSWORD
38 - docker pull $CI_REGISTRY_IMAGE:latest || true
39 - docker build --cache-from $CI_REGISTRY_IMAGE:latest -t $CI_REGISTRY_IMAGE:${CI_COMMIT_TAG:-$CI_COMMIT_SHORT_SHA} ${DIRECTORY:-.}
40 - docker push $CI_REGISTRY_IMAGE:${CI_COMMIT_TAG:-$CI_COMMIT_SHORT_SHA}
41 - docker tag $CI_REGISTRY_IMAGE:${CI_COMMIT_TAG:-$CI_COMMIT_SHORT_SHA} $CI_REGISTRY_IMAGE:latest
42 - docker push $CI_REGISTRY_IMAGE:latest
43
44.deploy:
45 stage: deploy
46 image: git.octree.ch:4567/o/infra/templates/ci/kubectl
47 variables:
48 HELM_EXPERIMENTAL_OCI: 1
49 script:
50 - helm registry login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
51 - helm chart pull git.octree.ch:4567/o/charts/strapi:$STRAPI_CHART_VERSION
52 - helm chart export git.octree.ch:4567/o/charts/strapi:$STRAPI_CHART_VERSION -d charts
53 - >-
54 helm upgrade --install --create-namespace $CI_PROJECT_NAME charts/*
55 -n $ENV_NAMESPACE --cleanup-on-fail
56 --set strapi.image=$CI_REGISTRY_IMAGE:${CI_COMMIT_TAG:-$CI_COMMIT_SHORT_SHA}
57 --set strapi.host=$CI_ENVIRONMENT_URL
58 -f "$ENV_CONFIG"
59
60# CI variables:
61# - STRAPI_CHART_VERSION: Version du chart Strapi à utiliser
62# - ENV_CONFIG [scopée]: Fichier de configuration values.yaml (requis)
63Deploy to Test:
64 extends: .deploy
65 environment:
66 name: test
67 url: "https://$CI_PROJECT_NAME.dev.octr.ee"
68 rules:
69 - if: '$CI_COMMIT_REF_NAME == "master"'
70 variables:
71 ENV_NAMESPACE: $CI_PROJECT_NAME-$CI_ENVIRONMENT_SLUG
72
73# CI variables:
74# - STRAPI_CHART_VERSION: Version du chart Strapi à utiliser
75# - ENV_URL [scopée]: URL de l'environnement (requis)
76# - ENV_CONFIG [scopée]: Fichier de configuration values.yaml (requis)
77# - ENV_NAMESPACE [scopée]: Namespace Kubernetes (default: default)
78Deploy to Staging:
79 extends: .deploy
80 environment:
81 name: staging
82 url: $ENV_URL
83 rules:
84 - if: "$CI_COMMIT_TAG =~ /v.*-rc$/"
85
86# CI variables:
87# - ENV_URL [scopée]: URL de l'environnement (requis)
88# - JELASTIC_HOSTER: nom de domaine de l'API Jelastic (requis)
89# - JELASTIC_PASSWORD: Mot de passe pour l'API Jelastic (requis)
90# - JELASTIC_LOGIN: Nom d'utilisateur pour l'API Jelastic (requis)
91# - JELASTIC_ENVNAME: Nom de l'environnement ciblé (requis)
92# - JELASTIC_NODEID: Node ID du container à déployer dans l'environnement (requis)
93# - USE_EXISTING_VOLUME: Indique s'il faut garder les volumes déclarés ou non
94Deploy to Production:
95 stage: deploy
96 environment:
97 name: production
98 url: $ENV_URL
99 # rules:
100 # - if: "$CI_COMMIT_TAG =~ /v.*[^r][^c]$/"
101 # when: manual
102 image: mwienk/jelastic-cli
103 when: manual
104 variables:
105 CI_COMMIT_TAG: latest # Avant de mettre en place le système de tag, on redéploie toujours le tag latest
106 script:
107 - /root/jelastic/users/authentication/signin --login $JELASTIC_LOGIN --password $JELASTIC_PASSWORD --platformUrl ${JELASTIC_HOSTER:-app.hidora.com}
108 - /root/jelastic/environment/control/redeploycontainerbyid --envName $JELASTIC_ENVNAME --nodeId $JELASTIC_NODEID --tag ${CI_COMMIT_TAG:-$CI_COMMIT_SHORT_SHA} --useExistingVolumes ${USE_EXISTING_VOLUME:-true}
109
110# CI variables:
111# - SONAR_URL: URL de SonarQube (requis)
112# - SONAR_LOGIN: Login pour SonarQube (requis)
113# - SONAR_SOURCE: Dossier à scanner (default: .)
114Code Quality:
115 stage: analyze
116 image: ciricihq/gitlab-sonar-scanner
117 rules:
118 - if: '$CI_COMMIT_REF_NAME == "master"'
119 when: manual
120 script:
121 - >-
122 sonar-scanner -Dsonar.host.url=$SONAR_URL
123 -Dsonar.projectKey=$CI_PROJECT_NAME
124 -Dsonar.login=$SONAR_LOGIN -Dsonar.sources=${SONAR_SOURCE:-.}