173 lines
		
	
	
		
			8.4 KiB
		
	
	
	
		
			Groovy
		
	
	
	
	
	
			
		
		
	
	
			173 lines
		
	
	
		
			8.4 KiB
		
	
	
	
		
			Groovy
		
	
	
	
	
	
| #!/usr/bin/env groovy
 | |
| /* groovylint-disable CompileStatic, ConsecutiveStringConcatenation, DuplicateNumberLiteral, DuplicateStringLiteral, LineLength, NestedBlockDepth, NoDef, VariableTypeRequired */
 | |
| import groovy.transform.Field
 | |
| 
 | |
| @Field String _DDrive = 'D:/'
 | |
| @Field String _AssemblyName = '...'
 | |
| @Field String _TargetLocation = '...'
 | |
| @Field String _GitCommitSeven = '...'
 | |
| @Field String _GitName = 'MET08DDUPSP1TBI'
 | |
| @Field String _TestProjectDirectory = 'Adaptation'
 | |
| @Field String _AgentStaging = 'mestsa07ec-ecmeseaf'
 | |
| @Field String _DDriveNet = "${_DDrive}Framework4.8"
 | |
| @Field String _AgentProduction = 'messa08ec-ecmeseaf'
 | |
| @Field String _AgentDevelopment = 'mestsa003-mesedasvc'
 | |
| @Field String _ProgramFilesDotnet = 'C:/Program Files/dotnet/dotnet.exe'
 | |
| @Field String _ProgramFilesMSBuild = 'C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/Bin/MSBuild.exe'
 | |
| 
 | |
| pipeline {
 | |
|     agent {
 | |
|         label env.JENKINS_ENVIRONMENT == 'Development' ? _AgentDevelopment : env.JENKINS_ENVIRONMENT == 'Staging' ? _AgentStaging : env.JENKINS_ENVIRONMENT == 'Production' ? _AgentProduction : 'Else'
 | |
|     }
 | |
|     parameters {
 | |
|         string(name: 'GIT_SERVER', defaultValue: env.JENKINS_ENVIRONMENT == 'Development' ? 'mestsa003.infineon.com' : 'mestsa07ec.ec.local', description: 'git server')
 | |
|         string(name: 'DEFAULT_FILE_SERVER', defaultValue: env.JENKINS_ENVIRONMENT == 'Development' ? 'messv02ecc1_ec_local' : 'messv02ecc1.ec.local', description: 'Default file server...')
 | |
|     }
 | |
|     stages {
 | |
|         // stage('Git') {
 | |
|         //     steps {
 | |
|         //         bat(returnStatus: true, script: 'git init')
 | |
|         //         bat(returnStatus: true, script: 'git remote add origin \\\\' + params.GIT_SERVER + '\\Git\\' + _GitName + '.git')
 | |
|         //         bat(returnStatus: true, script: 'git pull origin master')
 | |
|         //     }
 | |
|         // }
 | |
|         stage('Setup') {
 | |
|             steps {
 | |
|                 script {
 | |
|                     _AssemblyName = "${env.JOB_NAME}"
 | |
|                     // _GitCommitSeven = '1234567'
 | |
|                     _GitCommitSeven = env.GIT_COMMIT.substring(0, 7)
 | |
|                     def files = findFiles(glob: '*.csproj')
 | |
|                     if (files.length != 1) {
 | |
|                         error("Build failed because couldn't find a *.csproj file")
 | |
|                     }
 | |
|                     echo """
 | |
|                         ${files[0].name}
 | |
|                         ${files[0].path}
 | |
|                         ${files[0].directory}
 | |
|                         ${files[0].length}
 | |
|                         ${files[0].lastModified}
 | |
|                         """
 | |
|                     _AssemblyName = files[0].name.split('[.]csproj')[0]
 | |
|                     _TargetLocation = "\\\\${params.DEFAULT_FILE_SERVER}\\EC_EAFRepository\\${env.JENKINS_ENVIRONMENT}\\DeploymentStorage\\Adaptation_${_AssemblyName}"
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|         stage('Info') {
 | |
|             steps {
 | |
|                 echo "_AssemblyName ${_AssemblyName}" // ...
 | |
|                 echo "BUILD_NUMBER ${env.BUILD_NUMBER}" // 11
 | |
|                 echo "DEFAULT_FILE_SERVER ${params.DEFAULT_FILE_SERVER}" // 11
 | |
|                 echo "GIT_BRANCH ${env.GIT_BRANCH}" // origin/master
 | |
|                 echo "GIT_COMMIT ${env.GIT_COMMIT}" // 73b814069f2cf0173a62a8228815a9bc9ba93c41
 | |
|                 echo "GIT_SERVER ${params.GIT_SERVER}" // ...
 | |
|                 echo "GIT_URL ${env.GIT_URL}" // D:\ProgramData\Git\....git
 | |
|                 echo "JENKINS_ENVIRONMENT ${env.JENKINS_ENVIRONMENT}" // 11
 | |
|                 echo "JENKINS_URL ${env.JENKINS_URL}" // http://localhost:8080/
 | |
|                 echo "JOB_NAME ${env.JOB_NAME}" // ...
 | |
|                 echo "WORKSPACE ${env.WORKSPACE}" // D:\.jenkins\_\...
 | |
|             }
 | |
|         }
 | |
|         // stage('Restore') {
 | |
|         //     steps {
 | |
|         //         bat(returnStatus: true, script: 'dotnet --info')
 | |
|         //     }
 | |
|         // }
 | |
|         stage('Safe storage of app secrets') {
 | |
|             steps {
 | |
|                 dir(_TestProjectDirectory) {
 | |
|                     bat(returnStatus: true, script: '"' + _ProgramFilesDotnet + '" ' +
 | |
|                         'user-secrets init')
 | |
|                     bat(returnStatus: true, script: '"' + _ProgramFilesDotnet + '" ' +
 | |
|                         'user-secrets set "BuildNumber" "' + env.BUILD_NUMBER + '"')
 | |
|                     bat(returnStatus: true, script: '"' + _ProgramFilesDotnet + '" ' +
 | |
|                         'user-secrets set "GitCommitSeven" "' + _GitCommitSeven + '"')
 | |
|                     bat(returnStatus: true, script: '"' + _ProgramFilesDotnet + '" ' +
 | |
|                         'user-secrets set "Server" "' + params.DEFAULT_FILE_SERVER + '"')
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|         stage('Core Build') {
 | |
|             steps {
 | |
|                 echo "Build number is ${currentBuild.number}"
 | |
|                 dir(_TestProjectDirectory) {
 | |
|                     bat(returnStatus: true, script: '"' + _ProgramFilesDotnet + '" ' +
 | |
|                         'build --runtime win-x64 --self-contained --verbosity quiet')
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|         // stage('Test') {
 | |
|         //     options {
 | |
|         //         timeout(time: 10, unit: 'MINUTES')
 | |
|         //     }
 | |
|         //     steps {
 | |
|         //         dir(_TestProjectDirectory) {
 | |
|         //             bat('dotnet --info')
 | |
|         //         }
 | |
|         //     }
 | |
|         // }
 | |
|         stage('Framework Build') {
 | |
|             steps {
 | |
|                 echo "Build number is ${currentBuild.number}"
 | |
|                 bat(returnStatus: true, script: '"' + _ProgramFilesMSBuild + '" ' +
 | |
|                     '/target:Restore ' +
 | |
|                     '/detailedsummary ' +
 | |
|                     '/consoleloggerparameters:PerformanceSummary;ErrorsOnly; ' +
 | |
|                     '/property:Configuration=Debug;TargetFrameworkVersion=v4.8 ' +
 | |
|                     _AssemblyName + '.csproj')
 | |
|                 bat(returnStatus: true, script: '"' + _ProgramFilesMSBuild + '" ' +
 | |
|                     '/target:Build ' +
 | |
|                     '/detailedsummary ' +
 | |
|                     '/consoleloggerparameters:PerformanceSummary;ErrorsOnly; ' +
 | |
|                     '/property:Configuration=Debug;TargetFrameworkVersion=v4.8 ' +
 | |
|                     _AssemblyName + '.csproj')
 | |
|             }
 | |
|         }
 | |
|         stage('Commit Id') {
 | |
|             steps {
 | |
|                 dir('bin/Debug') {
 | |
|                     writeFile file: "${_AssemblyName}.txt", text: "${env.GIT_COMMIT}-${env.BUILD_NUMBER}-${env.GIT_URL}"
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|         stage('Package') {
 | |
|             steps {
 | |
|                 fileOperations([fileZipOperation(folderPath: 'bin/Debug', outputFolderPath: "${_DDriveNet}/${_GitCommitSeven}-${env.BUILD_NUMBER}-${env.JOB_NAME}-Debug")])
 | |
|                 fileOperations([fileCopyOperation(excludes: '', flattenFiles: true, includes: "${_AssemblyName}*", renameFiles: false, sourceCaptureExpression: '', targetLocation: "${_DDriveNet}/${_GitCommitSeven}-${env.BUILD_NUMBER}-${env.JOB_NAME}-Debug", targetNameExpression: '')])
 | |
|             }
 | |
|         }
 | |
|         // stage('Force Fail') {
 | |
|         //     steps {
 | |
|         //         error("Build failed because of this and that..")
 | |
|         //     }
 | |
|         // }
 | |
|         stage('Copy Files to: file-share') {
 | |
|             steps {
 | |
|                 dir('bin/Debug') {
 | |
|                     fileOperations([fileCopyOperation(excludes: '', flattenFiles: true, includes: "${_AssemblyName}*.txt", renameFiles: false, sourceCaptureExpression: '', targetLocation: _TargetLocation, targetNameExpression: '')])
 | |
|                     fileOperations([fileCopyOperation(excludes: '', flattenFiles: true, includes: "${_AssemblyName}*.dll", renameFiles: false, sourceCaptureExpression: '', targetLocation: _TargetLocation, targetNameExpression: '')])
 | |
|                     fileOperations([fileCopyOperation(excludes: '', flattenFiles: true, includes: "${_AssemblyName}*.exe", renameFiles: false, sourceCaptureExpression: '', targetLocation: _TargetLocation, targetNameExpression: '')])
 | |
|                     fileOperations([fileCopyOperation(excludes: '', flattenFiles: true, includes: "${_AssemblyName}*.pdb", renameFiles: false, sourceCaptureExpression: '', targetLocation: _TargetLocation, targetNameExpression: '')])
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|     }
 | |
|     post {
 | |
|         always {
 | |
|             dir('bin') {
 | |
|                 deleteDir()
 | |
|             }
 | |
|             dir('obj') {
 | |
|                 deleteDir()
 | |
|             }
 | |
|             dir(_TestProjectDirectory + '/bin') {
 | |
|                 deleteDir()
 | |
|             }
 | |
|             dir(_TestProjectDirectory + '/obj') {
 | |
|                 deleteDir()
 | |
|             }
 | |
|             cleanWs()
 | |
|         }
 | |
|     }
 | |
| }
 |