• 搭建GitLab+Jenkins


    1. Jenkins and GitLab

      

    • Jenkins是一个自动化服务器,可以运行各种自动化构建、测试或部署任务。
    • GitLab是一个代码仓库,用来管理代码。
    • 两者结合起来,就可以实现开发者提交代码到GitLab,   Jenkins以一定频率自动运行测试、构建和部署的任务,帮助开发团队更高效的集成和发布代码。

    2.创建一个Jenkins Job

      

    • 在Jenkins里,一个任务叫做一个job。一般我们的项目会有多个分支,比如开发分支和产品分支,我们可以对每一个分支都新建一个job,比如我们对开发分支创建一个测试的job,每次有代码提交就自动运行一次测试,对产品分支创建一个打包的job,每次有代码提交就运行打包任务。

      

    • 点击创建,item name可以随便起,然后点击构建一个自由风格的软件项目,点击ok。
    • 一个job创建成功。

    3. 配置job

      

      

    • 打开Jenkins,进入job页面。点击配置。

        

      

    • 选择“源码管理”—>git
    • Repository URL中,粘贴GitLab中的项目地址。
    • Credentials中,点击add—jenkins
    • Kind:选择Username with password
    • 填写Username
    • 填写Password
    • 点击Add
    • 最后点击保存

    注意:选择git,添加gitlab仓库路径无论怎么尝试都报如下两个异常。我这边尝试了,刚开始也报错,总结了2种解决方案:

    2种异常:
    Failed to connect to repository : Command "git ls-remote -h git@xxxxx.com:xxx/dev_test.git HEAD" returned status code 128: stdout: stderr: Permission denied, please tryagain. Permission denied, please try again. Permission denied(publickey,gssapi-keyex,gssapi-with-mic,password). fatal: The remote end hung up unexpectedly

    或者

    Failed to connect to repository : Command "/usr/local/git/bin/git -c core.askpass=true ls-remote -h http://www.xxx.com/gitlab/root/test.git HEAD" returned status code 128:
    stdout: 
    stderr: fatal: Unable to find remote helper for ‘http‘

      2种解决方案:

      1)由于运行jenkins用户没有生成ssh私钥,且没有添加gitlab中。因此导致了如上异常。

      生成ssh私钥

      ssh-keygen -t rsa -C "admin@example.com"
    将生成的公钥复制到粘贴板
      cat ~/.ssh/id_rsa.pub | clip

     回到gitlab网页,将添加到gitlab-->Profile Settings-->SSH Keys-->Add an SSH key。
      

      


     回到jenkins页面---源码管理---选择“Git”---去GitLab中复制项目地址,粘贴到“Repository URL”---点击“credentials”后面的“Add”按钮---Private Key---Enter directly ---key。将私. 钥添加到key中。

         



     保存后重启jenkins即可。

    2)当我把gitlab创建的项目设置为private,jenkins就会报上述错误。解决方法就是,设置gitlab的Visibility Level为public即可。
      

      

    4.Branch Specifier

      

    • Jenkins job默认对master分支进行构建,也可以自定义分支。不过要求你的gitlab代码仓库中要存在这个分支,一般来说,要向代码仓库提交一次更改,即可自定义分支了。

    5. 配置job的构建触发器

      

    • Poll SCM: 每隔一段时间检查gitlab仓库中代码是否有更新,有的话就执行构建操作。
    • Build after other projects are built:当另一个构建任务完成之后触发
    • Build periodically:周期性的触发
    • GitHub hook trigger for GITScm polling:通过GitHub钩子触发

    6.配置 Job的构建脚本

      

      

    • 在构建中,支持多种构建脚本,我选择的是execute shell,然后输入项目构建命令(这依赖于你的项目)

    至此,所有工作已经完成,现在你提交代码到gitLab,jenkins帮你运行构建,这样大家的代码自动集成到一起,出了错很快就知道了。

    
    
  • 相关阅读:
    4-11
    4-10
    4-9
    4-7
    4-8
    4-6
    4-4
    4-5
    4-3
    4-2
  • 原文地址:https://www.cnblogs.com/Super-scarlett/p/8176705.html
Copyright © 2020-2023  润新知