.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# CI variables scopées:
40# - ENV_CONFIG: Fichier de configuration values.yaml (requis)
41Deploy to Test:
42 stage: deploy
43 image: git.octree.ch:4567/o/infra/templates/ci/kubectl
44 environment:
45 name: test
46 url: "https://$CI_PROJECT_NAME.dev.octr.ee"
47 rules:
48 - if: '$CI_COMMIT_REF_NAME == "master"'
49 script:
50 - >-
51 helm upgrade --install $CI_PROJECT_NAME k8s/*
52 -n $CI_PROJECT_NAME-$CI_ENVIRONMENT_SLUG --cleanup-on-fail
53 --set strapi.image=$CI_REGISTRY_IMAGE:${CI_COMMIT_TAG:-$CI_COMMIT_SHORT_SHA}
54 --set strapi.host=$CI_ENVIRONMENT_URL
55 -f "$ENV_CONFIG"
56
57# CI variables scopées:
58# - ENV_URL: URL de l'environnement (requis)
59# - ENV_CONFIG: Fichier de configuration values.yaml (requis)
60# - ENV_NAMESPACE: Namespace Kubernetes (default: default)
61Deploy to Staging:
62 stage: deploy
63 image: git.octree.ch:4567/o/infra/templates/ci/kubectl
64 environment:
65 name: staging
66 url: $ENV_URL
67 rules:
68 - if: "$CI_COMMIT_TAG =~ /v.*-rc$/"
69 script:
70 - >-
71 helm upgrade --install $CI_PROJECT_NAME k8s/*
72 -n $ENV_NAMESPACE--cleanup-on-fail
73 --set strapi.image=$CI_REGISTRY_IMAGE:${CI_COMMIT_TAG:-$CI_COMMIT_SHORT_SHA}
74 --set strapi.host=$CI_ENVIRONMENT_URL
75 -f "$ENV_CONFIG"
76
77# CI variables scopées:
78# - ENV_URL: URL de l'environnement (requis)
79# - ENV_CONFIG: Fichier de configuration values.yaml (requis)
80# - ENV_NAMESPACE: Namespace Kubernetes (default: default)
81Deploy to Production:
82 stage: deploy
83 image: git.octree.ch:4567/o/infra/templates/ci/kubectl
84 environment:
85 name: production
86 url: $ENV_URL
87 rules:
88 - if: "$CI_COMMIT_TAG =~ /v.*[^r][^c]$/"
89 when: manual
90 script:
91 - >-
92 helm upgrade --install $CI_PROJECT_NAME k8s/*
93 -n ${ENV_NAMESPACE:-default}--cleanup-on-fail
94 --set strapi.image=$CI_REGISTRY_IMAGE:${CI_COMMIT_TAG:-$CI_COMMIT_SHORT_SHA}
95 --set strapi.host=$CI_ENVIRONMENT_URL
96 -f "$ENV_CONFIG"
97
98# CI variables scopées:
99# - SONAR_URL: URL de SonarQube (requis)
100# - SONAR_LOGIN: Login pour SonarQube (requis)
101# - SONAR_SOURCE: Dossier à scanner (default: .)
102Code Quality:
103 stage: analyze
104 image: ciricihq/gitlab-sonar-scanner
105 rules:
106 - if: '$CI_PIPELINE_SOURCE =~ "schedule"'
107 script:
108 - >-
109 sonar-scanner -Dsonar.host.url=$SONAR_URL
110 -Dsonar.projectKey=$CI_PROJECT_NAME-$CI_ENVIRONMENT_SLUG
111 -Dsonar.login=$SONAR_LOGIN -Dsonar.sources=${SONAR_SOURCE:-.}