我有一個基于 Jenkins 檔案的 MultiBranch Pipeline,該檔案明確克隆了由引數提供的另一個存盤庫。我看到它在嘗試請求憑據git-lfs作為git checkout -f <HASH>命令的一部分后凍結并超時。
如何檢出具有憑證 git lfs 訪問權限的存盤庫?
詹金斯檔案:
stages {
stage('Fetch Source Code') {
steps{
dir('repo') {
git branch: "${params.Branch}", credentialsId: 'git-creds', url: "${params.RepoURL}"
}
}
}
詹金斯控制臺:
> git init /home/jenkins/agent/workspace/<PIPELINE_NAME>/repo # timeout=10
Fetching upstream changes from <HTTPS_PRIVATE_GITLAB_URL>
> git --version # timeout=10
> git --version # 'git version 2.30.2'
using GIT_ASKPASS to set credentials Credentials to access git resources
> git fetch --tags --force --progress -- <HTTPS_PRIVATE_GITLAB_URL> refs/heads/*:refs/remotes/origin/* # timeout=10
Avoid second fetch
Checking out Revision HASH (refs/remotes/origin/master)
> git config remote.origin.url <HTTPS_PRIVATE_GITLAB_URL> # timeout=10
> git config --add remote.origin.fetch refs/heads/*:refs/remotes/origin/* # timeout=10
> git rev-parse refs/remotes/origin/master^{commit} # timeout=10
> git config core.sparsecheckout # timeout=10
> git checkout -f <HASH> # timeout=10
Times out
uj5u.com熱心網友回復:
經過足夠的除錯。我發現發生了什么事。
默認情況下,Git 插件不會向大多數 git 命令提供憑據(僅獲取它出現),因此當它執行 a 時,它會checkout凍結等待憑據訪問 LFS。
通過良好的設計,雖然令我沮喪的是,git/jenkins 不會在機器上的任何地方保存密碼,并且 LFS 物件作為提取的一部分被下載。設定 Jenkins 在結帳后執行 LFS 拉取并不能解決問題,因為它試圖在結帳期間執行 LFS 拉取。
解決方案是GIT_LFS_SKIP_SMUDGE=1在全域環境變數中設定并將 LFS pull 添加到 checkout 步驟以顯式拉入 LFS 物件。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/404450.html
標籤:
