all repos — caroster @ v0.2.0

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