| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 | 
node {	environment {        static_BUILD_NUMBER = '9'        //dotnet = 'C:/Program Files/dotnet/sdk/3.0.100-preview8-013656/dotnet.exe'        }	stage 'Checkout'			checkout scmstage 'Build'	// clean artifacts folder, otherwise version file from previous build may still there.	dir('sln_build/LiteFccCore3') {    					deleteDir()	}		def jkBuildNumber = env.BUILD_NUMBER		def buildTimeStr = new Date().format('yyyy-MM-dd_HH-mm-ss')	echo "Jenkins env.BUILD_NUMBER: " + jkBuildNumber + ", buildTimeStr: " + buildTimeStr	def manualVersionFromFile = readFile("version.txt")	manualVersionFromFile = manualVersionFromFile.replaceAll(~/\n/, "").trim()	echo "Manual Version read from file version.txt is: " + manualVersionFromFile			currentBuild.description = "manual Ver: " + manualVersionFromFile				def assemblyVersionStr = manualVersionFromFile + "." + jkBuildNumber	echo "AssemblyVersionStr (manualVersion + JenkinsBuildNumber) set to: " + assemblyVersionStr		//bat 'dotnet restore LiteFccCore.sln'	//bat 'dotnet build -c release LiteFccCoreMain/LiteFccCoreMain.csproj'	//def dotnetPublishCommandText = "dotnet publish /p:AssemblyVersion=\"${env.BUILD_NUMBER}\" -c release LiteFccCoreMain/LiteFccCoreMain.csproj"	       	def dotnetPublishCommandText_win_x64 = "dotnet publish -f netcoreapp3.1 -r win-x64 --self-contained false /p:AssemblyVersion=\"${assemblyVersionStr}\" /p:Version=\"${assemblyVersionStr}\" /p:FileVersion=\"${assemblyVersionStr}\" -c release LiteFccCore.sln -o sln_build/LiteFccCore3/win_x64"	bat dotnetPublishCommandText_win_x64		def dotnetPublishCommandText_win_x86 = "dotnet publish -f netcoreapp3.1 -r win-x86 --self-contained false /p:AssemblyVersion=\"${assemblyVersionStr}\" /p:Version=\"${assemblyVersionStr}\" /p:FileVersion=\"${assemblyVersionStr}\" -c release LiteFccCore.sln -o sln_build/LiteFccCore3/win_x86"	bat dotnetPublishCommandText_win_x86		def dotnetPublishCommandText_linux_arm = "dotnet publish -f netcoreapp3.1 -r linux-arm --self-contained false /p:AssemblyVersion=\"${assemblyVersionStr}\" /p:Version=\"${assemblyVersionStr}\" /p:FileVersion=\"${assemblyVersionStr}\" -c release LiteFccCore.sln -o sln_build/LiteFccCore3/linux_armhf"	bat dotnetPublishCommandText_linux_arm		def dotnetPublishCommandText_linux_arm_64 = "dotnet publish -f netcoreapp3.1 -r linux-arm64 --self-contained false /p:AssemblyVersion=\"${assemblyVersionStr}\" /p:Version=\"${assemblyVersionStr}\" /p:FileVersion=\"${assemblyVersionStr}\" -c release LiteFccCore.sln -o sln_build/LiteFccCore3/linux_arm64"	bat dotnetPublishCommandText_linux_arm_64		//def dotnetPublishCommandText_linux_arm_self_contained = "dotnet publish -f netcoreapp3.1 -r linux-arm --self-contained true /p:AssemblyVersion=\"${assemblyVersionStr}\" /p:Version=\"${assemblyVersionStr}\" /p:FileVersion=\"${assemblyVersionStr}\" -c release LiteFccCore.sln -o sln_build/LiteFccCore3/linux_arm_self_contained"	//bat dotnetPublishCommandText_linux_arm_self_contained  stage 'UnitTests'	bat returnStatus: true, script: "dotnet test \"${workspace}/LiteFccCore.sln\" --logger \"trx;LogFileName=unit_tests.xml\" "	step([$class: 'MSTestPublisher', testResultsFile:"**/unit_tests.xml", failOnError: true, keepLongStdio: true])    stage 'Archive'		def releaseNoteFileName = manualVersionFromFile + "." + jkBuildNumber + "_(" + buildTimeStr + ")_ReleaseNote.txt"	echo "ReleaseNote file name will be set to (ManualVersion + JenkinsBuildNumber + buildTime): " + releaseNoteFileName			releaseNoteFileContentHeader = "BUILD_NUMBER: " + env.BUILD_NUMBER + ", BUILD_ID: " + env.BUILD_ID + ", BUILD_URL: " + env.BUILD_URL + ", NODE_NAME: " + env.NOTDE_NAME + ", JOB_NAME: " + env.JOB_NAME	//echo releaseNoteFileContentHeader	echo "ReleaseNoteFileContentHeader: " + releaseNoteFileContentHeader	latestCommit = bat(returnStdout: true, script: "git log -n 80")	releaseNoteFileContent = releaseNoteFileContentHeader + "\r\n\r\n\r\n" + latestCommit	// echo shortCommit	// prepare a release note file in artifacts root folder	writeFile(file: releaseNoteFileName, text: releaseNoteFileContent, encoding: "UTF-8") 	// write the releaseNote file into publish folder, need modify, will break for other net core version (from 2.1)	writeFile(file: "sln_build/LiteFccCore3/" + releaseNoteFileName, text: releaseNoteFileContent, encoding: "UTF-8") 	archiveArtifacts artifacts: 'sln_build/LiteFccCore3/**', casesensitive: false	archiveArtifacts artifacts: releaseNoteFileName, casesensitive: false}def sendmail(jobName,committer){	def mailRecipients = "YourEmail1@company.com YourEmail2@company.com YourEmail3@company.com"	emailext body: '''${JELLY_SCRIPT,template="PlaygroundMerge"}''',                mimeType: 'text/html',                subject: "Merge job create by ${committer} status - ${currentBuild.result}",                to: "${mailRecipients};${committer}",                replyTo: "${mailRecipients}",                recipientProviders: [[$class: 'CulpritsRecipientProvider']]}def changelist() {    def changes = ""    currentBuild.changeSets.each { set ->        set.each { entry ->            changes += "${entry.commitId} by ${entry.author.fullName}\n"        }    }    return changes}def notifyBitbucket(String state) {	println "Notify Bitbucket With " + state + ", Commit = " + "${Commit}"    if('SUCCESS' == state || 'FAILED' == state) {        currentBuild.result = state         // Set result of currentBuild !Important!	}		notifyBitbucket commitSha1: '${Commit}', 					credentialsId: 'Bitbucket_PG_Global_For_Notification_User_Pass', 					disableInprogressNotification: false, 					considerUnstableAsSuccess: false, 					ignoreUnverifiedSSLPeer: true, 					includeBuildNumberInKey: false, 					prependParentProjectKey: false, 					projectKey: '', 					stashServerBaseUrl: 'http://www.your_BitBucket_Server:7990'}
 |