Jenkins版本: 1.642.3
SCM Sync Configuration Plugin版本: 0.0.10
我创建了一个私有存储库,用于存储Jenkins作业的配置(这是我在配置此插件时将在Jenkins的全局配置页面中使用的git url)。当我创建一个私人仓库(不向所有人开放)时,我不得不添加任何协作者(jenkins
服务用户,该用户在Jenkins主服务器上运行Jenkins主进程)。如果在您的情况下,它是不同的,请在user.name
下为正在运行Jenkins进程的用户查找user name Manage Jenkins > System Information
否则,您将收到操作系统用户无法访问的错误到存储库或权限被拒绝(公钥)。另一个解决方案是生成ssh key(ssh-keygen -t rsa
,生成密钥文件后,将.pub公钥放入Github用户的SSH设置部分:https://git.instance.yourcomany.com/settings/ssh)。
一个重要提示:配置记录器时,如果您不小心选择了 hudson.plugins.scm_sync_configuration.ScmSyncConfigurationPlugin ,因为它显示在可用选项列表中(vs使用正确的值 hudson.plugins.scm_sync_configuration )然后记录器将不会记录任何东西。 上述设置将使此插件不记录记录器中的任何内容,因此请确保将记录器设置为正确的值。
此后,Jenkins主要全局配置页面中的一切看起来都很好,用于配置此插件(没有错误),在Jenkins主页的右下角,我可以看到“ SCM同步状态:上次操作@星期二7月25日11:55:43 PDT 2017 “
我创建了一个虚拟作业(并在构建步骤中执行了echo something && sleep 60
)并尝试对此构建步骤进行一些更改,以将睡眠时间更改为某些随机值。
我的期望是我应该被提示对Jenkins作业进行任何更改,并且应该在给定的GIT仓库中签入Jenkins作业(因为现在jenkins用户的pub键已全部设置)。 PS :我已经成功地在另一个测试jenkins作业中克隆了这个repo(在master
节点上运行)+我也能够成功git clone + git push到这个repo来自Jenkins主服务器(我自己添加了README.md作为jenkins用户)。在记录器的日志中,我可以看到:
Jul 25, 2017 11:53:37 AM FINE hudson.plugins.scm_sync_configuration.SCMManipulator checkinFiles
Checking in SCM files ...
Jul 25, 2017 11:53:37 AM FINE hudson.plugins.scm_sync_configuration.SCMManipulator checkinFiles
Checked in SCM files !
Jul 25, 2017 11:53:37 AM FINEST hudson.plugins.scm_sync_configuration.ScmSyncConfigurationBusiness processCommitsQueue
Commit Commit hudson.plugins.scm_sync_configuration.model.Commit@5d951ea :
Author : asangal
Comment : asangal: Jenkins configuration files updated
Change performed by asangal
Changeset :
A hudson.scm.SubversionSCM.xml
A hudson.plugins.ansicolor.AnsiColorBuildWrapper.xml
A hudson.plugins.git.GitTool.xml
A hudson.scm.CVSSCM.xml
A hudson.tasks.Mailer.xml
A hudson.plugins.gradle.Gradle.xml
A hudson.tasks.Ant.xml
A hudson.plugins.git.GitSCM.xml
A hudson.plugins.groovy.Groovy.xml
A jenkins.plugins.publish_over_ssh.BapSshPublisherPlugin.xml
A hudson.triggers.SCMTrigger.xml
A hudson.maven.MavenModuleSet.xml
A jenkins.mvn.GlobalMavenConfig.xml
A jenkins.model.ArtifactManagerConfiguration.xml
A hudson.tasks.Shell.xml
A scm-sync-configuration.xml
A hudson.plugins.copyartifact.TriggeredBuildSelector.xml
A config.xml
A hudson.tasks.Maven.xml
A jenkins.metrics.api.MetricsAccessKey.xml
A hudson.plugins.timestamper.TimestamperConfig.xml
A jenkins.model.JenkinsLocationConfiguration.xml
A hudson.plugins.build_timeout.operations.BuildStepOperation.xml
A hudson.plugins.mercurial.MercurialInstallation.xml
A hudson.plugins.emailext.ExtendedEmailPublisher.xml
A hudson.plugins.throttleconcurrents.ThrottleJobProperty.xml
pushed to SCM !
Jul 25, 2017 12:49:48 PM FINEST hudson.plugins.scm_sync_configuration.ScmSyncConfigurationBusiness queueChangeSet
Queuing commit Commit hudson.plugins.scm_sync_configuration.model.Commit@5511458b :
Author : asangal
Comment : asangal: Job [dummy_job] configuration updated
Change performed by asangal
Changeset :
A jobs/dummy_job/config.xml
to SCM ...
Jul 25, 2017 12:49:48 PM FINEST hudson.plugins.scm_sync_configuration.ScmSyncConfigurationBusiness processCommitsQueue
Processing commit : Commit hudson.plugins.scm_sync_configuration.model.Commit@5511458b :
Author : asangal
Comment : asangal: Job [dummy_job] configuration updated
Change performed by asangal
Changeset :
A jobs/dummy_job/config.xml
Jul 25, 2017 12:49:48 PM FINE hudson.plugins.scm_sync_configuration.SCMManipulator checkinFiles
Checking in SCM files ...
Jul 25, 2017 12:49:48 PM FINE hudson.plugins.scm_sync_configuration.SCMManipulator checkinFiles
Checked in SCM files !
Jul 25, 2017 12:49:48 PM FINEST hudson.plugins.scm_sync_configuration.ScmSyncConfigurationBusiness processCommitsQueue
Commit Commit hudson.plugins.scm_sync_configuration.model.Commit@5511458b :
Author : asangal
Comment : asangal: Job [dummy_job] configuration updated
Change performed by asangal
Changeset :
A jobs/dummy_job/config.xml
pushed to SCM !
问题:
1)为什么我在更改Jenkins工作时没有收到提示?
2)为什么我没有看到任何提交(记录器在日志中成功检入/推送)到我的目标git repo?到目前为止,我的github repo只显示了README.md文件。
3)这个插件究竟在哪里检查文件并推送?
答案 0 :(得分:0)
Goto Jenkins - >管理Jenkins - >配置系统。 在SCM Sync Configuration部分下,查找"从不打扰我提交消息"配置。
如果您希望Jenkins在修改Job时提示提交消息,请取消选中"永远不要打扰我提交消息"。
答案 1 :(得分:0)
正确检查并实施此插件的决议/步骤:
确保:
1)在设置SCM Sync配置之前,您已在Git中创建了一个存储库/项目
2)找到用户(正在运行jenkins
进程)。通常是jenkins
用户。如果需要,请与您的系统团队合作,让他们创建一个名为jenkins
的服务/ ldap用户帐户,以便您可以在Git / Github中添加jenkins
用户(或运行jenkins进程的任何用户)具有写访问权限的协作者如果那是不可能的,那么转到Jenkins Master服务器和sudo su - jenkins
并确保创建(ssh密钥)。创建后,获取公钥并将密钥上传到Settings > Deploy Keys
下的Github存储库。
3)对于此用户,请创建~/.gitconfig file
并将以下内容放入此文件中。
user]
name = enter_theuserid
email = enter_theemailid@company.com
[core]
editor = vim
[color]
ui = auto
4)现在在Jenkins全局设置配置中配置SCM Sync插件(根据插件的文档)。只要你提供git@git..:org/your-repo.git
,你就会注意到,运行Jenkins的操作系统用户无法做任何事情也不会出错。
5)创建一个新的LOGGER(确保Logger
值为:hudson.plugins.scm_sync_configuration
)
6)转到Jenkins主服务器: $ JENKINS_HOME / scm-sync-configuration / checkoutConfiguration 文件夹。查找.git
文件夹。如果那不存在,那意味着,SCM Sync插件没有执行任何结账。要查找此插件是否存在能够检出Git存储库的任何问题,您可以从列表框可用选项中创建另一个新的记录器,其中Logger
值应为hudson.plugins.scm_sync_configuration.ScmSyncConfigurationPlugin
。
7)如果你没有在bullet 5th文件夹中找到.git
,那么删除checkoutConfiguration
文件夹(仅限leaf文件夹),在Jenkins Global配置中找到SCM Sync插件,将版本控制从Git更改为无(单选按钮),保存。然后返回并选择Git(单选按钮)并再次提供git@git...:org/repo-name.git
URL并保存。
8)密切注意日志。这次,如果用户(运行Jenkins进程)作为具有WRITE访问权限的有效协作者列在Git存储库中,或者如果它的SSH pub密钥被上传到Github存储库,那么它将成功将存储库CHECKOUT $ JENKINS_HOME / scm-sync-configuration / checkoutConfiguration 文件夹。在此文件夹中,您将看到所有有效的.git / *文件。
9)出于测试目的,您可以在 $ JENKINS_HOME / scm-sync-configuration / checkoutConfiguration 文件夹下对文件进行少量更改,然后运行git add thatfilename; git commit -m "test change" $_; git pull && git push
10)如果子弹9成功,此时您将拥有一个可用的SCM Sync插件,当您对Jenkins作业进行更改时,只要按下SAVE
按钮,它就会首先提示通过弹出模式窗口并请求用户输入一些评论。