如何将詹金斯从一台电脑转移到另一台电脑

我目前正在我的开发电脑上使用詹金斯。我把它安装在我的开发 PC 上,因为我对这个工具的了解有限; 所以我在我的开发 PC 上测试它。现在,我觉得与詹金斯作为我的长期“合作伙伴”在建设过程中感觉很舒服,并希望“移动”这个詹金斯到一个专有服务器。

在此之前,我只做过少量的构建,并将每个构建的构件归档。特别是,对于版本控制,构建号对我来说非常重要。

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

155475 次浏览

按照 詹金斯维基,你必须:

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

JENKINS _ HOME 默认位于 Linux 安装程序的 ~/.jenkins中,但要准确找到它的位置,请访问 http://your_jenkins_url/configure 页面并检查第一个参数的值: Home directory,这是 jENKINS _ HOME。

如果您的 JENKINS _ HOME 目录太大,无法复制,所有您需要的是设置相同的作业,Jenkins 插件和 Jenkins 配置(并且不需要旧的作业工件和报告) ,那么您可以使用 ThinBackupPlugin 备份插件:

  1. 在源服务器和目标 Jenkins 服务器上安装 ThinBackup

  2. 在两个目录上都配置备份目录(在 管好詹金斯精简后援设定中)

  3. 关于消息来源 Jenkins 切换到 精简后援→ < em > 备份

  4. 从 Jenkins 源备份目录复制到 Jenkins 目标备份目录

  5. 目标 Jenkins 切换到 精简后援恢复然后重启 Jenkins 服务。

  6. 如果缺少某些插件或作业,则将备份内容直接复制到目标 JENKINS _ HOME。

  7. 如果您对源 Jenkins 进行了用户身份验证,现在锁定了目标 Jenkins,那么编辑 Jenkins config.xml,将 <useSecurity>设置为 false,然后重新启动 Jenkins。

这对我从 Ubuntu 12.04(Jenkins ver。1.628)到 Ubuntu 16.04(Jenkins ver。1.651.2).我第一个 安装了存储库里的 Jenkins

  1. 停止 Jenkins 的两台服务器

  2. JENKINS_HOME(例如/var/lib/jenkins)从旧服务器复制到新服务器:

    rsync -av username@old-server-IP:/var/lib/jenkins/ /var/lib/jenkins/

  3. 启动你的新 Jenkins 服务器

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

  • Manage JenkinsReload Configuration from Disk
  • 断开并再次连接所有节点。
  • 检查在 Configure System > Jenkins Location中,Jenkins URL被正确地分配到新的 Jenkins 服务器。

詹金斯服务器自动化:

第一步:

建立一个存储库,将 Jenkins 主页(作业、配置、插件等)存储在 GitLab 本地或 GitHub 私有存储库中,并通过推动对 Jenkins 作业、插件等的任何新更改来定期更新。

第二步:

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

第三步:

使用上面的 Jenkins 木偶配置旋转一台新机器。安装好所有东西后,从 Git 存储库中获取/克隆 Jenkins 配置到 Jenkins 主目录中,然后重新启动 Jenkins。

第四步:

转到 Jenkins 的 URL,管好詹金斯管理插件并更新所有需要更新的插件。

成交

您可以使用 Docker Swarm库伯内特来自动缩放从节点。

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

对于插件迁移:

  1. 获取请求: {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
    

For job migration:

  1. You can get the list of jobs installed on {SOURCE_JENKINS_URL} using a REST call, {SOURCE_JENKINS_URL}/view/All/api/json
  2. Then you can get each job config.xml file from the jobs on {SOURCE_JENKINS_URL} using the job URL {SOURCE_JENKINS_URL}/job/{JOB_NAME}.
  3. Use this config.xml file to POST the content of the XML file on {DESTINATION_JENKINS_URL} and that will create a job on {DESTINATION_JENKINS_URL}.

I have created a menu-driven utility in Python which asks the user to start plugin or Jenkins migration and uses Jenkins REST API calls to do it.

You can refer the JenkinsMigration.docx from this URL

假设我们正在将 Jenkins LTS 从 PC1迁移到 PC2(无论 LTS 版本如何升级都是相同的)。 它很容易使用 ThinBackUp插件迁移或升级的詹金斯版本。

Step1: 为移民做好 PC1的准备

  • 管理 Jenkins-> ThinbackUp-> 设置
  • 选择正确的备份选项和目录
  • 如果你需要一个工作历史和工件需要添加,然后请选择’回建结果’选项以及。

enter image description here

  • 回到“立即备份”。

enter image description here

注意: 这个 Thinback 也会使用可选的 Plugin Backup。

  • 检查 ThinbackUp 文件夹必须有一个具有当前日期和时间戳的文件夹。 (等几分钟可能需要一些时间。)
  • 您已经准备好了备份,. zip 并复制到 PC2中的 特别的(它将是“备份目录”)目录。
  • 解压缩 ThinbackUp 压缩文件夹。
  • 停止在 PC1的 Jenkins 服务。

步骤2: 在 PC2中安装 Jenkins (使用. war 文件或粘贴归档版本安装)。

  • 使用命令 sc create <Jenkins_PC2Servicename> binPath="<Path_to_Jenkinsexe>/jenkins.exe"创建 Jenkins 服务
  • 如果 PC2中需要,修改 JENKINS _ HOME/JENKINS.xml。
  • 在 PC2中运行 Windows 服务 < Jenkins _ PC2Servicename >
  • 管理 Jenkins-> ThinbackUp-> 设置
  • 确保在 ThinBackup 设置中 特别的路径从第1步作为备份目录。
  • ThinbackUp-> Restore 会给你一个下拉列表,选择一个正确的备份(用日期和时间戳标识)。

enter image description here

  • 等待一些分钟,你有最新的备份配置,包括作业历史和插件在 PC2。
  • 如果 JENKINS _ HOME/JENKINS.xml 中需要更改(来自 PC1 ThinbackUp,不需要) ,则需要手动进行此修改。

注意: 如果您在您的 Jenkins 作业中使用 SCM 的数据库设置,那么您需要格外小心,因为所有的 SCM 插件都不支持在 ThinbackUp 插件的帮助下进行数据库设置。 例如:。如果你正在使用 PTC Integrity SCM 插件,并且一些 Jenkins 作业正在使用使用 Integrity 的 DB,那么它将创建一个目录 JENKINS _ Home/IntegritySCM,ThinbackUp 在进行备份时不会包含这个 DB。

解决方案: 直接将这个 JENKINS _ Home/IntegritySCM文件夹从 PC1复制到 PC2。