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

SCM Sync configuration plugin - Jenkins GIT prompt issue

詹金斯版本:1.642.3

SCM Sync Configuration Plugin版本:0.0.10

我创建了一个私有存储库来存储 Jenkins 作业的配置(这是我将在配置此插件时在 Jenkins 的全局配置页面中使用的 git url)。当我创建一个私人仓库(不对任何人开放)时,我必须添加任何协作者(jenkins 服务用户,即 Jenkins 主服务器上的 运行 Jenkins 主进程)。如果您的情况不同,请查找 user name user.name under Manage Jenkins > System Information for the user which is running Jenkins process otherwise, you'll get an error that OS user doesn't have access to the repository or permission denied (Public Key). One other solution is to generate ssh key (ssh-keygen -t rsa and once the Key files are generated, putting the .pub public key in your Github user's SSH settings section: https://git.instance.yourcomany.com/settings/ssh).

一个重要提示:在配置记录器时,如果您不小心选择 hudson.plugins.scm_sync_configuration.ScmSyncConfigurationPlugin 因为它显示在可用选项列表中(与使用正确的值 hudson.plugins.scm_sync_configuration 相比)然后记录器不会记录任何内容。 上面的设置将使这个插件不会在记录器中记录任何内容,所以请确保将记录器设置为正确的值。

在此之后,到目前为止,在用于配置此插件的 Jenkins 主全局配置页面(那里没有错误)中一切看起来都很好,并且在 Jenkins 主页的右下角,我可以看到“SCM Sync状态:上次操作 @ 7 月 25 日星期二 11:55:43 PDT 2017"

我创建了一个虚拟作业(并在构建步骤中做了 echo something && sleep 60)并尝试对此构建步骤进行一些更改以将睡眠时间更改为一些随机值。

我的预期是应该提示我对 Jenkins 作业进行任何更改,并且应该在给定的 GIT 存储库中签入 Jenkins 作业(因为现在 jenkins 用户的 pub 密钥是全部放)。 PS:我能够在另一个测试 jenkins 作业中成功地从这个 repo 克隆(运行 on master node)+我也是能够成功 git clone + git 从 Jenkins 主服务器推送到这个 repo(刚刚添加 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 存储库?我的 github 仓库目前只显示 README.md 文件。

3) 这个插件究竟在哪里签入文件并推送?

转到 Jenkins -> 管理 Jenkins -> 配置系统。 在 SCM 同步配置部分下查找 "Never bother me with commit messages" 配置。

如果您希望 Jenkins 在 Job 被修改时提示提交消息,请取消选中选项 "Never bother me with commit messages"。

正确检查和实施此插件所遵循的解决方案/步骤:

确保:

1) 在设置 SCM 同步配置之前,您已经在 Git

中创建了一个存储库/项目

2) 查找用户(即运行宁jenkins进程)。通常是 jenkins 用户。如果需要,与您的系统团队合作,让他们创建一个名为 jenkins 的 service/ldap 用户帐户,以便您可以添加 jenkins 用户(或任何 运行 宁金斯进程的用户) 在 Git/Github 作为 Collaborator 之一,具有写入权限。如果那不可能,请转到 Jenkins 主服务器和 sudo su - jenkins 并确保创建(ssh 密钥)。创建后,获取 public 密钥并将密钥上传到 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 同步插件(根据插件文档)。只要您提供 git@git..:org/your-repo.git,您就会注意到它不会出错,因为 OS 用户 运行ning Jenkins 无法执行任何操作。

5) 创建一个新的 LOGGER(确保 Logger 值为:hudson.plugins.scm_sync_configuration

6) 转到 Jenkins 主服务器下的:$JENKINS_HOME/scm-sync-configuration/checkoutConfiguration 文件夹。寻找 .git 文件夹。如果不存在,则意味着 SCM 同步插件未执行任何检查。要查看此插件是否有任何问题能够检查 Git 存储库,您可以创建另一个新记录器,其中 Logger 值应为列表框可用选项中的 hudson.plugins.scm_sync_configuration.ScmSyncConfigurationPlugin

7) 如果您在第 5 个项目符号文件夹中没有找到 .git,则删除 checkoutConfiguration 文件夹(仅限叶文件夹)并在 SCM 同步插件的 Jenkins 全局配置中,将版本控制从Git 到 None(单选按钮),保存。然后返回 select Git(单选按钮)并再次提供 git@git...:org/repo-name.git URL 并保存。

8) 留意日志。这一次,如果用户(运行正在使用 Jenkins 进程)在 Git 存储库中被列为具有 WRITE 访问权限的有效协作者,或者如果它的 SSH 公钥已上传到 Github 存储库,那么它会成功地将存储库检出到 $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 同步插件,当您更改 Jenkins 作业时,只要您按下 SAVE 按钮,它就会首先通过弹出模式提示 window 并请求用户输入一些评论。