我目前在开发PC上使用Jenkins。我将其安装在开发PC上,因为我对该工具的了解有限。因此我在开发PC上对其进行了测试。现在,我对Jenkins感到很满意,可以作为我在构建过程中的长期“合作伙伴”,并希望将此Jenkins“移动”到专用服务器上。
在此之前,我完成了很少的构建,并从每个构建中存档了工件。特别是,对于我来说,内部版本号对于版本控制非常重要。
如何将所有Jenkins信息从当前PC导出到新服务器?
我目前在开发PC上使用Jenkins。我将其安装在开发PC上,因为我对该工具的了解有限。因此我在开发PC上对其进行了测试。现在,我对Jenkins感到很满意,可以作为我在构建过程中的长期“合作伙伴”,并希望将此Jenkins“移动”到专用服务器上。
在此之前,我完成了很少的构建,并从每个构建中存档了工件。特别是,对于我来说,内部版本号对于版本控制非常重要。
如何将所有Jenkins信息从当前PC导出到新服务器?
Answers:
跟随Jenkins Wiki,您必须:
chown -R jenkins:jenkins $JENKINS_HOME
JENKINS_HOME默认情况下位于~/.jenkins
上安装Linux,但准确找到它的位置,走的HTTP:// your_jenkins_url /配置页,并检查第一个参数的值:Home directory
; 这是JENKINS_HOME。
如果您的JENKINS_HOME目录太大而无法复制,并且您只需要设置相同的Jobs,Jenkins插件和Jenkins配置(并且不需要旧的Job工件和报告),则可以使用ThinBackup插件:
都配置备份目录(在Manage Jenkins-> ThinBackup->设置中)
在Sourse Jenkins上,转到ThinBackup->立即备份
如果缺少某些插件或作业,请将备份内容直接复制到目标JENKINS_HOME。
如果您在源Jenkins上进行了用户身份验证,现在又锁定了目标Jenkins,则请编辑Jenkins config.xml,将其设置<useSecurity>
为false,然后重新启动Jenkins。
这使我从Ubuntu 12.04(Jenkins版本1.628)迁移到Ubuntu 16.04(Jenkins版本1.651.2)。我首先从存储库安装了Jenkins。
JENKINS_HOME
从旧服务器复制(例如/ var / lib / jenkins)到新服务器。从新服务器的控制台中:
rsync -av username@old-server-IP:/var/lib/jenkins/ /var/lib/jenkins/
您可能不需要这个,但是我不得不
Manage Jenkins
和Reload Configuration from Disk
。Configure System > Jenkins Location
,是否Jenkins URL
已正确分配给新的Jenkins服务器。/configureSecurity
我得到了java.lang.AssertionError: InstanceIdentity is missing its singleton
Jenkins服务器自动化:
第1步:
设置存储库以将Jenkins主页(作业,配置,插件等)存储在GitLab本地或GitHub私有存储库中,并通过对Jenkins作业,插件等进行任何新更改来使其定期更新。
第2步:
为Jenkins 配置一个Puppet主机组/角色,该主机组/角色可用于启动新的Jenkins服务器。在Puppet配方中进行所有基本配置,并确保它安装了最新版本的Jenkins并为设置了单独的目录/挂载JENKINS_HOME
。
第三步:
使用上面的Jenkins-puppet配置启动新机器。安装完所有组件后,将Jenkins配置从Git存储库中获取/克隆到Jenkins主页目录,然后重新启动Jenkins。
第4步:
转到Jenkins URL,管理Jenkins → 管理插件,然后更新所有需要更新的插件。
完成了
您可以使用Docker Swarm或Kubernetes自动缩放从节点。
有时我们可能无权访问Jenkins机器以将文件夹直接复制到另一个Jenkins实例。因此,我编写了一个菜单驱动的实用程序,该实用程序使用Jenkins REST API调用将插件和作业从一个Jenkins实例安装到另一个实例。
对于插件迁移:
{SOURCE_JENKINS_SERVER}/pluginManager/api/json?depth=1
将为您提供安装了其版本的插件列表。您可以发送带有以下参数的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
对于工作迁移:
{SOURCE_JENKINS_URL}/view/All/api/json
{SOURCE_JENKINS_URL}/job/{JOB_NAME}
。我已经在Python中创建了一个菜单驱动的实用程序,该实用程序要求用户启动插件或Jenkins迁移,并使用Jenkins REST API调用来执行此操作。
您可以从此URL 引用JenkinsMigration.docx詹金斯詹金斯移民詹金斯雷塔皮