2017-08-29 28 views
1

我使用位於我的git存儲庫中的Jenkins文件。 我已經使用scm指向我的jenkins文件的管道腳本配置了新作業。我試圖在我的Jenkins文件管道腳本中使用git模塊,以便從我的git repo中提取數據,而無需配置pre靜態變量,並且只使用scm中已在配置的管道腳本下的存儲庫URL變量我的工作 。 有一種方法可以從這個插件獲取變量存儲庫URL 而不使用我的Jenkins管道腳本中的參數。jenkins pipeline從scm的管道腳本下獲取版本庫URL變量

我已經試過了環境變量GIT_URL和其他與git從here有關的東西,但這不起作用。

pipeline script from scm

+0

可能的重複[如何獲取生成腳本jenkins多分支工作流項目scm url](https://stackoverflow.com/questions/38254968/how-to-get-scm-url-in-build-script- for-jenkins-multibranch-workflow-project) – BitwiseMan

回答

1

您可以(如果你使用Git的GitSCM實例)找到單片機在scm變量的所有信息。 你可以得到存儲庫URL這樣

def repositoryUrl = scm.userRemoteConfigs[0].url 

但如果你只是要檢出該存儲庫,你可以簡單地調用checkout scm而無需指定其他任何東西。見checkout step

+0

我得到錯誤'org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException',但如果我必須批准這個方法工作..我仍然試圖找到另一種方式沒有批准之前 – dsaydon

+0

@dsaydon我想這是不可能的,如果沒有批准。爲什麼這是你的問題?順便說一句,考慮只使用'checkout scm'。 –

+0

謝謝你的幫助@ vitalii-vitrenko。我找到了另一種方法(不是最好的方法)。我剛剛發佈了它 – dsaydon

1

從這個post我找到了一種方法,你可以使用結賬SCM得到混帳回購協議的URL是這樣的:

checkout scm 
def url = sh(returnStdout: true, script: 'git config remote.origin.url').trim() 

結賬SCM將拉動代碼,我想避免這一點。

所以我發現另一種方式(不漂亮的一個):

node('master'){ 

    try{ 
     GIT_REPO_URL = null 
     command = "grep -oP '(?<=url>)[^<]+' /var/lib/jenkins/jobs/${JOB_NAME}/config.xml" 
     GIT_REPO_URL = sh(returnStdout: true, script: command).trim(); 
     echo "Detected Git Repo URL: ${GIT_REPO_URL}" 
    } 
    catch(err){ 
     throw err 
     error "Colud not find any Git repository for the job ${JOB_NAME}" 
    } 

} 

這是沒有的伎倆我。

相關問題