all repos — caroster @ 5f8e31991ef930ce60d0ff07ba64991d2ee7e714

[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  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:-.}