我目前正在开发PC上使用Jenkins。我把它安装在我的开发PC上,因为我对这个工具知之甚少;所以我在开发PC上对它进行了测试。现在,我觉得Jenkins在构建过程中作为我的长期“合作伙伴”感到很自在,并希望将这个Jenkins“移动”到专用服务器上。
在此之前,我做了很少的构建,并从每个构建中归档了工件。特别是,版本号对我来说对版本控制非常重要。
如何将当前PC中的所有Jenkins信息导出到新服务器?
答案 0 :(得分:158)
在Jenkins wiki之后,你必须:
chown -R jenkins:jenkins $JENKINS_HOME
JENKINS_HOME默认位于Linux安装的~/.jenkins
,但要准确找到它的位置,请转到http://your_jenkins_url/configure页面并检查第一个参数的值:{{1} };这是JENKINS_HOME。
答案 1 :(得分:44)
如果 JENKINS_HOME目录太大而无法复制,您只需设置相同的作业,Jenkins插件和Jenkins配置(并且不需要旧的Job工件和报告) ,然后你可以使用ThinBackup Plugin:
在两者上配置备份目录(在Manage Jenkins - > ThinBackup - >设置中)
在Sourse Jenkins上访问ThinBackup - >立即备份
如果缺少某些插件或作业,请将备份内容直接复制到目标JENKINS_HOME。
如果您在源Jenkins上进行了用户身份验证,现在已锁定在目标Jenkins上,则编辑Jenkins config.xml,将col_1 col_2 col_3
1 a 30
1 b 25
1 other 6
2 a 321
2 b 1
2 other 122
设置为false,然后重新启动Jenkins。
答案 2 :(得分:11)
这让我从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服务器。答案 3 :(得分:1)
Jenkins服务器自动化:
第1步:
设置存储库以将Jenkins主目录(作业,配置,插件等)存储在GitLab本地或GitHub私有存储库中,并通过推送对Jenkins作业,插件等的任何新更改来定期更新它。 / p>
第2步:
为Jenkins配置Puppet主机组/角色,可用于启动新的Jenkins服务器。完成Puppet配方中的所有基本配置,并确保它安装最新版本的Jenkins并为JENKINS_HOME
设置单独的目录/装载。
第3步:
使用上面的Jenkins-puppet配置启动新机器。安装完所有内容后,将Jenkins配置从Git存储库抓取/克隆到Jenkins home direcotry并重新启动Jenkins。
第4步:
转到Jenkins网址,管理Jenkins →管理插件并更新所有需要更新的插件。
完成
您可以使用Docker Swarm或Kubernetes自动缩放从属节点。
答案 4 :(得分:1)
有时我们可能无法访问Jenkins机器将文件夹直接复制到另一个Jenkins实例中。所以我写了一个菜单驱动的实用程序,它使用Jenkins REST API调用从一个Jenkins实例到另一个实例安装插件和作业。
对于插件迁移:
var that = this;
将为您提供随其版本安装的插件列表。您可以使用以下参数发送POST请求以安装这些插件。
{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调用来执行此操作。
您可以从此网址引用JenkinsMigration.docx jenkins jenkinsmigration jenkinsrestapi
答案 5 :(得分:0)
让我们说我们正在将Jenkins LTS从PC1迁移到PC2(无论LTS版本是否与升级版本相同)。 使用ThinBackUp插件可以轻松迁移或升级Jenkins版本。
第1步:准备PC1进行迁移
注意:此Thinbackup也将采用可选的插件备份。
第二步:在PC2中安装Jenkins(使用.war文件或粘贴归档版本安装)。
sc create <Jenkins_PC2Servicename> binPath="<Path_to_Jenkinsexe>/jenkins.exe"
创建Jenkins服务注意::如果您在Jenkins作业中使用SCM的数据库设置,则需要格外小心,因为在ThinbackUp插件的帮助下,所有SCM插件都不支持携带数据库设置。 例如如果您使用的是PTC Integrity SCM插件,并且某些Jenkins作业正在使用使用Integrity的数据库,则它将创建目录 JENKINS_Home / IntegritySCM ,ThinbackUp在进行备份时将不包括该数据库。
解决方案:直接将此 JENKINS_Home / IntegritySCM 文件夹从PC1复制到PC2。