集成Jenkins Harborn pipeline任务

作者 |林安杰
来源 | urlify.cn/AJzuyu
一、计划在jenkins中构建流水线任务时 , 从GitLab当中拉取代码 , 通过maven打包 , 然后构建dokcer镜像 , 并将镜像推送至harbor当中 。 Jenkins中含开发、测试、生产视图 , 开发人员可以对开发、测试的任务具有权限;测试人员仅对测试任务具有权限;管理员具有所有权限 。
二、jenkins所需插件Pipeline、docker-build-step、Docker Pipeline、Docker plugin、docker-build-step、Role-based、Authorization Strategy在jenkins中将上诉插件安装好 。
三、Jenkins设置权限(开发、测试、生产)

  • "系统管理"--->"全局安全配置"
  • "系统管理"--->"Manage and Assign Roles"
  • 选择"Manage Roles" , 在"Global roles"中添加一个user角色 , 角色权限可以自己调整 , 我这里设置了该角色的所有读权限 。
  • 编辑"Item roles" , 添加三个项目角色 , 分别代表开发、测试、生产 , 并设置权限 。 根据正则 , 若任务名称为dev或者DEV开头 , 则该项目属于开发组项目 。 编辑完成之后点击应用 , 保存 。
  • 点击保存后 , 回到"Manage and Assign Roles"页面 , 点击"系统管理"--->"管理用户"--->"新建用户";创建两个用户分别代表开发人员 , 测试人员;生产人员就用管理员用户 。
  • 用户创建完成之后 , 点击"系统管理"--->"Manage and Assign Roles"-->"Assign Roles"编辑完成之后 , 点击应用 , 保存 。
  • 创建三个新的视图 , 并按照前面的正则在分别在三个视图创建一个空的流水线任务
  • 权限验证admin用户登录:开发人员登录:测试人员登录:
四、Jenkins中设置JDK、Maven
  • 登录至Jenkins容器当中
#以root用户登录 , 避免后面下载maven时权限不足[root@node03 docker-jenkins]# docker-compose exec -u root jenkins /bin/bash root@8286c620ab88:/# java -versionopenjdk version "1.8.0_242"OpenJDK Runtime Environment (build 1.8.0_242-b08)OpenJDK 64-Bit Server VM (build 25.242-b08, mixed mode)root@8286c620ab88:/# whereis javajava: /usr/local/openjdk-8/bin/java登录到容器中发现jdk已安装;不用再安装jdk 。
  • 安装maven , 我这里将maven安装至容器中/usr/local/maven3.6
root@8286c620ab88:/# cd /usr/local/root@8286c620ab88:/usr/local# wget #下载成功后解压root@8286c620ab88:/usr/local# tar xvf apache-maven-3.6.3-bin.tar.gz#重命名root@8286c620ab88:/usr/local# mv apache-maven-3.6.3/ maven3.6
  • 设置环境变量
root@8286c620ab88:/# vim /etc/profile若没有vi或者vim命令 , 可以先安装:
root@8286c620ab88:/# apt-get updateroot@8286c620ab88:/# apt-get install vim在文件末尾加上如下内容
export JAVA_HOME=/usr/local/openjdk-8export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport PATH=$PATH:$JAVA_HOME/binexport M2_HOME=/usr/local/maven3.6export PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/bin
  • 建议把JAVA_HOME和M2_HOME记住 , 待会需要在Jenkins页面中设置
编辑完成之后保存退出 , 然后让环境变量生效 , 执行source /etc/profile , 检验是否生效
root@8286c620ab88:/# source /etc/profileroot@8286c620ab88:/# java -versionopenjdk version "1.8.0_242"OpenJDK Runtime Environment (build 1.8.0_242-b08)OpenJDK 64-Bit Server VM (build 25.242-b08, mixed mode)root@8286c620ab88:/# mvn -vApache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)Maven home: /usr/local/maven3.6Java version: 1.8.0_242, vendor: Oracle Corporation, runtime: /usr/local/openjdk-8/jreDefault locale: en, platform encoding: UTF-8OS name: "linux", version: "3.10.0-862.14.4.el7.x86_64", arch: "amd64", family: "unix"#设置完成之后即可退出容器
  • 为避免在jenkins容器中使用docker命令时权限不足 , 我这里为了方便 , 使用了最简单粗暴的方法 , 在宿主机下使用如下命令修改权限
[root@node03 data]# chmod 777 /var/run/docker.sock其他方法可以参考:在docker容器中调用和执行宿主机的docker
  • 在Jenkins页面中配置JDK和Maven , 在Jenkins页面中选择"系统管理"-->"全局工具配置"

集成Jenkins Harborn pipeline任务文章插图
集成Jenkins Harborn pipeline任务文章插图
编辑完成之后 , 点击应用 , 保存 。
五、GitLab中创建测试项目