关于Jenkins的问题处理、自动部署、邮件通知

1. 问题处理

1) 用Jenkins构建任务的时候,通过console可以看出:无法识别mvn

在这里插入图片描述
这是因为我们配置任务的时候,没有选择自己填写的maven,也可能是配置maven的时候就没有配置好,正确的maven配置和选择应该是如下的步骤:
在这里插入图片描述
在这里插入图片描述
然后我们在配置任务的时候选择自己配置的maven
在这里插入图片描述
在这里插入图片描述

2) 关于post-build actions里的archive the artifacts的说明

这个配置是要归档文件,加上它的作用就是在本次构建任务的页面可以看到一个war包,这个war包点击就可以下载,很方便,写的时候有自己的语法,默认情况下是指的/var/lib/jenkins/workspace/下,比如,要匹配一个war包,可以如下写
在这里插入图片描述
加不加归档文件的比较,如下:
在这里插入图片描述
在这里插入图片描述
而且在本地也会有目录比较清晰的war包
在这里插入图片描述

3)GitHub上自己账户的某个项目时公开的,但是在Jenkins任务中添加了账号和密码却无法拉取代码

如果这种方法不可以拉取代码,尝试用另外一种方法:公钥和私钥,在本机上产生一个密钥对,把公钥上传到GitHub上,在Jenkins任务中,直接输入私钥

2. 自动部署web项目(gameoflife)

1) 主机规划

主机      角色      ip地址
host1  jenkins 192.168.20.121
host2  tomcat  192.168.20.122

2) 配置Jenkins任务

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

cp到/var/www/html目录
在这里插入图片描述

3) 去掉Jenkins的安全设置,方便后续下载war包

在这里插入图片描述

4) 采用wget下载war包的灵感来源

如果任务有构建成功的,我们直接回到任务的页面,可以看到如下的lastsuccess,单击进去
在这里插入图片描述
在这里插入图片描述
点击target进入编译输出目录,然后如下
在这里插入图片描述
可以看到war包就在当前路径下,而且不重复,因为这是最后一次成功的,我们在终端试一下下载这个看OK不OK,如下,妥妥的,记得下载的时候在url后边加上war包名字

[root@localhost ~]# wget -c http://192.168.20.121:8080/job/game-of-life/lastSuccessfulBuild/artifact/gameoflife-web/target/gameoflife.war
--2019-06-28 21:56:48--  http://192.168.20.121:8080/job/game-of-life/lastSuccessfulBuild/artifact/gameoflife-web/target/gameoflife.war
Connecting to 192.168.20.121:8080... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3192492 (3.0M) [application/octet-stream]
Saving to: ‘gameoflife.war’

100%[===============================================================>] 3,192,492   --.-K/s   in 0.02s   

2019-06-28 21:56:48 (152 MB/s) - ‘gameoflife.war’ saved [3192492/3192492]

[root@localhost ~]# ls gameoflife.war 
gameoflife.war

因此,我们要修改一下任务栏的post-build那一块了,直接ssh就行,不要cp命令了,如下

ssh root@192.168.20.122  /tmp/test/autodeploy.sh

-x 可以在Jenkins任务的console中看到脚本执行过程
-s 可以使bash从标准输入中读入命令

5)host1的准备工作

   15  ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.20.122
   16  ssh root@192.168.20.122
   17  exit

6)host2的准备工作

安装Tomcat,不启动
    5  mkdir /tmp/test
    6  cd /tmp/test/
    7  vim autodeploy.sh
    8  chmod +x autodeploy.sh 

脚本内容如下
#!/bin/bash
wget -O /root/gameoflife.war -c http://192.168.20.121:8080/job/game-of-life/lastSuccessfulBuild/artifact/gameoflife-web/target/gameoflife.war
mkdir -p /backup
\cp -r  /usr/local/tomcat/webapps/ROOT/* /backup
rm -rf /usr/local/tomcat/webapps/ROOT/*
unzip /root/gameoflife.war -d /usr/local/tomcat/webapps/ROOT/
source /etc/profile
/usr/local/tomcat/bin/startup.sh

7)构建任务并观察console输出结果

在这里插入图片描述
可以看出,ssh这一步失败了,原因是秘钥验证失败,而我们已经做免密登录了,但是还是不行,这是因为免密登录不是Jenkins用户做的,不启用,而Jenkins用户存在一定的错误,我们需要修改过来才行,所以,接下来,我们的任务是,先让Jenkins用户正常,然后用Jenkins用户做免密登录

[root@localhost html]# tail -n2 /etc/passwd
jenkins:x:990:985:Jenkins Automation Server:/var/lib/jenkins:/bin/false
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
把Jenkins用户的登陆环境换成/bin/bash

[root@localhost html]# su jenkins
bash-4.2$ 
切换到Jenkins用户之后,发现没有体现出用户名

[root@localhost html]# vim /root/.bash_profile 
在尾部添加 export PS1='[\u@\h \W]\$ '
[root@localhost html]# source /root/.bash_profile 

如果现在的用户是root用户就OK,如果是普通用户,需要改一下配置文件,免密码
[root@localhost html]# vim /etc/sudoers
root    ALL=(ALL)       ALL  #原有的
jenkins ALL = NOPASSWD: ALL #添加的 为Jenkins用户免密码操作

[root@localhost html]# su jenkins
[jenkins@localhost html]$
[jenkins@localhost root]$ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/var/lib/jenkins/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /var/lib/jenkins/.ssh/id_rsa.
Your public key has been saved in /var/lib/jenkins/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:2cKqw8UgHIAQ00+bverUowxD6bG8jK1tV/upe1Iz1e4 jenkins@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
|B+               |
|..o .            |
| . + +     .     |
|  o.= .. o. .    |
|  +. o .S...     |
| + o .=.+.  .    |
|  *..++o o .     |
| =.*=oo...  E    |
|oo=o=.o*o        |
+----[SHA256]-----+
[jenkins@localhost root]$ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.20.122
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/var/lib/jenkins/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.20.122's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@192.168.20.122'"
and check to make sure that only the key(s) you wanted were added.

现在我们再试试构建任务

OK,自动部署成功了,console输出结果如下图

在这里插入图片描述
这个图上的inflating是我在Tomcat主机上unzip命令的输出结果,因为Tomcat主机的脚本里最后一条命令是启动Tomcat,所以,任务成功后,Tomcat应该是已经部署应用并且也成功启动了,下边我们直接去Tomcat主机的8080端口,页面如下

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
到这张图,之后一直不变了

这是一个细胞自动机的游戏,是模拟细胞的生命过程,点击开始之后会出现九宫格,你可以任选几个格子,然后点击下一步,再点击下一步,看一下细胞的生命过程,游戏规则如下:

任何少于两个邻居的活细胞都会死亡,好像是由于人口不足造成的。
任何居住着三个以上邻居的活牢房都会因人满为患而死亡。
任何一个有两个或三个邻居的活体细胞都可以传到下一代
已经死了的细胞,如果有三个相邻的存活细胞,会复活

研究一下,构建完成后,如果邮件通知
研究一下find 批量操作

3. 邮件通知

1)安装Email Ext Recipients Column插件

2)配置邮箱

在这里插入图片描述

先填写管理员邮箱
在这里插入图片描述
填写授权邮箱(填写smtp授权码)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
填写邮件通知
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在下边,可以写个收件人,简单测试一下好不好用
在这里插入图片描述
在这里插入图片描述

3)编辑任务

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里,收件人和管理员发件人一样,否则发不出去
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
requester是指当前触发构建的Jenkins用户

4)构建任务并验证

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值