如何恢复詹金斯的工作?

时间:2014-05-22 00:00:40

标签: jenkins

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

有什么想法吗?

编辑:

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

我还放弃了旧的" credentials.xml"进入/ var / lib / jenkins。这很好,我可以在网络界面中看到凭据。

5 个答案:

答案 0 :(得分:3)

To restore jobs in Jenkins, you just need to copy jobs/ folder into new Jenkins HOME folder (only config.xml files is enough) and make sure you've all necessary plugins (in Linux it's /var/lib/jenkins/).

For Jenkins root configuration, you need to copy config.xml from the main HOME directory (e.g. /var/lib/jenkins/config.xml). All other XML files are just site-wide and plugin configuration files (which may be copied as well).

For more details, check the following Jenkins directory structure:

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)

Source: Administering Jenkins - JENKINS_HOME directory

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


To reload configuration from the disk, use Reload Configuration from Disk option in Manage Jenkins. From Jenkins CLI, try reload-configuration command to discard all the loaded data in memory and reload everything from file system.

答案 1 :(得分:1)

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

我通过阅读/var/log/jenkins/jenkins.log的Jenkins日志来实现这一点,其中有一些" Permission denied"消息。

答案 2 :(得分:1)

如果您在Jenkins服务/ docker中仍然错误地更改了作业配置,则可以使用job configuration history plugin

从Web GUI还原配置

Jenkins->作业->作业配置历史记录->选择以下项的单选按钮 正确的版本和错误的版本->显示差异(xml差异版本)->选择正确的 版本,然后按“恢复此配置”

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

根据上述答案,我认为您没有复制各个作业的配置文件。 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文件。