簡體   English   中英

如何在 Jenkins 電子郵件通知中獲取環境變量?

[英]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 插件完成了我想要的工作。 這些是我執行的步驟:

  1. 構建步驟“批處理命令窗口”:添加命令:

echo ANALYSIS_URL=$ANALYSIS_URL > my.properties

  1. 構建步驟“注入環境變量”:在“屬性文件路徑”字段中

$WORKSPACE/my.properties

  1. 構建后操作:“可編輯電子郵件通知”,字段“默認內容”:

當前分析網址: $ANALYSIS_URL

您是否嘗試過env.Analysis_URL來訪問您的環境變量?

在構建后電子郵件中打印變量:

  1. 將此添加到 build: execute shell 部分:
echo count=$count > count.txt
echo distinctcount=$distinctcount > distinctcount.txt

執行shell部分

  1. 將此添加到“屬性文件路徑”下的注入環境變量部分:
${WORKSPACE}/count.txt

屬性文件路徑 並對第二個文件${WORKSPACE}/distinctcount.txt執行相同${WORKSPACE}/distinctcount.txt (因為我有兩個變量)

注 1: ${WORKSPACE}是 jenkins 的密碼並列出位置)

注 2:您實際上可以通過使用echo distinctcount=$distinctcount >> count.txt將兩個變量放在一個文件中

  1. 調用“可編輯電子郵件通知”的“默認內容”部分中的變量:
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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM