From 54c514d2dea410675e235beda7615e192d77212a Mon Sep 17 00:00:00 2001 From: dohodin Date: Tue, 10 Oct 2023 13:46:03 +0200 Subject: [PATCH] add starlark file --- .drone.star | 155 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 154 insertions(+), 1 deletion(-) diff --git a/.drone.star b/.drone.star index 0e5eabd..cd0183c 100644 --- a/.drone.star +++ b/.drone.star @@ -18,4 +18,157 @@ def main(ctx): pipeline["steps"].append(build); - return pipeline; + tests = { + "name": "tests", + "image": "mcr.microsoft.com/dotnet/sdk:7.0", + "commands":[ + "cd Sources/", + "dotnet restore OpenLibraryWS_Wrapper.sln", + "dotnet test OpenLibraryWS_Wrapper.sln --no-restore" + ], + "depends_on": ["build"] + }; + + pipeline["steps"].append(tests); + + sonar = { + "name": "code-inspection", + "image": "hub.codefirst.iut.uca.fr/marc.chevaldonne/codefirst-dronesonarplugin-dotnet7", + "settings":{ + "sonar_host": "https://codefirst.iut.uca.fr/sonar/", + "sonar_token":{ + "from_secret": "SECRET_SONAR_LOGIN" + } + }, + "commands":[ + "cd Sources/", + "dotnet restore OpenLibraryWS_Wrapper.sln", + "dotnet sonarscanner begin /k:Dotnet_Dorian_HODIN /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 OpenLibraryWS_Wrapper.sln -c Release --no-restore", + "dotnet test OpenLibraryWS_Wrapper.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 OpenLibraryWS_Wrapper.sln -c Release --no-restore -o CI_PROJECT_DIR/build/release", + "dotnet sonarscanner end /d:sonar.login=$${PLUGIN_SONAR_TOKEN}" + ] + }; + + pipeline["steps"].append(sonar); + + doc = { + + "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" + }, + "event": "push", + "depends_on": ["build,tests"] + }; + + pipeline["steps"].append(doc); + + swagger = { + + "name": "generate-swashbuckle", + "image": "mcr.microsoft.com/dotnet/sdk:7.0", + "commands":[ + "cd Sources/OpenLibraryWrapper", + "dotnet tool install --version 6.5.0 Swashbuckle.AspNetCore.Cli --tool-path /bin", + "/bin/swagger tofile --output /drone/src/swagger.json bin/Release/net7.0/OpenLibraryWrapper.dll v1" + ], + "depends_on": ["build"] + }; + + pipeline["steps"].append(swagger); + + deploy_swagger = { + + "name": "deploy-swagger", + "image": "hub.codefirst.iut.uca.fr/maxime.batista/codefirst-docdeployer", + "commands":[ + "/entrypoint.sh --type swagger --loc /drone/src/swagger.json" + ], + "depends_on": ["generate-swashbuckle"] + }; + + pipeline["steps"].append(deploy_swagger); + + docker_build = { + + "name": "docker-build-and-push", + "image": "plugins/docker", + "settings":{ + "dockerfile": "Sources/Dockerfile", + "context": "Sources/", + "registry": "hub.codefirst.iut.uca.fr", + "repo": "hub.codefirst.iut.uca.fr/dorian.hodin/openlibraryws_wrapper", + "username":{ + "from_secret": "SECRET_REGISTRY_USERNAME" + }, + "password":{ + "from_secret": "SECRET_REGISTRY_PASSWORD" + } + }, + "depends_on": ["build,tests"] + }; + + pipeline["steps"].append(docker_build); + + deploy = { + + "name": "deploy-app", + "image": "hub.codefirst.iut.uca.fr/thomas.bellembois/codefirst-dockerproxy-clientdrone:latest", + "environment":{ + "IMAGENAME": "hub.codefirst.iut.uca.fr/dorian.hodin/openlibraryws_wrapper", + "CONTAINERNAME": "app_dotnet", + "COMMAND": "create", + "OVERWRITE": "true", + "CODEFIRST_CLIENTDRONE_ENV_DB_DATABASE":{ + "from_secret": "db_host" + } + }, + "depends_on": ["docker-build-and-push"] + }; + + pipeline["steps"].append(deploy); + + bdd = { + + "name": "deploy-mariadb", + "image": "hub.codefirst.iut.uca.fr/thomas.bellembois/codefirst-dockerproxy-clientdrone:latest", + "environment":{ + "IMAGENAME": "mariadb:10", + "CONTAINERNAME": "db_dotnet", + "COMMAND": "create", + "OVERWRITE": "true", + "PRIVATE": "true", + "CODEFIRST_CLIENTDRONE_ENV_MARIADB_ROOT_PASSWORD":{ + "from_secret": "db_root_password" + }, + "CODEFIRST_CLIENTDRONE_ENV_MARIADB_DATABASE":{ + "from_secret": "db_database" + }, + "CODEFIRST_CLIENTDRONE_ENV_MARIADB_USER":{ + "from_secret": "db_user" + }, + "CODEFIRST_CLIENTDRONE_ENV_MARIADB_PASSWORD":{ + "from_secret": "db_password" + }, + }, + "depends_on": ["deploy-app"] + }; + + pipeline["steps"].append(bdd); + + if ctx.build.branch == "master": + return pipeline + else: + return {}