123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- node {
- environment {
- static_BUILD_NUMBER = '9'
- //dotnet = 'C:/Program Files/dotnet/sdk/3.0.100-preview8-013656/dotnet.exe'
- }
-
- stage 'Checkout'
- checkout scm
- stage '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'
- }
|