![](/img/trans.png)
[英]Global environment variable are resolving by Jenkins Extended Email notification
[英]How to get environment variable in Jenkins email notification?
在 Jenkins 作業配置中,我在構建部分的命令窗口中編寫了一個 bat 腳本。 在其中一個腳本命令中,我將環境變量設置為服務器機器中的系統環境變量,如下所示:
setx Analysis_URL "http://analysis_url/analysis/%analysis_id%.html
我現在的任務是將此環境變量值返回給 Jenkins,並將其包含在我的構建后通知電子郵件內容中。 有簡單的方法嗎?
在我的研究中,我遇到了插件 envInject 但我認為它用於設置環境變量,對嗎?
更新 1:
事實證明,可以通過電子郵件內容中的簡單 $Analysis_URL 訪問該變量,但是,這引發了另一個問題,因為我的環境變量在每次構建作業后都會更改其值,但由於 Jenkins 只獲取系統環境變量的副本,我在每次構建我的電子郵件內容后保持相同的變量值,它只會在重新啟動 Jenkins 后發生變化。 有沒有辦法讓 Jenkins 更新系統環境變量?
更新 2:
EnvInject 插件完成了我想要的工作。 這些是我執行的步驟:
echo ANALYSIS_URL=$ANALYSIS_URL > my.properties
$WORKSPACE/my.properties
當前分析網址: $ANALYSIS_URL
您是否嘗試過env.Analysis_URL
來訪問您的環境變量?
在構建后電子郵件中打印變量:
echo count=$count > count.txt
echo distinctcount=$distinctcount > distinctcount.txt
${WORKSPACE}/count.txt
並對第二個文件
${WORKSPACE}/distinctcount.txt
執行相同${WORKSPACE}/distinctcount.txt
(因為我有兩個變量)
注 1: ${WORKSPACE}
是 jenkins 的密碼並列出位置)
注 2:您實際上可以通過使用echo distinctcount=$distinctcount >> count.txt
將兩個變量放在一個文件中
Count total:$count Distinct Count: $distinctcount
注意確保您在電子郵件設置底部的“高級設置”下將電子郵件設置為“始終”,否則只會在第一次成功或失敗時發送電子郵件:
您可以在帶有 sh 的腳本中使用環境變量和全局變量,例如:
pipeline {
environment {
APP_VERSION = "1.2.1"
}
post {
success {
script {
sh "sed -i 's#%BUILD_URL#$BUILD_URL#g' .jenkins/email.html"
sh "sed -i 's#%APP_VERSION#${APP_VERSION}#g' .jenkins/email.html"
emailext attachLog: true, mimeType: 'text/html', body: '${FILE, path=".jenkins/email.html"}', subject: '[$BUILD_STATUS] $PROJECT_NAME', to: 'youremail@mail.com'
}
}
}
}
您可以使用: ${yourDefinedVriableName}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.