Jenkins的安装
可参考https://www.cnblogs.com/yangzp/p/12953810.html
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum install jenkins -y
一、jenkins-执行命令路径
入门的操作:
左侧栏 “新建任务” --> 自由风格项目
勾选“丢弃旧的构建”,里面一般写5~7天即可。
拉到后面“构建” --> 执行shell
随后点立即构建。随后看“控制台输出”。在/var/lib/jenkins/workspace/freestyle-job有刚才创建的文件testFreestyle-job.txt
二、Jenkins脚本上传html静态代码
参考html静态代码,网站: https://gitee.com/kangjie1209/monitor 。
代码git clone https://gitee.com/kangjie1209/monitor.git
实验环境centos7 .
192.168.26.136 nginx web服务器。
192.168.26.137 Jenkins + gitlab ,开发代码存放库。
在137 上操作存放开发代码:
在gitlab上新创个project
# Push an existing folder 初始化并上传全部代码
cd /root/myCode/monitor-master
git init
git remote add origin git@192.168.26.137:test/monitormaster.git
git add .
git commit -m "Initial commit"
git push -u origin master
回到Jenkins页面,使用刚才创建的任务。在源码管理处,输入Repository URL。
这里遇到个报错:无法连接仓库 command “git ls-remote -h” xxxxxxx returned status code 128
检查思路有:
1、gitlab对应的账号是develop,有权限下载代码的。
2、gitlab和Jenkins安装在同一台机器,而且在此机器上是正常拉取代码的。
3、/var/log/Jenkins/Jenkins.log 好像没啥可用的消息
4、添加凭据credentials , 添加gitlab服务器上的私钥到SSH Username with private key。
参考:https://www.cnblogs.com/fengwenqian/p/12133854.html 《jenkins-通过ssh username with private key配置节点服务器》
A:为何这边Jenkins要求的是 私钥呢? 而gitlab那边要的是公钥呢 ?
B:公钥加密,私钥解密,你要去拉git,你就要有那个库的权限,权限就是那个key控制的呢
此时保存,立即构建。他会将代码拉取到workspace处。/var/lib/jenkins/workspace/freestyle-job
在137服务器编写推送脚本: 136和137已做ssh免密操作 ,
vim /server/scripts/deploy.sh ,大体意思就是将Jenkins下载的代码,复制到136的nginx处。
#!/bin/bash
CODE_DIR=/var/lib/jenkins/workspace/freestyle-job
WEB_DIR=/srv/nginx
IP=192.168.26.136
TIME=`date +%F-%H-%M-%S`
cd $CODE_DIR && tar -zcf /tmp/web-${TIME}.tar.gz ./*
scp /tmp/web-${TIME}.tar.gz $IP:$WEB_DIR
ssh root@$IP "cd $WEB_DIR && mkdir web-${TIME}"
ssh root@$IP "cd $WEB_DIR && tar xf web-${TIME}.tar.gz -C web-${TIME} && rm -rf web-${TIME}.tar.gz"
ssh root@$IP "cd $WEB_DIR && rm -rf html && ln -s web-${TIME} html"
在本地执行无误后,去到Jenkins的freestyle-job的构建添加 sh /server/scripts/deploy.sh ,保存后立即构建。
但又报错了。Host key verification failed
参考:https://www.cnblogs.com/fawaikuangtu123/p/10316404.html 《Jenkins解决Host key verification failed》
根据上面链接博客,对Jenkins用户做了提权和发送自身公钥给136服务器。此时Jenkins用户已能免密登录136服务器, 继续执行,又报新的错误:但是执行脚本提示Permission denied,但最终构建结果是SUCCESS。
随后做的操作有: chmod 777 deploy.sh ,而且上面Jenkins不是提权了吗?怎么还没权限?看网上说执行的时候他是使用Jenkins用户来执行的。
看样子,切到Jenkins用户执行脚本,报错信息跟Jenkins控制台的一样。又搞了半天
有点迷 为什么执行的是。jenkins@192.168.26.136’s password: ,明明写的是sudo ssh root@$IP "cd $WEB_DIR 。
最终: 使用 sudo sh deploy.sh 就好了。
都OK之后,就可以模拟开发上传最新代码,之后执行Jenkins构建。部署最新代码了。
=分割线=
根据这篇博客 https://www.cnblogs.com/fawaikuangtu123/p/10295571.html , 看来运作时是用Jenkins用的,他全部改成root用户来运行构建Jenkins任务。
参考博客:https://www.cnblogs.com/fawaikuangtu123/category/1386781.html 《Jenkins 随笔》
蛇皮来到的,别人视频5分钟的内容,照模样实践,出错不断 -。-
END