charts/pipelines-library/templates/pipelines/_common_dotnet.yaml (142 lines of code) (raw):

{{- define "dotnet-6-0-build-common" -}} - name: sonar taskRef: kind: Task name: sonarqube-dotnet runAfter: - build params: - name: SONAR_PROJECT_KEY value: $(params.CODEBASE_NAME) - name: SONAR_PROJECT_NAME value: $(params.CODEBASE_NAME) - name: branch value: $(params.git-source-revision) - name: BASE_IMAGE value: 'epamedp/tekton-dotnet:6.0.2' - name: EXTRA_COMMANDS value: | slnFilename=$(ls *.sln) dotnet sonarscanner begin \ /d:sonar.host.url=${SONAR_HOST_URL} \ /d:sonar.qualitygate.wait=true \ /d:sonar.login=${SONAR_TOKEN} \ /k:${SONAR_PROJECT_KEY} \ /n:${SONAR_PROJECT_NAME} \ /d:sonar.branch.name=${BRANCH} dotnet build ${sln_filename} dotnet sonarscanner end /d:sonar.login=${SONAR_TOKEN} workspaces: - name: source workspace: shared-workspace subPath: source - name: push taskRef: kind: Task name: dotnet runAfter: - sonar params: - name: BASE_IMAGE value: $(params.image) - name: EXTRA_COMMANDS value: | set -x slnFilename=$(ls *.sln) nugetPackagesPath="/tmp/project-nupkgs/" dotnet pack ${slnFilename} --no-build --output ${nugetPackagesPath} "-p:PackageVersion=$(tasks.get-version.results.VERSION)" # Get package version from the get-version task versionLowerCase=$(echo $(tasks.get-version.results.VERSION) | tr '[:upper:]' '[:lower:]') # Define a repository for publishing the package if echo "$versionLowerCase" | grep -q "snapshot"; then ARTIFACT_REPOSITORY_SOURCE="nugetStorageSnapshots" else ARTIFACT_REPOSITORY_SOURCE="nugetStorageReleases" fi # Note: The api-key is only used as a placeholder. # Ref: https://learn.microsoft.com/en-us/azure/devops/artifacts/nuget/dotnet-exe?view=azure-devops#publish-packages dotnet nuget push ${nugetPackagesPath} --source ${ARTIFACT_REPOSITORY_SOURCE} --api-key key workspaces: - name: source workspace: shared-workspace subPath: source {{- end -}} {{- define "dotnet-6-0-review-common" -}} - name: build taskRef: kind: Task name: edp-dotnet runAfter: - get-cache params: - name: BASE_IMAGE value: $(params.image) workspaces: - name: source workspace: shared-workspace - name: sonar taskRef: kind: Task name: sonarqube-dotnet runAfter: - build params: - name: SONAR_PROJECT_KEY value: $(params.CODEBASE_NAME) - name: SONAR_PROJECT_NAME value: $(params.CODEBASE_NAME) - name: target-branch value: $(params.targetBranch) - name: source-branch value: $(params.git-refspec) - name: key-id value: $(params.changeNumber) - name: BASE_IMAGE value: 'epamedp/tekton-dotnet:6.0.2' - name: EXTRA_COMMANDS value: | slnFilename=$(ls *.sln) dotnet sonarscanner begin \ /d:sonar.host.url=${SONAR_HOST_URL} \ /d:sonar.qualitygate.wait=true \ /d:sonar.login=${SONAR_TOKEN} \ /k:${SONAR_PROJECT_KEY} \ /n:${SONAR_PROJECT_NAME} \ /d:sonar.pullrequest.key=${KEY_ID} \ /d:sonar.pullrequest.branch=${SOURCE_BRANCH} \ /d:sonar.pullrequest.base=${TARGET_BRANCH} dotnet build ${sln_filename} dotnet sonarscanner end /d:sonar.login=${SONAR_TOKEN} workspaces: - name: source workspace: shared-workspace subPath: source {{- end -}} {{- define "dockerbuild-verify-dotnet" -}} - name: dockerbuild-verify taskRef: kind: Task name: dockerbuild-verify runAfter: - dotnet-publish - dockerfile-lint workspaces: - name: source workspace: shared-workspace subPath: source {{- end -}} {{- define "build-pipeline-dotnet-image-build-push-common" -}} - name: kaniko-build taskRef: kind: Task name: kaniko runAfter: - dotnet-publish params: - name: codebase-name value: "$(params.CODEBASE_NAME)" - name: image-tag value: "$(tasks.get-version.results.IS_TAG)" - name: image-tar value: "$(params.CODEBASE_NAME)_$(tasks.get-version.results.IS_TAG)" workspaces: - name: source workspace: shared-workspace subPath: source {{- end -}}