{"id":31634,"date":"2022-10-18T19:03:05","date_gmt":"2022-10-18T19:03:05","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=31634"},"modified":"2022-12-23T05:45:48","modified_gmt":"2022-12-23T05:45:48","slug":"gitlab-tutorials-ci-for-automation-and-net-framework-sonarqube-codecoverage","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/gitlab-tutorials-ci-for-automation-and-net-framework-sonarqube-codecoverage\/","title":{"rendered":"Gitlab Tutorials: CI for automation and .Net Framework Sonarqube Codecoverage"},"content":{"rendered":"\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">variables:\r\n  SONAR_USER_HOME: <span class=\"hljs-string\">\"${CI_PROJECT_DIR}\/.sonar\"<\/span>  <span class=\"hljs-comment\"># Defines the location of the analysis task cache<\/span>\r\n  GIT_DEPTH: <span class=\"hljs-string\">\"0\"<\/span>  <span class=\"hljs-comment\"># Tells git to fetch all the branches of the project, required by the analysis task<\/span>\r\n\r\nstages:\r\n  - build\r\n  - test\r\n  - analyze\r\n\r\nbefore_script:\r\n - Set-Variable -Name <span class=\"hljs-string\">\"time\"<\/span> -Value (Get-Date -Format <span class=\"hljs-string\">\"%H:%m\"<\/span>)\r\n - <span class=\"hljs-keyword\">echo<\/span> ${time}\r\n - <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"started by ${GITLAB_USER_NAME}\"<\/span>\r\n\r\n\r\n\r\nbuild:\r\n  stage: build\r\n  only:\r\n    - branches\r\n  script:\r\n    - <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"running scripts in the build job\"<\/span>\r\n    - choco feature enable -n=allowGlobalConfirmation\r\n    - choco install netfx<span class=\"hljs-number\">-4.6<\/span><span class=\"hljs-number\">.2<\/span>-devpack\r\n    - choco install dotnetcore-sdk\r\n    - nuget restore -ConfigFile .\\nuget.config \r\n    - msbuild <span class=\"hljs-string\">\".\\ProcessFlowModuleDotNetV1\\ProcessFlowModule.csproj\"<\/span> \/p:DeployOnBuild=<span class=\"hljs-keyword\">true<\/span> \/p:PublishProfile=<span class=\"hljs-string\">\"Local Publish\"<\/span> \/p:WarningLevel=<span class=\"hljs-number\">0<\/span>\r\n    - dotnet build <span class=\"hljs-string\">\".\\ProcessFlowModuleDotNetV1.Tests\\ProcessFlowModule.Tests.csproj\"<\/span> --configuration Release\r\n  artifacts:\r\n    paths:\r\n      - Publish\r\n      - .\\ProcessFlowModule.Tests\\bin\\Release\\netcoreapp3<span class=\"hljs-number\">.1<\/span>\\**\r\n      - .\\ProcessFlowModule\r\n    expire_in: <span class=\"hljs-number\">1<\/span> day\r\n  after_script:\r\n    - Remove-Item -Recurse -Force .\\packages\\\r\n\r\n\r\nsonarcloud-check:\r\n  image:\r\n    name: sonarsource\/sonar-scanner-cli:latest\r\n    entrypoint: &#91;<span class=\"hljs-string\">\"\"<\/span>]\r\n  cache:\r\n    key: <span class=\"hljs-string\">\"${CI_JOB_NAME}\"<\/span>\r\n    paths:\r\n      - .sonar\/cache\r\n  dependencies:\r\n    - build\r\n  script:    \r\n    - SonarScanner.MSBuild.exe begin \/k:<span class=\"hljs-string\">\"project_key\"<\/span> \/d:sonar.host.url=<span class=\"hljs-string\">\"https:\/\/sonarcloud.io\"<\/span> \/d:sonar.login=<span class=\"hljs-string\">\"jjhyd8b6500d75a8af6f7c3a3726a2b8782a39a439a7\"<\/span>   \r\n    - nuget restore -ConfigFile .\\nuget.config\r\n    - MsBuild.exe .\/ProcessFlowModule \/t:Rebuild\r\n    - SonarScanner.MSBuild.exe end \/d:sonar.login=<span class=\"hljs-string\">\"jjhyd8b6500d75a8af6f7c3a3726a2b8782a39a439a7\"<\/span>\r\n  only:\r\n    - branches\r\n\r\nHere I <span class=\"hljs-keyword\">try<\/span> with <span class=\"hljs-keyword\">default<\/span> script:\r\n    sonarcloud-check:\r\n  stage: test\r\n  image:\r\n    name: sonarsource\/sonar-scanner-cli:latest\r\n    entrypoint: &#91;<span class=\"hljs-string\">\"\"<\/span>]\r\n  cache:\r\n    key: <span class=\"hljs-string\">\"${CI_JOB_NAME}\"<\/span>\r\n    paths:\r\n      - .sonar\/cache\r\n  script:\r\n    - sonar-scanner<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","_joinchat":[],"footnotes":""},"categories":[2],"tags":[],"class_list":["post-31634","post","type-post","status-publish","format-standard","hentry","category-uncategorised"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/31634","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=31634"}],"version-history":[{"count":1,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/31634\/revisions"}],"predecessor-version":[{"id":31635,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/31634\/revisions\/31635"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=31634"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=31634"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=31634"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}