all repos — caroster @ 955891fae42bf2f1767a355b90a74b23f5a7bab0

[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:
 32    name: gcr.io/kaniko-project/executor:debug
 33    entrypoint: [""]
 34  rules:
 35    - if: '$CI_COMMIT_REF_NAME == "master"'
 36    - if: "$CI_COMMIT_TAG =~ /v.*$/"
 37  script:
 38    - echo "45.66.221.1 npm-8ee.hidora.com" >> /etc/hosts
 39    - echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
 40    - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination $CI_REGISTRY_IMAGE:${CI_COMMIT_TAG:-$CI_COMMIT_SHORT_SHA}
 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  image: mwienk/jelastic-cli
100  script:
101    - /root/jelastic/users/authentication/signin --login $JELASTIC_LOGIN --password $JELASTIC_PASSWORD --platformUrl ${JELASTIC_HOSTER:-app.hidora.com}
102    - /root/jelastic/environment/control/redeploycontainerbyid --envName $JELASTIC_ENVNAME --nodeId $JELASTIC_NODEID --tag ${CI_COMMIT_TAG:-$CI_COMMIT_SHORT_SHA} --useExistingVolumes ${USE_EXISTING_VOLUME:-true}
103
104# CI variables:
105# - SONAR_URL: URL de SonarQube (requis)
106# - SONAR_LOGIN: Login pour SonarQube (requis)
107# - SONAR_SOURCE: Dossier à scanner (default: .)
108Code Quality:
109  stage: analyze
110  image: ciricihq/gitlab-sonar-scanner
111  rules:
112    - if: '$CI_COMMIT_REF_NAME == "master"'
113      when: manual
114  script:
115    - >-
116      sonar-scanner -Dsonar.host.url=$SONAR_URL 
117      -Dsonar.projectKey=$CI_PROJECT_NAME
118      -Dsonar.login=$SONAR_LOGIN -Dsonar.sources=${SONAR_SOURCE:-.}