【问题标题】:How to restore jobs in Jenkins?如何恢复詹金斯的工作?
【发布时间】:2014-07-10 20:05:43
【问题描述】:

docs 中,它说您所要做的就是复制文件或文件夹。但是当我这样做然后尝试通过重新启动服务并使用 GUI Manage Jenkins > Reload Configuration from Disk 进行恢复时(顺便说一句,有没有办法以编程方式执行此操作?),只有凭据被恢复(它们来自我也复制)。未列出任何职位。

有什么想法吗?

编辑:

我创建了一个目录 /var/lib/jenkins/jobs/myjob 并在其中删除了“config.xml”文件。该文件曾经位于我服务器的前一个实例中,位于同一位置。

我还将旧的“credentials.xml”放入 /var/lib/jenkins。效果很好,我可以在 Web 界面中看到凭据。

【问题讨论】:

  • 重启服务就足够了,你也不需要重新加载配置。您能否提供有关您复制的文件、复制它们的位置以及将它们复制到的目标的更多详细信息?您还可以在 Jenkins 日志文件中找到一些线索。
  • @gareth_bowles 我编辑了我的帖子,请查看。
  • @gareth_bowles 仔细阅读日志解决了这个问题,谢谢!看我的回答。

标签: jenkins


【解决方案1】:

要在 Jenkins 中恢复作业,您只需将 jobs/ 文件夹复制到新的 Jenkins HOME 文件夹(仅 config.xml 文件就足够了)并确保您拥有所有必要的插件(在 Linux 中为 /var/lib/jenkins/)。

对于 Jenkins 根配置,您需要从主 HOME 目录复制config.xml(例如/var/lib/jenkins/config.xml)。所有其他 XML 文件只是站点范围和插件配置文件(也可以复制)。

更多详情,请查看以下 Jenkins 目录结构:

JENKINS_HOME
 +- config.xml     (jenkins root configuration)
 +- *.xml          (other site-wide configuration files)
 +- userContent    (files in this directory will be served under your http://server/userContent/)
 +- fingerprints   (stores fingerprint records)
 +- plugins        (stores plugins)
 +- workspace (working directory for the version control system)
     +- [JOBNAME] (sub directory for each job)
 +- jobs
     +- [JOBNAME]      (sub directory for each job)
         +- config.xml     (job configuration file)
         +- latest         (symbolic link to the last successful build)
         +- builds
             +- [BUILD_ID]     (for each build)
                 +- build.xml      (build result summary)
                 +- log            (log file)
                 +- changelog.xml  (change log)

来源:Administering Jenkins - JENKINS_HOME directory

另见:Is there a way to keep Hudson / Jenkins configuration files in source control?


要从磁盘重新加载配置,请使用 Manage Jenkins 中的 Reload Configuration from Disk 选项。在 Jenkins CLI 中,尝试reload-configuration 命令丢弃内存中所有加载的数据并从文件系统重新加载所有内容。

【讨论】:

    【解决方案2】:

    我使用部署用户部署了作业(以及插件和凭据),但忘记将所有权设置为 jenkins:jenkins

    我通过阅读/var/log/jenkins/jenkins.log 的 Jenkins 日志意识到这一点,有一些“权限被拒绝”消息。

    【讨论】:

      【解决方案3】:

      如果您错误地更改了 Jenkins 中的作业配置服务/docker 仍在运行,您可以使用 job configuration history plugin 从 Web GUI 恢复配置

      Jenkins -> Job -> Job Config History -> 选择单选按钮 正确版本和错误版本 -> 显示差异(xml 差异版本) -> 选择正确的 版本并按“恢复此配置”

      【讨论】:

        【解决方案4】:

        如果你想复制其他 jenkins 的作业,

        只需将 $JENKINS_HOME/jobs//config.xml 复制到新的 $JENKINS_HOME/jobs,然后从磁盘重新加载配置。

        【讨论】:

        • 这就是我所做的,但就像我说的那样,它不起作用。我在 Web GUI 中看不到任何作业,只有凭据。
        • @ChocoDeveloper 你能在你的 $JENKINS_HOME 中显示工作结构吗?
        【解决方案5】:

        我认为从上面的答案中您没有复制单个作业的配置文件。 JENKINS_HOME 目录的布局如下:

        $JENKINS_HOME 包含系统级配置文件,例如 Jenkins master config.xml 和 credentials.xml

        $JENKINS_HOME/jobs 在每个作业的单独子目录中包含所有单独的作业配置和构建数据,例如对于“myjob”作业,您将拥有 $JENKINS_HOME/jobs/myjob/config.xml 以及其他存储单个构建数据的文件。

        所以如果你想恢复系统配置和所有没有构建历史的作业,你需要复制:

        $JENKINS_HOME/.xml $JENKINS_HOME/jobs/*/config.xml(使用 Antglob 表示法,** 表示 $JENKINS_HOME/jobs 下的所有子目录)

        如果您安装了任何额外的插件,您还需要 $JENKINS_HOME/plugins/*。

        如果要恢复所有构建历史记录,请复制 $JENKINS_HOME/jobs/* 而不仅仅是 config.xml 文件。

        【讨论】:

        • 我正是使用来自 docker jenkins 容器的备份来做到这一点的。身份验证仍然存在一些权限问题。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多