【问题标题】:SCM Sync configuration plugin - Jenkins GIT prompt issueSCM Sync 配置插件 - Jenkins GIT 提示问题
【发布时间】:2017-07-25 19:46:01
【问题描述】:

Jenkins 版本:1.642.3

SCM Sync Configuration Plugin 版本:0.0.10

我创建了一个私有存储库来存储 Jenkins 作业的配置(这是我在配置此插件时将在 Jenkins 的全局配置页面中使用的 git url)。当我创建了一个私有仓库(不对任何人开放)时,我必须添加任何协作者(jenkins 服务用户,它在 Jenkins 主服务器上运行 Jenkins 主进程)。如果您的情况不同,请在 Manage Jenkins > System Information 下为正在运行 Jenkins 进程的用户查找 user name user.name,否则,您将收到操作系统用户无权访问存储库或权限被拒绝的错误(公钥)。另一种解决方案是生成ssh keyssh-keygen -t rsa,一旦生成密钥文件,将 .pub 公钥放入 Github 用户的 SSH 设置部分:https://git.instance.yourcomany.com/settings/ssh)。

一个重要提示:在配置记录器时,如果您不小心选择了 hudson.plugins.scm_sync_configuration.ScmSyncConfigurationPlugin 因为它显示在可用选项列表中(相对于使用正确的值,即 hudson.plugins.scm_sync_configuration),那么记录器将不会记录任何事物。 上述设置将使该插件不会在记录器中记录任何内容,因此请确保将记录器设置为正确的值。

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

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

我的期望是应该提示我对 Jenkins 作业进行任何更改,并且应该在给定的 GIT 存储库中签入 Jenkins 作业(因为现在 jenkins 用户的 pub 密钥已全部设置)。 PS:我可以在另一个测试 jenkins 作业(在 master 节点上运行)成功地从这个 repo 克隆 + 我还能够从 Jenkins 成功 git clone + git push 到这个 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) 这个插件究竟是在哪里签入文件并推送的?

【问题讨论】:

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


    【解决方案1】:

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

    确保:

    1) 在设置 SCM Sync 配置之前,您已经在 Git 中创建了一个存储库/项目

    2) 找到用户(正在运行jenkins 进程)。通常是jenkins 用户。如果需要,请与您的系统团队合作并让他们创建一个名为 jenkins 的服务/ldap 用户帐户,以便您可以在 Git/Github 中添加 jenkins 用户(或任何运行 jenkins 进程的用户)作为 具有写入权限的合作者。如果这不可能,请转到 Jenkins 主服务器和 sudo su - jenkins 并确保创建(ssh 密钥)。创建后,获取公钥并将其上传到 Github 存储库Settings > Deploy Keys

    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_HOME/scm-sync-configuration/checkoutConfiguration 文件夹下的 Jenkins 主服务器。查找.git 文件夹。如果不存在,则意味着 SCM Sync 插件未执行任何结帐。要查看此插件是否有任何问题可以查看 Git 存储库,您可以创建另一个新的记录器,其中Logger 值应从可用选项列表框中的hudson.plugins.scm_sync_configuration.ScmSyncConfigurationPlugin

    7) 如果在第 5 个文件夹中没有找到 .git,则删除 checkoutConfiguration 文件夹(仅限叶文件夹)并在 SCM 同步插件的 Jenkins 全局配置中,将版本控制从 Git 更改为无(单选按钮), 保存。然后返回并选择 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 Sync 插件,当您对 Jenkins 作业进行更改时,只要您按下 SAVE 按钮,它就会首先通过弹出模态窗口并要求用户输入一些评论。

    【讨论】:

      【解决方案2】:

      转到 Jenkins -> 管理 Jenkins -> 配置系统。 在 SCM 同步配置部分下查找“永远不要用提交消息打扰我”配置。

      如果您希望 Jenkins 在 Job 被修改时提示提交消息,请取消选中“永远不要用提交消息打扰我”选项。

      【讨论】:

      • 就我而言,它已经被取消选中。谢谢你的信息。我尝试选中该框,如果这会改变行为,请取消选中该框,但到目前为止,在我对其进行任何更改后保存作业时,提示对话框没有出现。
      • 是否将更改提交到存储库?
      • 不。就像我说的,从 Jenkins master 或我的本地机器,我可以成功地 Git 克隆 repo,使用我自己的用户 ID 或 jenkins 服务用户 ID 手动将更改签入到 README.md 文件,并且该更改已成功推送到目标存储库。 SCM 同步记录器显示所有内容都在签入、签入、推送成功(那里没有错误),但与更改作业相关的更改或此插件存储的作业/用户/等的任何配置文件在 Github 中不可见。我什至没有得到提示。奇怪啊!
      • 我现在也在考虑删除/卸载这个插件,因为有一个开放的 BUG,如果我重新启动 Jenkins,可能会导致我失去 Jenkins GUI。这个问题从这个插件的 0.0.9 版本开始就存在了,还没有解决。我现在可以考虑 THIN 备份。如果我能找到原因,那就太好了!我的问题。如果我找到自己,我会发布答案,我会猜的。
      • 2 个月前,我能够在本地 Gitlab 和 Jenkins 之间进行同步。要了解确切的问题,请将记录器启用到特定的 SCM 同步类。
      猜你喜欢
      • 1970-01-01
      • 2013-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-02
      • 2015-02-04
      • 1970-01-01
      相关资源
      最近更新 更多