DevOps介绍

软件开发最开始是由两个团队组成:

  • 开发计划由开发团队从头开始设计和整体系统的构建。需要系统不停的迭代更新。
  • 运维团队将开发团队的code进行测试后部署上线。希望系统稳定安全运行。

这看似两个目标不同的团队需要协同完成一个软件的开发。
在开发团队指定好计划并完成coding后,需要提供到运维团队。
运维团队向开发团队反馈需要修复的BUG以及一些需要返工的任务。
这时开发团队需要经常等待运维团队的反馈。这无疑延长了事件并推迟了整个软件开发的周期。
会有一种方式,在开发团队等待的时候,让开发团队转移到下一个项目中。等待运维团队为之前的代码提供反馈。可是这样就意味着一个完整的项目需要一个更长的周期才可以开发出最终代码。

基于现在的互联网现状,更推崇敏捷式开发,这样就导致项目的迭代速度更快,但是由于开发团队与运维团队的沟通问题,会导致新版本上线的时间成本很高。这又违背的敏捷式开发的最初的目的。
那么如果让开发团队和运维团队整合到成一个团队,协同应对一套软件呢?这就被称为DexQp5s。
DexOps,字面意思是Development &Operations的缩写,也就是开发&运维。

DevOps的方式可以让公司能够更快地应对更新和市场发展变化,开发可以快速交付,部署也更加稳定。核心就在于简化Dev和ops团队之间的流程,使整体软件开发过程更快速。

整体的软件开发流程包括:

  • PLAN:开发团队根据客户的目标制定开发计划
  • CODE:根据PLAN开始编码过程,需要将不同版本的代码存储在一个库中。
  • BUILD:编码完成后,需要将代码构建并且运行。
  • TEST:成功构建项目后,需要测试代码是否存在BUG或错误。
  • DEPLOY:代码经过手动测试和自动化测试后,认定代码已经准备好部署并且交给运维团队。
  • OPERATE:运维团队将代码部署到生产环境中。
  • MONITOR:项目部署上线后,需要持续的监控产品。
  • INTEGRATE:然后将监控阶段收到的反馈发送回PLAN阶段,整体反复的流程就是DexOps的核心,即持续集成、持续部署。

安装与配置

安装gitlab

  1. wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6/gitlab-ce-12.4.2-ce.0.el6.x86_64.rpm #下载rpm包
  2. yum -y install policycoreutils openssh-server openssh-clients postfix policycoreutils-python #安装依赖
  3. rpm -ivh gitlab-ce-12.4.2-ce.0.el6.x86_64.rpm #rpm安装
  4. vim /etc/gitlab/gitlab.rb #进入配置文件
  5. external_url 'http://192.168.218.100:82'
  6. nginx['listen_port'] = 82
  7. gitlab-ctl reconfigure #根据配置文件启动
  8. gitlab-ctl restart #重启

安装maven和jdk

Maven官网下载

  1. tar -zxf apache-maven-3.8.5-bin.tar.gz -C /usr/local/
  2. mv /usr/local/apache-maven-3.8.5 /usr/local/apache-maven
  3. tar -zxf jdk-8u301-linux-x64.tar.gz -C /usr/local
  4. mv /usr/local/jdk1.8-301 /usr/local/jdk1.8

配置maven

  1. vim /usr/local/apache-maven/conf/settings.xml #修改配置文件
  2. <!-- mirrors #额外添加镜像
  3. <mirror>
  4. <id>nexus-aliyun</id>
  5. <mirrorOf>*</mirrorOf>
  6. <name>Nexus aliyun</name>
  7. <url>http://maven.aliyun.com/nexus/content/groups/public</url>
  8. </mirror>
  9. #配置jdk
  10. <profile>
  11. <id>jdk-1.8</id>
  12. <activation>
  13. <activeByDefault>true</activeByDefault>
  14. <jdk>1.8</jdk>
  15. </activation>
  16. <properties>
  17. <maven.compiler.source>1.8</maven.compiler.source>
  18. <maven.compiler.target>1.8</maven.compiler.target>
  19. <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
  20. </properties>
  21. </profile>
  22. </profiles>
  23. #开启设置的jdk配置
  24. <activeProfiles>
  25. <activeProfile>jdk-1.8</activeProfile>
  26. </activeProfiles>

安装Docker与docker-compose

安装docker环境依赖

  1. yum install -y yum-utils device-mapper-persistent-data lvm2 #安装依赖
  2. yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #配置repo
  3. yum install docker-ce docker-ce-cli containerd.io -y #安装docker
  4. systemctl start docker && systemctl enable docker #启动docker并设置开机自启
  5. yum makecache fast #索引缓存
  6. #设置内核
  7. vim /etc/sysctl.conf
  8. net.bridge.bridge-nf-call-ip6tables = 1
  9. net.bridge.bridge-nf-call-iptables = 1
  10. net.ipv4.ip_forward = 1
  11. systcl -p
  12. #安装docker-compose
  13. https://github/docker/compose/releases/tags #选择最新版
  14. #下载docker-compose-linux-x86_64
  15. chmod +x docker-compose-linux-x86_64 #设置权限
  16. mv docker-compose-linux-x86_64 /usr/bin/docker-compose #移动到bin文件夹下

安装jenkins

  1. mkdir -p /usr/local/docker/jenkins #存放存储jenkins
  2. mkdir -p /usr/local/docker/jenkins/data #存储data
  3. docker pull jenkins/jenkins #拉取最新版jenkins
  4. https://hub.docker.com/r/jenkins/jenkins/tags #查看docker中的jenkins
  5. vim docker-compose.yml
  6. version: '3.1'
  7. services:
  8. jenkins:
  9. image: jenkins/jenkins
  10. container_name: jenkins
  11. ports:
  12. - '8080:8080'
  13. - '50000:50000'
  14. volumes:
  15. - './data/:/var/jenkins_home/'
  16. chmod -R a+w data/ #设置权限,因为普通用户此时没有权限
  17. docker-compose up -d #后台启动
  18. docker logs -f jenkins #查看jenkins日志页面
  19. vim data/hudson.model.UpdateCenter.xml #进入配置界面
  20. https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json #清华国内源
  21. cat /var/jenkins_home/secrets/initialAdminPassword #查看密码

这里就是登录密码。(跳过安装推荐插件)
image.png

Jenkins配置

Git Parameter和 Publish Over SSH 插件

image.png

配置Jdk和Maven

image.png

  1. cd /usr/local/docker/jenkin_docker/data
  2. mv /usr/local/maven ./ #移动maven和jdk1.8的位置 因为前面和docker绑定的数据卷,所以内容会一并进入到docker中
  3. mv /usr/local/jdk1.8 ./
  4. Add JDK——Name无限制——/var/jenkins_home/jdk1.8docker中的位置
  5. Add Maven——Name无限制——/var/jenkins_home/mavendocker中的位置

image.png

Apply——Save

Jenkins连接服务器

配置一个脚本操作服务器

使用密码配置
image.png
拉到最下面

image.png

image.png
使用ssh配置

在jenkins服务器中,创建秘钥

  1. ssh-keygen -t rsa #创建秘钥对
  2. cat .ssh/id_rsa #查看私钥 将私钥复制到jenkins中

image.png

  1. cat .ssh/id_rsa.pub #查看jenkins服务器中的公钥 复制
  2. vi .ssh/authorized_keys #粘贴到脚本服务器的该文件中。

image.png

Jenkins构建时消息配置

配置“邮件通知”,对邮件进行配置,这样当项目构建失败时,我们能第一时间收到通知。

首先进入“Manage Jenkins”,然后进入“Configure System”,填写“Jenkins location”, 设置系统管理员邮件地址,这里的邮件地址需要和后续要设置的发邮件地址一致,

错误发送邮件

image.png

image.png

成功失败都发送邮件

安装插件 Email Extension

image.png
image.png
86235d367e6dcfadb20b1c464a20048.jpg
e71f0926e5f0a0e9541370abe8616d8.jpg

设置钉钉机器人

image.png

image.png

image.png

image.png

image.png

下载安装dingtalk——配置——钉钉

image.png

image.png

image.png

Jenkins破解管理员密码

1.破解管理员密码

  1. [root@jenkins_test3 ~]# cd /var/lib/jenkins/users/
  2. [root@jenkins_test3 users]# ls -la
  3. 总用量8
  4. drwxr-xr-x. 4 jenkins jenkins 91 11 5 07:28 .
  5. drwxr-xr-x. 18 jenkins jenkins 4096 11 5 08:59 ..
  6. drwx------. 2 jenkins jenkins 24 11 4 10:35 admin_1088696786195199031
  7. drwx------. 2 jenkins jenkins 24 11 5 07:28 noreply_2292328003593846535
  8. -rw-r--r--. 1 jenkins jenkins 407 11 5 07:28 users.xml
  9. [root@jenkins_test3 users]# cd admin_1088696786195199031
  10. [root@jenkins_test3 admin_1088696786195199031]# vim config.xml
  11. 搜索定位到<passwordHash>那一行,修改为
  12. <passwordHash>#jbcrypt:$2a$10$usctvlMlqJ8XswbJ0QCcRuZ6ItKL30r0mEXXi5cXCrnWITuyP2E5W</passwordHash>
  13. [root@jenkins_test3 admin_1088696786195199031]# systemctl restart jenkins //重启jenkins
  14. 新密码为000000

2.手动设置随机字符串
若不想使用上述的密码,我们也可以自己定义一个随机字符串,进入jenkins界面,点击右上角admin,点击设置,下拉找到“密码”,自己定义一个随机字符串,将自己定义的随机字符串保存下来,位置自由,若以后忘记了密码,可在 /var/lib/jenkins/users/admin 文件中,将字符串修改成自己定义的字符串,这样密码就修改成功了。

Jenkins实现基础CI操作

创建项目

image.png

image.png

image.png

image.png

连接gitlab

创建gitlab仓库
image.png

  1. VSN——创建git仓库——
  2. IDEA终端中输入
  3. git config --global user.name "Administrator"
  4. git config --global user.email "admin@example.com"
  5. git clone http://192.168.218.152/root/testqqq.git

image.png

image.png

image.png

jenkins中新建项目

image.png

创建项目

image.png

设置maven构建

image.png

设置构建后命令

image.png

image.png

创建docker文件

image.png

  1. 别忘记推送到gitlab

开始构建和构建流程

image.png
构建流程:

  1. jenkins从gitlab中拉取代码
  2. 代码会被存放到 /var/jenkins_home/workspace
  3. jenkins会使用maven进行构建打包
  4. 将工作空间中target文件夹打包的.jar转移到test服务器设置的位置中,docker文件也是同理
  5. 最后执行构建完参数。

整个流程,jenkins会通过文件的返回值是否为0 来判断命令是否执行成功。

部署java项目

先在gitlab中创建项目

  1. wget https://codeload.github.com/94fzb/zrlog/zip/master #下载zrlog文件
  2. du -sh master #查看包大小
  3. unzip master #解压压缩包
  4. cd zrlog-master #进入文件夹
  5. git init #初始化git
  6. git remote rm origin #移除原有的的origin
  7. git remote add origin http://192.168.218.152:82/root/zrlog.git #添加远程库
  8. git push -u origin master #推送到master分支

image.png

image.png

安装jdk在远程机器上

  1. tar -zxf jdk-8u301-linux-x64.tar.gz -C /usr/local/ #下载jdk-8 并存放至/usr/local下
  2. mv /usr/local/jdk1.8.0_301/ /usr/local/jdk8 #修改文件夹名
  3. vim /etc/profile #配置环境变量
  4. export JAVA_HOME=/usr/local/jdk8
  5. export PATH=$JAVA_HOME/bin:$PATH
  6. export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  7. java version #验证

安装tomcat

  1. tar -zxf apache-tomcat-8.5.70.tar.gz -C /usr/local/tomcat
  2. vim /usr/local/tomcat/apache-tomcat-8.5.70/conf/tomcat-users.xml
  3. <role rolename="admin"/>
  4. <role rolename="admin-gui"/>
  5. <role rolename="admin-script"/>
  6. <role rolename="manager"/>
  7. <role rolename="manager-gui"/>
  8. <role rolename="manager-script"/>
  9. <role rolename="manager-jmx"/>
  10. <role rolename="manager-status"/>
  11. <user name="admin" password="MLYliao118235" roles="admin,manager,admin-gui,admin-script,manager-gui,manager-script,manager-jmx,manager-status" />
  12. </tomcat-users>
  13. vim /usr/local/tomcat/apache-tomcat-8.5.70/webapps/manager/META-INF/context.xml
  14. 找到 allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
  15. 向其中加入我们要使用的网段,修改如下:
  16. allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|192.168.222.*" />

找到“Managing Tomcat”,点击“manager webapp”
image.png
登录账号后
image.png

安装maven

前面已经安装过了,安装Maven Integration pluginDeploy to container Plugin 插件
systemctl restart jenkins 重启jenkins

创建maven项目

image.png

image.png

image.png
Deploy war/ear to a container 需要添加前面设置的tomcat设置。
image.png

image.png

立即构建即可
image.png

Jenkins实现基础CD操作

image.png

image.png

image.png

SonarQube/代码检测

开源的代码分析平台,免费版支持17种语言分析,代码漏洞,代码规范等。

搭建平台

  1. echo "vm.max_map_count=262144" >> /etc/sysctl.conf #追加虚拟内存参数s
  2. sysctl -p
  3. docker pull postgres && docker pull sonarqube:8.9.6-community
  4. version: '3.1'
  5. services:
  6. db:
  7. image: postgres
  8. container_name: db
  9. ports:
  10. - 5432:5432
  11. networks:
  12. - sonarnet
  13. environment:
  14. POSTGRES_USER: sonar
  15. POSTGRES_PASSWORD: sonar
  16. sonarqube:
  17. image: sonarqube:8.9.6-community
  18. container_name: sonarqube
  19. depends_on:
  20. - db
  21. ports:
  22. - 9000:9000
  23. networks:
  24. - sonarnet
  25. environment:
  26. SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar
  27. SONAR_JDBC_USERNAME: sonar
  28. SONAR_JDBC_PASSWORD: sonar
  29. networks:
  30. sonarnet:
  31. driver: bridge
  1. 默认账号密码
  2. admin
  3. admin

image.png
再次配置
image.png

使用maven添加代码到Sonar

image.png

image.png

  1. vim data/maven/conf/settings.xml
  2. #配置SonarQube
  3. #是在上面配置的基础上
  4. <profile>
  5. <id>sonar</id>
  6. <activation>
  7. <activeByDefault>true</activeByDefault></activation>
  8. <properties>
  9. <sonar.login>admin</sonar.login>
  10. <sonar.password>MLYliao118235</sonar.password>
  11. <sonar.host.url>http://192.168.218.153:9000</sonar.host.url></properties>
  12. </profile>
  13. #使用cmd或者IDE 进入到项目文件夹下 执行以下命令
  14. mvn sonar:sonar

image.png

image.png

使用sonar-scanner添加代码到Sonar

https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/ 官网下载
image.png

image.png

  1. cd /usr/local/docker/jenkins/data/workspace/mytest1 #进入到jenkins的项目文件目录中
  2. /usr/local/docker/jenkins/data/sonar-scanner/bin/sonar-scanner -Dsoanr.sources=./ \
  3. -Dsonar.projectname=linux-test -Dsonar.login=bec3b80a1595057191d90ec1f1136fc14ba10165 \
  4. -Dsonar.projectKey=linux-test -Dsonar.java.binaries=./target/
  5. #soanr.sources 代码地址
  6. #sonar.projectname 项目名称
  7. #sonar.login 登录token
  8. #sonar.projectKey 项目钥匙
  9. #sonar.java.binaries 项目位置

image.png

SonarQube整合jenkins

下载插件
Localization: Chinese (Simplified) 和 SonarQube Scanner for Jenkins
如果下载失败可以从网上下载,插件文件在数据目录下的plugin文件夹中
重启jenkins

image.png

添加SonarQube

image.png

image.png
添加SonarQube全局变量
image.png

image.png

开始构建
如果出错了,则删除
rm -rf data/workspace/mytest1/.scannerwork/

构建成功后
image.png

Harbor自建仓库部署

下载harbor
https://github.com/goharbor/harbor/releases

  1. tar -zxf harbor-offline-installer-v2.5.0.tgz -C /usr/local/
  2. cd /usr/local/harbor
  3. cp harbor.yml.tmpl harbor.yml
  4. vim harbor.yml
  5. #设置ip 删除https配置
  6. ./install.sh

image.png

harbor基本操作

创建项目

image.png

如果想要往harbor推送项目,镜像的格式必须是:
harbor地址/项目名/镜像名:版本

配置私有镜像地址 在json中

  1. vim /etc/docker/daemon.json
  2. {
  3. "registry-mirrors": ["https://zamu0pih.mirror.aliyuncs.com"],
  4. "insecure-registries": ["192.168.218.153:80"]
  5. }
  6. systemctl restart docker

上传镜像

  1. docker tag f1108e0ecc59 192.168.218.153:80/repolist/mytest1:v1.0.0 #设置镜像
  2. docker login -u admin -p Harbor12345 192.168.218.153:80 #设置用户密码
  3. docker push 192.168.218.153:80/repolist/mytest1:v1.0.0 #上传
  4. #上传成功后就可以拉取镜像
  5. docker pull 192.168.218.153/repolist/mytest1 #从harbor拉取镜像

image.png

harbor整合到镜像中

要让docker中其他用户也拥有足够的权限去操作docker,所以需要修改docker.sock的文件权限

  1. cd /var/run/
  2. chown root:root docker.sock
  3. chmod o+rw docker.sock
  4. #修改docker-compose
  5. version: '3.1'
  6. services:
  7. jenkins:
  8. image: jenkins/jenkins:2.332.3-lts
  9. container_name: jenkins
  10. ports:
  11. - '8080:8080'
  12. - '50000:50000'
  13. volumes:
  14. - './data/:/var/jenkins_home/'
  15. - '/var/run/docker.sock:/var/run/docker.sock'
  16. - '/usr/bin/docker:/usr/bin/docker'
  17. - '/etc/docker/daemon.json:/etc/docker/daemon.json'
  18. docker-compose up -d #重启并载入配置

harbor整合jenkins

dockerfile文件就不再需要了,可以删除了

  • 我们要将需要打包的文件移动到指定位置 docker下
  • 以docker文件夹下的内容构建镜像
  • 登录harbor账号
  • 修改镜像样式并且上传到harbor

image.png

  1. mv target/*.jar docker/
  2. docker build -t mytest01:$liaotest docker/
  3. docker login -u admin -p Harbor12345 192.168.218.153:80
  4. docker tag mytest01:$liaotest 192.168.218.153:80/repolist/mytest03:$liaotest
  5. docker push 192.168.218.153:80/repolist/mytest03:$liaotest

目标服务器准备脚本文件

  1. 告知目标服务器拉取哪个镜像
  2. 判断当前服务器是否正在运行容器,需要删除
  3. 如果目标服务器已经存在当前镜像,需要删除
  4. 目标服务器拉取harbor.上的镜像
  5. 将拉取下来的镜像运行成容器 ```bash ./deploy.sh 192.168.218.153:80 repolist mytest03 v3.0.0 8081

!/bin/bash

harbor_addr=$1 harbor_repo=$2 project=$3 version=$4 port=$5

imageName=$harbor_addr/$harbor_repo/$project:$version

echo $imageName

containerID=docker ps -a | grep ${project} | awk '{print $1}' echo $containerID if [ “$containerID” != “” ]; then docker stop $containerID docker rm $containerID fi

tag=docker images | grep ${project} | awk '{print $2}' echo $tag

if [[ “$tag” =~ “$version” ]]; then docker rmi -f $imageName fi

docker login -u admin -p Harbor12345 $harbor_addr docker pull $imageName docker run -d -p $port:8080 —name $project $imageName echo “SUCCESS”

  1. <a name="DoZP1"></a>
  2. ## 基于Harbor的最终部署
  3. ![image.png](https://cdn.nlark.com/yuque/0/2022/png/22750215/1652266957151-b86ef48d-4388-494a-99ba-4bf9ec891bb4.png#clientId=u5a6a98ac-0ba6-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=695&id=u9f8f16c3&margin=%5Bobject%20Object%5D&name=image.png&originHeight=695&originWidth=1004&originalType=binary&ratio=1&rotation=0&showTitle=false&size=36593&status=done&style=none&taskId=ud20ca788-ec2d-4767-b48e-9dcaf8ca6ed&title=&width=1004)<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/22750215/1652266972515-cde86b78-1cfd-41e7-ba33-d514887c5cc5.png#clientId=u5a6a98ac-0ba6-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=774&id=u6661c874&margin=%5Bobject%20Object%5D&name=image.png&originHeight=774&originWidth=1013&originalType=binary&ratio=1&rotation=0&showTitle=false&size=34183&status=done&style=none&taskId=u82578205-834c-474d-92b1-88f79e9ca80&title=&width=1013)
  4. <a name="yKI1B"></a>
  5. # Jenkins流水线任务
  6. 添加插件 **Pipeline:Job**
  7. ![image.png](https://cdn.nlark.com/yuque/0/2022/png/22750215/1652406112106-4a6c89be-7cbc-4f23-9417-1155eebc72ad.png#clientId=u117bc135-c7e9-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=104&id=u1df55366&margin=%5Bobject%20Object%5D&name=image.png&originHeight=104&originWidth=899&originalType=binary&ratio=1&rotation=0&showTitle=false&size=14319&status=done&style=none&taskId=uc38ca25e-dd62-4e8b-97ce-ebc75184a24&title=&width=899)
  8. <a name="YShY6"></a>
  9. ## 创建流水线任务
  10. ![image.png](https://cdn.nlark.com/yuque/0/2022/png/22750215/1652406464407-5a37ccfa-3f75-433f-a585-5843e007bbe4.png#clientId=u117bc135-c7e9-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=750&id=u92ba0e4f&margin=%5Bobject%20Object%5D&name=image.png&originHeight=750&originWidth=1263&originalType=binary&ratio=1&rotation=0&showTitle=false&size=34339&status=done&style=none&taskId=u2fe6bb55-26c5-4b46-a1f8-297a5c26db7&title=&width=1263)
  11. <a name="hrBOq"></a>
  12. ## 流水线脚本
  13. ```bash
  14. #所有脚本命令放在pipline中
  15. pipeline{
  16. # 指定任务在哪个集群节点中执行 any 任意一个
  17. agent any
  18. environment {
  19. key = 'value' #声明全局变量 方便后面使用
  20. }
  21. stages {
  22. stage('拉取git代码') {
  23. steps {
  24. echo '拉取成功'
  25. }
  26. }
  27. stage('maven构建项目') {
  28. steps {
  29. echo '构建成功'
  30. }
  31. }
  32. stage('代码质量检测') {
  33. steps {
  34. echo '代码质量检测成功'
  35. }
  36. }
  37. stage('docker 制作自定义镜像') {
  38. steps {
  39. echo 'docker 制作自定义镜像成功'
  40. }
  41. }
  42. stage('harbor镜像推送') {
  43. steps {
  44. echo 'harbor镜像推送成功'
  45. }
  46. }
  47. stage('publish 通知目标服务器') {
  48. steps {
  49. echo 'publish 通知目标服务器成功'
  50. }
  51. }
  52. }
  53. }

image.png

在流水线语法中,有很多语法可以帮你自动生成脚本

image.png

jenkinsfile维护脚本

从gitlab中查看jenkinsfile,进行流水线工作查看,进行构建。

image.png

image.png

pipline拉取git代码

设置自定义标签,用来指定版本号
image.png

生成checkout:Check out from version control流水线语法
image.png
设置到jenkinsfile文件中,并且添加上自定义函数

image.png

构建即可

image.png

pipline maven构建项目

image.png
找到docker中maven的位置
image.png

pipline SonarQube

image.png

image.png

pipline 制作docker镜像

image.png

image.png

pipline 推送harbor

image.png

pipline 通知目标服务器部署项目

此处可以调用jenkins 和 jenkinsfile中的变量
image.png

注意这里要改成双引号
image.png

pipline 设置钉钉通知

直接在jenkinsfile中添加
image.png

  1. #无需添加到stages中 而是在stages后
  2. post {
  3. success {
  4. dingtalk(
  5. robot: 'liao', #robot必须与配置的id一致
  6. type: 'MARKDOWN',
  7. title: "success: ${JOB_NAME}",
  8. text: ["- 成功构建: ${JOB_NAME} \n - 版本: ${tag} \n - 持续时间: %{currentBuild.durationString}"]
  9. )
  10. }
  11. failure{
  12. dingtalk(
  13. robot: 'liao',
  14. type: 'MARKDOWN',
  15. title: "success: ${JOB_NAME}",
  16. text: ["- 构建失败: ${JOB_NAME} \n - 版本: ${tag} \n - 持续时间: %{currentBuild.durationString}"]
  17. )
  18. }
  19. }