all repos — caroster @ b26090b70de52e2d40c899bcc021e10b504a7018

[Octree] Group carpool to your event https://caroster.io

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