Skip to content
Snippets Groups Projects
.gitlab-ci.yml 4.11 KiB
Newer Older
Bastien DUMONT's avatar
Bastien DUMONT committed
default:
  services:
Bastien DUMONT's avatar
Bastien DUMONT committed
    - name: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/docker:25-dind
Bastien DUMONT's avatar
Bastien DUMONT committed
      alias: docker
  tags:
    - build-push-to-registry
Bastien DUMONT's avatar
Bastien DUMONT committed
  DEPENDENCY_PROXY: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/
Bastien DUMONT's avatar
Bastien DUMONT committed
  - build
  - build-push
  image: node:20-alpine
  before_script:
    - apk add git
    - apk add bash
  script:
    - yarn
    - yarn build
  only:
    - dev
    - merge_requests

build-push:
  stage: build-push
Bastien DUMONT's avatar
Bastien DUMONT committed
  image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/docker:25
  variables:
    DOCKER_TLS_CERTDIR: ''
    DOCKER_HOST: tcp://docker:2375/
    DOCKER_DRIVER: overlay2
  needs: []
  only:
    - master
    - dev
  script:
    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
    - docker build --pull -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG" --build-arg conf=prod .
    - docker push "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG"

sonarqube:
  stage: quality
  only:
    - merge_requests
Bastien DUMONT's avatar
Bastien DUMONT committed
  image: ${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}/sonarsource/sonar-scanner-cli:4
  variables:
    SONAR_USER_HOME: '${CI_PROJECT_DIR}/.sonar' # Defines the location of the analysis task cache
    GIT_DEPTH: '0' # T
  cache:
    key: '${CI_JOB_NAME}'
    paths:
      - .sonar/cache
  script:
    - >
      sonar-scanner
      -Dsonar.projectName="ecolyo-backoffice-front"
      -Dsonar.projectVersion=1.0
      -Dsonar.sourceEncoding=UTF-8
      -Dsonar.projectBaseDir=.
      -Dsonar.host.url=${SONAR_URL}
      -Dsonar.projectKey=${CI_PROJECT_PATH_SLUG}
      -Dsonar.login=${SONAR_TOKEN}
      -Dsonar.cpd.exclusions=tests/**,src/**/*.spec.ts*
      -Dsonar.qualitygate.wait=true

deploy_rec:
  stage: deploy
  environment:
    name: Recette - Ecolyo Agent
    url: https://ecolyo-agent-rec.apps.grandlyon.com/
  before_script:
    - NAMESPACE=ns-ecolyo-bo-r01-syn
    - sed -i "s/{{IMAGE_TAG}}/dev/" ./k8s/deployments/ecolyo-agent-client-deployment.yml
    - export KUBECONFIG=$KUBE_CONFIG_REC
  script:
    - find k8s/ -name '*.yml' -exec sed -i "s/{{NS}}/$NAMESPACE/g" {} \;
Rémi PAILHAREY's avatar
Rémi PAILHAREY committed
    - sed -i "s/{{HOSTNAME}}/ecolyo-agent-rec.apps.grandlyon.com/g" ./k8s/routes/ecolyo-agent-client-route.yml
    - CA=$(awk 'NF {sub(/\r/, ""); printf "%s\\\\r\\\\n",$0;}' $APPS_CERT_CA);
    - CRT=$(awk 'NF {sub(/\r/, ""); printf "%s\\\\r\\\\n",$0;}' $APPS_CERT_CRT);
    - KEY=$(awk 'NF {sub(/\r/, ""); printf "%s\\\\r\\\\n",$0;}' $APPS_TLS_PRIVATE_KEY);
Hugo NOUTS's avatar
Hugo NOUTS committed
    - sed -i -e "s|#CA#|$CA|" -e "s|#CRT#|$CRT|" -e "s|#KEY#|$KEY|" ./k8s/routes/ecolyo-agent-client-route.yml
    - oc create secret -n $NAMESPACE docker-registry llle-project --docker-server=$CI_REGISTRY --docker-username=llle-project --docker-password=$READ_REGISTRY_TOKEN --dry-run=client -o yaml | oc apply -f -

    - oc apply -f k8s/deployments
    - oc apply -f k8s/services
Rémi PAILHAREY's avatar
Rémi PAILHAREY committed
    - oc apply -f k8s/routes

    - oc delete pod -l app=ecolyo-agent-client
  tags:
    - ns-ecolyo-bo-r01-syn
  only:
    - dev

deploy_prod:
  stage: deploy
  environment:
    name: Prod - Ecolyo Agent
    url: https://ecolyo-agent.apps.grandlyon.com/
  before_script:
    - NAMESPACE=ns-ecolyo-bo-p01-syn
    - sed -i "s/{{IMAGE_TAG}}/master/" ./k8s/deployments/ecolyo-agent-client-deployment.yml
    - export KUBECONFIG=$KUBE_CONFIG_PROD
  script:
    - find k8s/ -name '*.yml' -exec sed -i "s/{{NS}}/$NAMESPACE/g" {} \;
Rémi PAILHAREY's avatar
Rémi PAILHAREY committed
    - sed -i "s/{{HOSTNAME}}/ecolyo-agent.apps.grandlyon.com/g" ./k8s/routes/ecolyo-agent-client-route.yml
Hugo NOUTS's avatar
Hugo NOUTS committed
    - CA=$(awk 'NF {sub(/\r/, ""); printf "%s\\\\r\\\\n",$0;}' $APPS_CERT_CA);
    - CRT=$(awk 'NF {sub(/\r/, ""); printf "%s\\\\r\\\\n",$0;}' $APPS_CERT_CRT);
    - KEY=$(awk 'NF {sub(/\r/, ""); printf "%s\\\\r\\\\n",$0;}' $APPS_TLS_PRIVATE_KEY);
    - sed -i -e "s|#CA#|$CA|" -e "s|#CRT#|$CRT|" -e "s|#KEY#|$KEY|" ./k8s/routes/ecolyo-agent-client-route.yml
    - oc create secret -n $NAMESPACE docker-registry llle-project --docker-server=$CI_REGISTRY --docker-username=llle-project --docker-password=$READ_REGISTRY_TOKEN --dry-run=client -o yaml | oc apply -f -

    - oc apply -f k8s/deployments
    - oc apply -f k8s/services
Rémi PAILHAREY's avatar
Rémi PAILHAREY committed
    - oc apply -f k8s/routes
  tags:
    - ns-ecolyo-bo-p01-syn
  only:
    - master