Jenkins学习(执行命令路径,脚本上传静态html代码)(一)

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值