我目前在我的开发PC上使用Jenkins。我把它安装在我的开发PC上,因为我对这个工具知之甚少;所以我在开发PC上对它进行了测试。现在,我觉得Jenkins在构建过程中是我长期的“合作伙伴”,并希望将这个Jenkins“移动”到专用服务器上。
在此之前,我做了很少的构建,并从每个构建中归档了工件。特别是,版本号对我来说对版本控制非常重要。
如何将当前PC中的所有Jenkins信息导出到新服务器?
继Jenkins wiki之后,你必须:
chown -R jenkins:jenkins $JENKINS_HOME
默认情况下,JENKINS_HOME在Linux安装中位于~/.jenkins
,但要准确找到它所在的位置,请转到http://your_jenkins_url/configure页面并检查第一个参数的值:Home directory
;这是JENKINS_HOME。
如果您的JENKINS_HOME目录太大而无法复制,您只需设置相同的作业,Jenkins插件和Jenkins配置(并且不需要旧的Job工件和报告),那么您可以使用ThinBackup Plugin:
<useSecurity>
设置为false,然后重新启动Jenkins。这对我有用,可以从Ubuntu 12.04(Jenkins ver.1.628)转到Ubuntu 16.04(Jenkins ver.1.651.2)。我第一次installed Jenkins from the repositories。
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服务器。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 Swarm或Kubernetes自动缩放从属节点。
有时我们可能无法访问Jenkins机器将文件夹直接复制到另一个Jenkins实例中。所以我写了一个菜单驱动的实用程序,它使用Jenkins REST API调用从一个Jenkins实例到另一个实例安装插件和作业。
对于插件迁移:
{SOURCE_JENKINS_SERVER}/pluginManager/api/json?depth=1
将为您提供随其版本安装的插件列表。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}上的作业中获取每个作业config.xml文件。我在Python中创建了一个菜单驱动的实用程序,它要求用户启动插件或Jenkins迁移,并使用Jenkins REST API调用来执行此操作。
你可以从这个网址引用{SOURCE_JENKINS_URL}/job/{JOB_NAME}
JenkinsMigration.docxjenkinsjenkinsmigration