代码之家  ›  专栏  ›  技术社区  ›  Yuval Roth

有没有办法将Hudson/Jenkins配置文件保存在源代码管理中?

  •  127
  • Yuval Roth  · 技术社区  · 15 年前

    我刚接触过哈德逊/詹金斯,我想知道是否有办法将哈德逊的配置文件签入源代码管理。

    理想情况下,我希望能够单击用户界面中的某个按钮,显示“保存配置”,并将哈德逊配置文件签入到源代码管理中。

    10 回复  |  直到 6 年前
        1
  •  59
  •   Community CDub    7 年前

    最有用的答案

    有一个插件叫做 SCM Sync configuration plugin .


    原始答案

    看一看 my answer 类似的问题。基本思想是使用 filesystem-scm-plugin 检测对XML文件的更改。您的第二部分将提交对SVN的更改。

    编辑: 如果您找到一种方法来确定要更改的用户,请通知我们。

    编辑2011-01-10 同时还有一个新的插件: SCM同步配置插件 . 目前,它只适用于Subversion和Git,但计划支持更多的存储库。我从0.0.3版开始使用它,到目前为止效果很好。

        2
  •  39
  •   Community CDub    7 年前

    请注意,Vogella最近(2014年1月,与OP的问题2010年1月相比)对此有不同的看法。
    考虑到 SCM Sync configuration plugin 可以生成 很多 承诺。
    因此,他不依赖插件和自动化流程,而是手动管理相同的功能:

    Storing the Job information of Jenkins in Git

    我发现提交的数量有点过多,所以我决定手动控制提交,只保存作业信息,而不保存Jenkins配置。
    将此开关切换到您的Jenkins Jobs目录(Ubuntu: /var/lib/jenkins/jobs )然后表演__ git init 命令。

    我创造了以下 .gitignore 只存储git作业信息的文件:

    builds/
    workspace/
    lastStable
    lastSuccessful
    nextBuildNumber
    modules/
    *.log
    

    现在,您可以根据自己的意愿添加和提交更改。
    如果您将另一个远程程序添加到Git存储库中,您可以将您的配置推送到另一台服务器上。

    Alberto 实际上也建议添加 $JENKINS_HOME ):

    • 詹金斯自己的配置( config.xml )
    • 詹金斯插件配置( hudson*.xml )
    • 用户配置( users/*/config.xml )
        3
  •  17
  •   Emil Sit    14 年前

    要使用git手动管理配置,以下.gitignore文件可能会有所帮助。

    # Miscellaneous Hudson litter
    *.log
    *.tmp
    *.old
    *.bak
    *.jar
    *.json
    
    # Generated Hudson state
    /.owner
    /secret.key
    /queue.xml
    /fingerprints/
    /shelvedProjects/
    /updates/
    
    # Tools that Hudson manages
    /tools/
    
    # Extracted plugins
    /plugins/*/
    
    # Job state
    builds/
    workspace/
    lastStable
    lastSuccessful
    nextBuildNumber
    

    https://gist.github.com/780105 http://bit.ly/i58rg2 了解更多详细信息。

        4
  •  14
  •   btiernay    11 年前

    有一种新的 SCM Sync Configuration plug-in 这正是你想要的。

    SCM同步配置Hudson插件 针对两个主要特点:

    • 将您的config.xml(和其他资源)hudson文件与 单片机存储库
    • 跟踪对包含提交消息的每个文件所做的更改(和作者)

    我还没试过,但看起来很有希望。

        5
  •  4
  •   nepa    8 年前

    我喜欢的方式是排除詹金斯主文件夹中的所有内容 除了 您真正想要的配置文件在您的VCS中。这里是 .gitignore 我使用的文件:

    *
    !.gitignore
    !/jobs/*/*.xml
    !/*.xml
    !/users/*/config.xml
    !*/
    

    这忽略了一切( * 除外) ! ) 吉蒂格诺 它本身、作业/项目、插件以及其他重要的和用户配置文件。

    也值得考虑包括 plugins 文件夹。令人讨厌的更新插件应该包括…

    基本上,这个解决方案使以后的Jenkins/Hudson更新更容易,因为新文件不自动在范围内。你只要把你真正想要的写在纸上就行了。

        6
  •  3
  •   kenorb    6 年前

    您可以在中找到配置文件 Jenkins home folder (例如) /var/lib/jenkins )

    要保存在VCS中,首先以Jenkins身份登录( sudo su - jenkins )并创建其Git凭据:

    git config --global user.name "Jenkins"
    git config --global user.email "jenkins@example.com"
    

    然后初始化、添加和提交基本文件,如:

    git init
    git add config.xml jobs/ .gitconfig
    git commit -m'Adds Jenkins config files' -a
    

    同时考虑创建 .gitignore 忽略以下文件(根据需要自定义):

    # Git untracked files to ignore.
    
    # Site-wide and root configuration files.
    *.xml
    
    # Cache.
    .cache/
    
    # Fingerprint records.
    fingerprints/
    
    # Working directories.
    workspace/
    
    # Secret files.
    secrets/
    secret.*
    *.enc
    *.key
    users/
    id_rsa
    
    # Plugins.
    plugins/
    
    # State files.
    *.state
    
    # Job state files.
    builds/
    lastStable
    lastSuccessful
    nextBuildNumber
    
    # Updates.
    updates/
    
    # Hidden files.
    .*
    # Except git config files.
    !.git*
    !.ssh/
    
    # User content.
    userContent/
    
    # Log files.
    logs/
    *.log
    
    # Miscellaneous litter
    *.tmp
    *.old
    *.bak
    *.jar
    *.json
    *.lastExecVersion
    

    然后添加: git add .gitignore .

    完成后,可以添加作业配置文件,例如

    shopt -s globstar
    git add **/config.xml
    git commit -m'Added job config files' -a
    

    最后,如果需要,添加并提交任何其他文件,然后将其推送到远程存储库,在那里保存配置文件。


    更新Jenkins文件时,需要重新加载它们( 从磁盘重新加载配置 或运行 reload-configuration 来自詹金斯社区。

        7
  •  2
  •   Community CDub    7 年前

    马克的回答( https://stackoverflow.com/a/4066654/142207 )应该适用于SVN和Git(尽管Git配置不适用于我)。

    但是,如果您需要它与Mercurial Repo配合使用,请使用以下脚本创建一个作业:

    hg remove -A || true
    hg add ../../config.xml
    hg add ../../*/config.xml
    if [ ! -z "`hg status -admrn`" ]; then
        hg commit -m "Scheduled commit" -u fill_in_the@blank.com
        hg push
    fi
    
        8
  •  1
  •   Wilfred Hughes AntuanSoft    9 年前

    我已经写了一个插件,让你可以在源代码管理中检查你的Jenkins指令。只需添加一个包含内容的文件

    脚本:
    -使
    -制作测试
    < /代码> 
    
    

    詹金斯会这样做的:

    这样您就可以将Jenkins指令检查到源代码管理中。只需添加一个.jenkins.yml包含以下内容的文件:

    script:
        - make
        - make test
    

    詹金斯会这么做的:

    enter image description here

        9
  •  1
  •   Andrey    7 年前

    更准确 .gitignore ,灵感来自 nepa :

    *
    !.gitignore
    !/jobs/
    !/jobs/*/
    /jobs/*/*
    !/jobs/*/config.xml
    !/users/
    !/users/*/
    /users/*/*
    !/users/*/config.xml
    !/*.xml
    

    它忽略了一切,除了 .xml 配置文件和 吉蒂格诺 本身。 (区别于 尼帕 吉蒂格诺 它不是所有顶级目录的“unignore”( !*/ 喜欢 logs/ , cache/ 等)

        10
  •  0
  •   Morten    13 年前

    我完全登记了哈德逊,你可以用这个作为起点 https://github.com/morkeleb/continuous-delivery-with-hudson

    保持整个哈德逊在吉特是有好处的。所有配置更改都会被记录下来,您可以很容易地在一台机器上测试测试,然后使用git pull更新另一台机器。

    我们将此作为我们在工作中的哈德逊连续交付设置的样板。

    当做 莫滕