jenkins如何构建/克隆一个安装在它的docker容器中的远程git repo?

时间:2017-07-30 18:57:36

标签: git docker jenkins synology

我有一个支持Docker容器的私有Synology NAS Cloud。 现在我计划私有构建和部署管道或类似的东西。

我的第一步已完成:

  1. 在Synology上安装Git服务器
  2. init some Repos
  3. 在我的MacBook上克隆它们
  4. 通过ssh(提交,推送,拉取)进行通信
  5. - >一切正常。

    现在我已经在NAS上使用Jenkins图像启动了Docker容器。我希望Jenkins能够在NAS(我克隆在MacBook上的同一个存储库)上调查我的远程存储库。 我还将所有远程存储库的“/ git”文件夹挂载到Jenkins Docker容器中。

    所以我想将存储库URL添加到Jenkins作业:
    file:///git/firstRepo
    --->但这不起作用:(

    
        ERROR: Error fetching remote repo 'origin'
        hudson.plugins.git.GitException: Failed to fetch from file:///git/firstRepo
        at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:817)
        at hudson.plugins.git.GitSCM.retrieveChanges(GitSCM.java:1084)
        at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1115)
        at hudson.scm.SCM.checkout(SCM.java:495)
        at hudson.model.AbstractProject.checkout(AbstractProject.java:1276)
        at
           hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.    java:560)
        at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86)
        at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:485)
        at hudson.model.Run.execute(Run.java:1735)
        at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
        at hudson.model.ResourceController.execute(ResourceController.java:97)
        at hudson.model.Executor.run(Executor.java:405)
    Caused by: hudson.plugins.git.GitException: Command "/usr/bin/git fetch --tags --progress file:///git/firstRepo +refs/heads/*:refs/remotes/origin/*" returned status code 128:
    stdout: 
    stderr: fatal: '/git/firstRepo' does not appear to be a git repository
    fatal: Could not read from remote repository.
    
    Please make sure you have the correct access rights
    and the repository exists.
    
        at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1924)
        at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:1643)
        at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.access$300(CliGitAPIImpl.java:71)
        at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$1.execute(CliGitAPIImpl.java:352)
        at hudson.plugins.git.GitSCM.fetchFrom(GitSCM.java:815)
        ... 11 more
    ERROR: Error fetching remote repo 'origin'
    Finished: FAILURE



    我测试通过docker shell将repo克隆到Jenkins工作区,并且git clone file:///git/firstRepo
    - >这样可行。但在那里我登录了“root”。

    所以我的问题是:
    Jenkins如何访问git文件夹?这是访问权限的问题吗?詹金斯显然不是“根”。我是否必须将git文件夹“chown”给我的Jenkins用户(我认为是“admin”)?


    非常感谢!

1 个答案:

答案 0 :(得分:0)

首先,检查路径:通常,那些repos(用于推送)是裸存储库,这意味着它们的路径应该是扩展名为.git的文件夹。

.../git/firstRepo.git

其次,使用简单的构建步骤尝试一个简单的Jenkins作业(没有任何SCM设置)

id -a
ls -alrth /git
ls -alrth /git/firstRepo
ls -alrth /git/firstRepo.git

这将显示与这些路径相关的权限,并告诉您Jenkins(以id -a中显示的用户身份执行)是否有权访问该路径。