SCM Sync配置插件 - Jenkins GIT提示问题

时间:2017-07-25 19:46:02

标签: github jenkins jenkins-plugins configuration-files prompt

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 keyssh-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 )然后记录器将不会记录任何东西。 enter image description here 上述设置将使此插件不记录记录器中的任何内容,因此请确保将记录器设置为正确的值。

此后,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)这个插件究竟在哪里检查文件并推送?

2 个答案:

答案 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按钮,它就会首先提示通过弹出模式窗口并请求用户输入一些评论。