kind: pipeline
type: docker
name: HeartWave

trigger:
  event:
    - push

steps:
  
  # Test ✔️
  - name: test
    image: composer:2.6
    commands:
      - cd Sources
       # Installe les dépendances PHP si nécessaire
      - composer install --no-interaction
      - ./vendor/bin/phpunit tests

  # Sonar static code analisis deployment
  # TODO : use an image that already have unzip
  - name: code-analysis
    image: php:8.1-cli
    environment:
      SONAR_TOKEN:
        from_secret: SONAR_TOKEN
    commands:
      - apt-get update && apt-get install -y curl unzip
      - export SONAR_SCANNER_VERSION=4.7.0.2747
      - export SONAR_SCANNER_HOME=$HOME/.sonar/sonar-scanner-$SONAR_SCANNER_VERSION-linux
      - curl --create-dirs -sSLo $HOME/.sonar/sonar-scanner.zip https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-$SONAR_SCANNER_VERSION-linux.zip
      - unzip -o $HOME/.sonar/sonar-scanner.zip -d $HOME/.sonar/
      - export PATH=$SONAR_SCANNER_HOME/bin:$PATH
      - export SONAR_SCANNER_OPTS="-server"
      - cd Sources
      - sonar-scanner -D sonar.projectKey=HeartTrack -D sonar.host.url=https://codefirst.iut.uca.fr/sonar
    depends_on: [ test ]

  # build image and push on the registry ✔️        
  - name: docker-build-and-push
    image: plugins/docker
    settings:
      dockerfile: Sources/config/Dockerfile
      context: Sources
      registry: hub.codefirst.iut.uca.fr
      repo: hub.codefirst.iut.uca.fr/david.d_almeida/web
      username:
        from_secret: SECRET_REGISTRY_USERNAME
      password:
        from_secret: SECRET_REGISTRY_PASSWORD

  - name: notify
    image: ruby:2.1
    when:
      status: [ success ]
      ref:
        include:
          - refs/tags/*-demo
    commands:
      - sh ./notifymail.sh
    depends_on: [ docker-build-and-push ]
