all repos — caroster @ 9a5f5065875933848a30775a26e9727e87ea6b47

[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# - STRAPI_CHART_VERSION: Version du chart Strapi à utiliser
 86# - ENV_URL [scopée]: URL de l'environnement (requis)
 87# - ENV_CONFIG [scopée]: Fichier de configuration values.yaml (requis)
 88# - ENV_NAMESPACE [scopée]: Namespace Kubernetes (default: default)
 89Deploy to Production:
 90  extends: .deploy
 91  environment:
 92    name: production
 93    url: $ENV_URL
 94  rules:
 95    - if: "$CI_COMMIT_TAG =~ /v.*[^r][^c]$/"
 96      when: manual
 97
 98# CI variables:
 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:-.}