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)构建任务并验证