[英]How to make jenkins checkout code into a separate directory, without the .git folder?
我是 Jenkins 的新用戶。 我正在運行最新的穩定版 jenkins,安裝在 Windows 上。
我有一個管道作業,當有人提交時,它會將代碼簽出到我們的測試站點。 現在,將文件從工作區復制到測試站點的步驟需要幾分鍾時間。 我想加快提交到測試分支然后看到你的工作出現在測試站點上的反饋循環。 所以我正在做一份新工作,我已將其粘貼在下面。
git結賬本身就非常快。 初始克隆/結帳只需 1 分鍾多一點,隨后的結帳只需幾秒鍾。 所以我想直接去考場結帳。 我知道我可以使用 ws() 或 dir(),但這也會將 .git 文件夾放在那里,這是我不想要的。 所以我試圖設置 GIT_WORK_TREE,這應該會導致文件與 .git 文件夾分開放置。 但我似乎無法將 GIT_WORK_TREE 傳遞給 jenkins/git checkout。 這可能嗎? 下面是我的代碼。 您會看到我已嘗試在兩個地方設置 GIT_WORK_TREE 變量,但它不會導致 git 檢出該文件夾。
最后我的dir
命令確認環境變量已按照我的預期設置。
我后來添加了 withEnv() 只是為了看看是否有幫助,但沒有。
我也試過
extensions: [[[$class: 'RelativeTargetDirectory', relativeTargetDir: 'C:\\.netpub\\wwwroot']]]
但這會將工作樹和 .git 文件夾放在 c:\.netpub\wwwroot 目錄中。
謝謝你的幫助。
pipeline {
agent any
environment {
GIT_WORK_TREE='C:\\Inetpub\\wwwroot'
}
stages {
stage('checkout') {
steps {
withEnv(['GIT_WORK_TREE="C:\\Inetpub\\wwwroot"']) {
checkout(
[
$class: 'GitSCM',
branches: [[name: 'refs/heads/test_branch']],
extensions: [],
userRemoteConfigs: [
[credentialsId: 'bit_bucket_ssh_credentials', url: 'ssh://git@myBitBucketServer/web/wwwroot.git']
]
]
)
}
}
}
stage('test the env variable') {
steps {
bat 'dir %GIT_WORK_TREE%'
println "All done"
}
}
}
}
您可以直接在測試站點文件夾上分配您的工作區,而不是%AGENT_ROOT%
。
使用ws
:分配工作空間。
stages {
stage('checkout') {
steps {
ws('/path/to/site') {
... checkout
作為替代方案,如JENKINS-24502中所述和此處所示,您可以簽出工作區子文件夾中的存儲庫。
如果所述子文件夾是C:\.netpub\wwwroot
的連接點,那可能會起作用。
作為預備步驟:
mklink /J C:\path\to\workspace\wwwroot C:\Inetpub\wwwroot
然后這將檢查 Jenkins 工作區的wwwroot
中的存儲庫(同樣, wwwroot
指向C:\.netpub\wwwroot
)
dir('wwwroot') {
checkout scm
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.