如何将Jenkins从一台PC移动到另一台PC

问题描述 投票:136回答:5

我目前在我的开发PC上使用Jenkins。我把它安装在我的开发PC上,因为我对这个工具知之甚少;所以我在开发PC上对它进行了测试。现在,我觉得Jenkins在构建过程中是我长期的“合作伙伴”,并希望将这个Jenkins“移动”到专用服务器上。

在此之前,我做了很少的构建,并从每个构建中归档了工件。特别是,版本号对我来说对版本控制非常重要。

如何将当前PC中的所有Jenkins信息导出到新服务器?

jenkins data-migration
5个回答
163
投票

Jenkins wiki之后,你必须:

  • 在新服务器上安装新的Jenkins实例
  • 确保旧的和新的Jenkins实例已停止
  • 存档旧Jenkins实例的JENKINS_HOME的所有内容
  • 将存档解压缩到新的JENKINS_HOME目录中
  • 启动新的Jenkins实例
  • 不要忘记更改您的Jenkins新实例的文档/链接:)
  • 不要忘记更改新Jenkins文件的所有者:chown -R jenkins:jenkins $JENKINS_HOME

默认情况下,JENKINS_HOME在Linux安装中位于~/.jenkins,但要准确找到它所在的位置,请转到http://your_jenkins_url/configure页面并检查第一个参数的值:Home directory;这是JENKINS_HOME。


44
投票

如果您的JENKINS_HOME目录太大而无法复制,您只需设置相同的作业,Jenkins插件和Jenkins配置(并且不需要旧的Job工件和报告),那么您可以使用ThinBackup Plugin

  1. 在源Jenkins服务器和目标Jenkins服务器上安装ThinBackup
  2. 在两者上配置备份目录(在管理Jenkins - > ThinBackup - >设置中)
  3. 在Sourse Jenkins上进入ThinBackup - >立即备份
  4. 从Jenkins源备份目录复制到Jenkins目标备份目录
  5. 在Tar​​get Jenkins上,转到ThinBackup - > Restore,然后重新启动Jenkins服务。
  6. 如果缺少某些插件或作业,请将备份内容直接复制到目标JENKINS_HOME。
  7. 如果您在源Jenkins上进行了用户身份验证,现在已锁定在目标Jenkins上,则编辑Jenkins config.xml,将<useSecurity>设置为false,然后重新启动Jenkins。

11
投票

这对我有用,可以从Ubuntu 12.04(Jenkins ver.1.628)转到Ubuntu 16.04(Jenkins ver.1.651.2)。我第一次installed Jenkins from the repositories

  1. Stop both Jenkins servers
  2. JENKINS_HOME(例如/ var / lib / jenkins)从旧服务器复制到新服务器。从新服务器的控制台: rsync -av username@old-server-IP:/var/lib/jenkins/ /var/lib/jenkins/
  3. Start your new Jenkins server

你可能不需要这个,但我必须这样做

  • Manage JenkinsReload Configuration from Disk
  • 断开并再次连接所有从站。
  • 检查Configure System > Jenkins Location中的Jenkins URL是否正确分配给新的Jenkins服务器。

1
投票

Jenkins服务器自动化:

步骤1:

设置存储库以将Jenkins主目录(作业,配置,插件等)存储在GitLab本地或GitHub私有存储库中,并通过推送对Jenkins作业,插件等的任何新更改来定期更新它。

第2步:

为Jenkins配置Puppet主机组/角色,可用于启动新的Jenkins服务器。在Puppet配方中执行所有基本配置,并确保它安装最新版本的Jenkins并为JENKINS_HOME设置单独的目录/ mount。

第3步:

使用上面的Jenkins-puppet配置启动新机器。安装完所有内容后,将Jenkins配置从Git存储库抓取/克隆到Jenkins home direcotry并重新启动Jenkins。

第4步:

转到Jenkins URL,管理Jenkins→管理插件并更新所有需要更新的插件。

完成

您可以使用Docker SwarmKubernetes自动缩放从属节点。


1
投票

有时我们可能无法访问Jenkins机器将文件夹直接复制到另一个Jenkins实例中。所以我写了一个菜单驱动的实用程序,它使用Jenkins REST API调用从一个Jenkins实例到另一个实例安装插件和作业。

对于插件迁移:

  1. GET请求:{SOURCE_JENKINS_SERVER}/pluginManager/api/json?depth=1将为您提供随其版本安装的插件列表。
  2. 您可以使用以下参数发送POST请求以安装这些插件。 final_url=`{DESTINATION_JENKINS_SERVER}/pluginManager/installNecessaryPlugins` data=`<jenkins><install plugin="{PLUGIN_NAME}@latest"/></jenkins>` (where, latest will fetch the latest version of the plugin_name) auth=`(destination_jenkins_username, destination_jenkins_password)` header=`{crumb_field:crumb_value,"Content-Type":"application/xml”}` (where crumb_field=Jenkins-Crumb and get crumb value using API call {DESTINATION_JENKINS_SERVER}/crumbIssuer/api/json

对于工作迁移:

  1. 您可以使用REST调用获取{SOURCE JENKINS_URL}上安装的作业列表,qazxsw poi
  2. 然后,您可以使用作业URL {SOURCE_JENKINS_URL}/view/All/api/json从{SOURCE_JENKINS_URL}上的作业中获取每个作业config.xml文件。
  3. 使用此config.xml文件在{DESTINATION_JENKINS_URL}上发布XML文件的内容,这将在{DESTINATION_JENKINS_URL}上创建一个作业。

我在Python中创建了一个菜单驱动的实用程序,它要求用户启动插件或Jenkins迁移,并使用Jenkins REST API调用来执行此操作。

你可以从这个网址引用{SOURCE_JENKINS_URL}/job/{JOB_NAME} JenkinsMigration.docx

© www.soinside.com 2019 - 2024. All rights reserved.