kind: pipeline
type: docker
name: default

trigger:
	event:
		- push

steps:
	- name: build
    		image: mcr.microsoft.com/dotnet/sdk:6.0
   		 commands:
      			- cd Sources/
      			- dotnet restore MySolution.sln
      			- dotnet build MySolution.sln -c Release --no-restore

	- name: tests
    		image: mcr.microsoft.com/dotnet/sdk:6.0
    		commands:
      			- cd Sources/
      			- dotnet restore MySolution.sln
      			- dotnet test MySolution.sln --no-restore
    		depends_on: [build]

	- name: code-analysis
    		image: hub.codefirst.iut.uca.fr/thomas.bellembois/codefirst-dronesonarplugin-dotnet6
    		commands:
      			- cd Sources/
      			- dotnet restore MySolution.sln
      			- dotnet sonarscanner begin /k:$REPO_NAME /d:sonar.host.url=$$$${PLUGIN_SONAR_HOST} /d:sonar.coverageReportPaths="coveragereport/SonarQube.xml" /d:sonar.coverage.exclusions="Tests/**" /d:sonar.login=$$$${PLUGIN_SONAR_TOKEN} 
      			- dotnet build MySolution.sln -c Release --no-restore
      			- dotnet test MySolution.sln --logger trx --no-restore /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura --collect "XPlat Code Coverage"
      			- reportgenerator -reports:"**/coverage.cobertura.xml" -reporttypes:SonarQube -targetdir:"coveragereport"
      			- dotnet publish MySolution.sln -c Release --no-restore -o $CI_PROJECT_DIR/build/release
      			- dotnet sonarscanner end /d:sonar.login=$$$${PLUGIN_SONAR_TOKEN}
    		secrets: [ SECRET_SONAR_LOGIN ]
    		settings:
      		# accessible en ligne de commande par $${PLUGIN_SONAR_HOST}
      		sonar_host: https://codefirst.iut.uca.fr/sonar/
      		# accessible en ligne de commande par $${PLUGIN_SONAR_TOKEN}
      		sonar_token:
        		from_secret: SECRET_SONAR_LOGIN
    		depends_on: [tests]
	- name: generate-and-deploy-docs
    		image: hub.codefirst.iut.uca.fr/thomas.bellembois/codefirst-docdeployer
    		failure: ignore
    		volumes:
      			- name: docs
        		path: /docs
    		commands:
      			- /entrypoint.sh
    		when:
      			branch:
        			- master
    		depends_on: [ build ]

	- name: docker-build
    		image: plugins/docker
    		settings:
       			dockerfile: Sources/Dockerfile
       			context: .
       			registry: hub.codefirst.iut.uca.fr
       			repo: hub.codefirst.iut.uca.fr/my-group/my-application-client
       			username:
         			from_secret: SECRET_REGISTRY_USERNAME
       			password:
         			from_secret: SECRET_REGISTRY_PASSWORD
    		when:
      			branch:
        			- master


# The volumes declaration appear at the end of the file, after all steps
volumes:
- name: docs
	temp: {}