码迷,mamicode.com
首页 > 其他好文 > 详细

DEVOPS技术实践_08:Jenkins多分支管道

时间:2019-10-27 20:36:04      阅读:83      评论:0      收藏:0      [点我收藏+]

标签:创建   als   scm   技术   工具   设计   node   完成   its   

简介

多分支的管道是在jenkins2.x中新增的功能 。

多分支管道允许你针对分布式的控制器的每个分支创建一个管道。 下图是对它的一个描述。使用jenkinsfile去创建多分支的管道,jenkinsfile可以存放在代码仓库中。 Jenkinsfile只是定义CI管道的一个脚本。

技术图片

另外,多分支管道的设计初衷就是当Git仓库中的代码改变时,去自动触发构建。下图是对它的一个描述。

技术图片

一. 准备工作

(1)在【全局工具配置】中Maven工具已经配置好。
(2)安装了【Pipeline Maven Integration Plugin】
(3)Java工具也需要安装好,由于我们构建是在jenkins master上执行,所以可以跳过此步(因为我们在安装Jenkins时,已经安装好Java)
(4)安装Gitlab插件,本实验使用gitlab做为代码管理

添加gitlab凭据到jenkins中

添加全局凭据

二. 从jenkins中配置在Gitlab服务器的webhooks

 gitlab创建个人访问令牌(personal access token)

2.1 登录到gitlab,点击Settings

技术图片

2.2 在右侧菜单栏中,点击Access Tokens

技术图片

2.3 输入令牌名称、到期时间、令牌作用域等选项,点击Create personal access token按钮

技术图片

2.4 查看生成的个人访问令牌,并保存到安全位置,页面刷新后将无法查看

技术图片

 

jenkins添加gitlab

技术图片

 

2.5 添加凭据

技术图片

 添加后,test测试报错

技术图片

 

点击高级模式,选择API-levle为v3

技术图片

升级git版本

[root@node1 ~]# wget https://github.com/git/git/archive/v2.2.1.tar.gz

[root@node1 ~]# tar -xf v2.2.1.tar.gz 

[root@node1 ~]# cd git-2.2.1/

[root@node1 git-2.2.1]# yum install perl-ExtUtils-MakeMaker

[root@node1 git-2.2.1]# yum install zlib-devel 

[root@node1 git-2.2.1]# make configure
GIT_VERSION = 2.2.1
GEN configure

[root@node1 git-2.2.1]# ./configure --prefix=/usr/local/git --with-iconv=/usr/local/libiconv

[root@node1 git-2.2.1]# make 

[root@node1 git-2.2.1]# make  install

[root@node1 git-2.2.1]# ln -s /usr/local/git/bin/git  /usr/bin/

[root@node1 git-2.2.1]# git --version

git version 2.2.1

问题依然出现,最后排查的过程中发现,复制的不是真正的token,这是坑爹的地方

技术图片

 

 技术图片

 2.6 jenkins查看成功

技术图片

安装成功

三 创建一个多分支

3.1 编辑jenkinsfile

 node (master) { 
    checkout scm 
    stage(Build) { 
      withMaven(maven: M3) { 
        if (isUnix()) { 
          sh mvn -Dmaven.test.failure.ignore clean install package 
        }  
        else { 
          bat mvn -Dmaven.test.failure.ignore clean install package 
        } 
      } 
    }   
    stage(Results) { 
      junit **/target/surefire-reports/TEST-*.xml 
      archive target/*.jar 
    } 
  } installinstall

提交,开始创建多分枝流水线

3.2 创建多分枝项目

技术图片

3.3 Trouble Shootting

出现错误:是因为 /usr/libexec/git-core/ 路径没在 PATH 环境变量中。

Started by user darren ning
[Sat Oct 26 14:12:57 EDT 2019] Starting branch indexing...
 > git --version # timeout=10
using GIT_ASKPASS to set credentials 
 > git ls-remote http://192.168.132.132/root/simple-maven-project-with-tests.git # timeout=10
ERROR: [Sat Oct 26 14:12:57 EDT 2019] Could not update folder level actions from source 9d2e73ea-7ee8-4128-a8b2-0d7f20e75599
hudson.plugins.git.GitException: Command "git ls-remote http://192.168.132.132/root/simple-maven-project-with-tests.git" returned status code 128:
stdout: 
stderr: fatal: Unable to find remote helper for http

    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:2042)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:1761)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:1666)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:1657)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.getRemoteReferences(CliGitAPIImpl.java:2877)
    at jenkins.plugins.git.AbstractGitSCMSource.retrieveActions(AbstractGitSCMSource.java:1139)
    at jenkins.scm.api.SCMSource.fetchActions(SCMSource.java:848)
    at jenkins.branch.MultiBranchProject.computeChildren(MultiBranchProject.java:592)
    at com.cloudbees.hudson.plugins.folder.computed.ComputedFolder.updateChildren(ComputedFolder.java:277)
    at com.cloudbees.hudson.plugins.folder.computed.FolderComputation.run(FolderComputation.java:164)
    at jenkins.branch.MultiBranchProject$BranchIndexing.run(MultiBranchProject.java:1026)
    at hudson.model.ResourceController.execute(ResourceController.java:97)
    at hudson.model.Executor.run(Executor.java:429)
[Sat Oct 26 14:12:57 EDT 2019] Finished branch indexing. Indexing took 19 ms
FATAL: Failed to recompute children of simple-maven-project-with-tests
hudson.plugins.git.GitException: Command "git ls-remote http://192.168.132.132/root/simple-maven-project-with-tests.git" returned status code 128:
stdout: 
stderr: fatal: Unable to find remote helper for http

    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:2042)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:1761)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:1666)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:1657)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.getRemoteReferences(CliGitAPIImpl.java:2877)
    at jenkins.plugins.git.AbstractGitSCMSource.retrieveActions(AbstractGitSCMSource.java:1139)
    at jenkins.scm.api.SCMSource.fetchActions(SCMSource.java:848)
    at jenkins.branch.MultiBranchProject.computeChildren(MultiBranchProject.java:592)
    at com.cloudbees.hudson.plugins.folder.computed.ComputedFolder.updateChildren(ComputedFolder.java:277)
    at com.cloudbees.hudson.plugins.folder.computed.FolderComputation.run(FolderComputation.java:164)
    at jenkins.branch.MultiBranchProject$BranchIndexing.run(MultiBranchProject.java:1026)
    at hudson.model.ResourceController.execute(ResourceController.java:97)
    at hudson.model.Executor.run(Executor.java:429)
Finished: FAILURE

添加xport PATH=/usr/libexec/git-core:$PATH到/etc/profile里

在此执行

技术图片

3.4 控制台输出

Started by user darren ning
[Sat Oct 26 14:30:07 EDT 2019] Starting branch indexing...
 > git --version # timeout=10
using GIT_ASKPASS to set credentials 
 > git ls-remote http://192.168.132.132/root/simple-maven-project-with-tests.git # timeout=10
Creating git repository in /root/.jenkins/caches/git-308bd15be61318b6e1166e23433fdd72
 > git init /root/.jenkins/caches/git-308bd15be61318b6e1166e23433fdd72 # timeout=10
Setting origin to http://192.168.132.132/root/simple-maven-project-with-tests.git
 > git config remote.origin.url http://192.168.132.132/root/simple-maven-project-with-tests.git # timeout=10
Fetching & pruning origin...
Listing remote references...
 > git config --get remote.origin.url # timeout=10
 > git --version # timeout=10
using GIT_ASKPASS to set credentials 
 > git ls-remote -h http://192.168.132.132/root/simple-maven-project-with-tests.git # timeout=10
Fetching upstream changes from origin
 > git config --get remote.origin.url # timeout=10
using GIT_ASKPASS to set credentials 
 > git fetch --tags --progress origin +refs/heads/*:refs/remotes/origin/* --prune
Checking branches...
  Checking branch master
      ‘Jenkinsfile’ found
    Met criteria
Scheduled build for branch: master
  Checking branch feature
      ‘Jenkinsfile’ found
    Met criteria
Scheduled build for branch: feature
Processed 2 branches
[Sat Oct 26 14:30:08 EDT 2019] Finished branch indexing. Indexing took 1 sec
Finished: SUCCESS

技术图片

 技术图片

 

已经完成

 

DEVOPS技术实践_08:Jenkins多分支管道

标签:创建   als   scm   技术   工具   设计   node   完成   its   

原文地址:https://www.cnblogs.com/zyxnhr/p/11747648.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!