2012-07-02 52 views
0

在Jenkins的工作中,我設置了兩個存儲庫:本地和遠程。計劃是定期檢查遠程設備,當它檢測到更改時,將其推送到本地,然後從定製分佈式測試系統獲取對測試的控制並將結果返回給Jenkins。Jenkins不斷重置工作區的.git/config

這一切都適用於一個問題。每次我重新啓動Jenkins時,它會從作業工作區的.git/config文件中刪除遠程(或本地,取決於天氣)回購,我必須手動進行編輯。

如何配置了工作:

  • 回購網址:/path/to/local
  • 名稱:localrepo
  • 回購網址:[email protected]:therepo
  • 名稱:origin

和產生.git/config僅包含:

[remote "localrepo"] 
    fetch = +refs/heads/*:refs/remotes/localrepo/* 
    url = /path/to/local 

對我做錯了什麼在這裏的任何想法?

+0

我不能再發生這種情況。關閉它? – Kostas

回答

0

我假設您使用的是Jenkins git插件。我認爲你需要讓git插件控制本地git倉庫,而不是在Jenkins後面進行任何手動配置。

當您使用遠程git存儲庫配置Jenkins作業時,可以讓詹金斯輪詢更改,或者您可以安排將通知發送給Jenkins,例如,從一個git鉤子腳本。

當詹金斯檢測到任何你已經告訴它建立的分支的變化時,它會更新Jenkins工作區中的git repo,然後準備執行作業配置的構建步驟。

工作區中的git repo由Jenkins git插件以某種非標準方式管理。您沒有完全指定git中的文件如何發送到自定義分佈式測試系統,因此我無法推測Jenkins工作區是否可用於您,還是需要進一步處理。

要真正回答你的問題「我在做什麼錯」:你應該停止手工更改Jenkins工作區中本地git repo的配置,並讓git插件管理它。如果這不是一個好的解決方案,你可能需要停止使用git插件。

由於您似乎願意手動進行大量回購管理,因此我認爲您需要git插件的唯一方法是輪詢遠程回購,即檢測更改。

您可以使用例如https://wiki.jenkins-ci.org/display/JENKINS/script-scm,它允許您編寫自定義腳本來管理輪詢和結帳。

另一種選擇是忘記輪詢,並從遠程git倉庫的提交後腳本腳本中簡單觸發新作業。這將允許您在作業配置中爲SCM指定「無」,並完全控制本地回購管理。

我自己可能會檢查是否有可能與詹金斯的git插件合作,並使用本地的git回購原樣。 git插件爲您提供了一些不錯的東西,比如每個構建中的更改列表,如果作業沒有SCM,則不會有這些列表。

+0

這就是我所做的:(1)安裝Jenkins和插件。 (2)成立一份新工作。 (3)設置新工作的git設置。 (4)啓動新的構建。直到我發現我設置的兩個遙控器(通過jenkins的配置)只有一個存在(獲取輪詢以進行更改)之前,我沒有插手工作區。另一個遙控器由實際分發和運行規格的腳本使用。 – Kostas