影子叩

搜索
夜间模式◐

jenkins(Linux)自动部署vue项目至IIS(Windows)
· summer · 发布于 · 2020-07-27 · 337 次点击 · 复制地址

倔强青铜Ⅱ   summer  · 2020-07-27 22:46:07 · 显示全部楼层 · 阅读
想要实现jenkins(linux)自动部署vue项目至IIS(windows),前提是:jenkins部署完成(基于Linux),还有基于Linuxgitlab部署完成,还有基于WindowsIIS 部署完成,具体步骤一起来看看吧。

Linux系统下的主机之间通过ssh可远程登录并执行命令,因此Linux系统的主机与Windows系统的主机应该也能通过ssh进行远程执行命令,前提是两主机的 ip是可以通信的。
过程
1.Windows安装winSSHD工具

Windows本身是不支持ssh,需下载工具并进行配置方能使用ssh功能

工具包下载地址:链接:https://pan.baidu.com/s/1zvBLwUybjY2SGnHQP4nWBA 提取码:uo9q

安装过程见文档:Windows安装winsshd及配置

测试是否能从jenkins服务器 ssh 和scp 到IIS服务器
(jenkisn)
# ssh administrator@172.10.0.108 -p2200 "ls"      #第一次连接输入yes, administrator的密码
# scp -P2200 -r kk administrator@172.10.0.108:/d:/Web/    #把jenkins当前目录下的kk文件夹复制到iis的D盘下的Web目录中
2.配置jenkins和gitlab之间秘钥通信

(使jenkins能自动从gitlab上拉取最新的代码)

详细过程见文档:Jenkins自动部署vue项目至Nginx服务器
3.jenkins服务器编写执行脚本

脚本均写在jenkins服务器上

vim /root/.jenkins/workspace/add-name/cpiis.sh
#!/usr/bin/expect
#author perin_qin
#作用:使用expect交互功能(在终端自动输入密码),将jenkins本机打包好的dist目录拷贝到IIs的网站根目录下

set timeout 20
spawn scp -P2200 -r dist administrator@172.10.0.108:/d:/Web/
expect "password:"
send "k*****\r"
expect eof

(expect eof:表示交互结束,退回到原用户jenkins的终端)

chmod a+x /root/.jenkins/workspace/add-name/cpiis.sh #给脚本可执行权限

/usr/bin/expect /root/.jenkins/workspace/add-name/cpiis.sh #执行脚本的方式

vim /root/.jenkins/workspace/add-name/iisrestart.sh
#!/usr/bin/expect
#author perin_qin
#作用:远程控制IIS服务重启

set timeout 20
spawn ssh administrator@172.10.0.108 -p2200 "iisreset /restart"
expect "password:"
send "k*****\r"
expect eof

chmod a+x /root/.jenkins/workspace/add-name/iisrestart.sh

/usr/bin/expect /root/.jenkins/workspace/add-name/iisrestart.sh
4.配置jenkins自动构建

Jenkins---新建项目---项目名称:win-add-name,自由风格---项目配置:(源码管理:Git,克隆地址粘贴gitlab上的,账户选定义好的>>构建环境:Provide Node & npm bin。。。>>构建:执行shell,内容如下>>应用>>保存)---立即构建
执行shell
#cd /root/.jenkins/workspace/add-name/
node -v
npm -v
npm install
rm -rf ./dist/*
npm run build
#拷贝新打包好的目录dist到IIS的项目目录下(默认覆盖原有)
/usr/bin/expect /root/.jenkins/workspace/add-name/cpiis.sh
#重启IIS服务
/usr/bin/expect /root/.jenkins/workspace/add-name/iisrestart.sh
5.查看项目是否部署成功

IIS的项目目录(d:\Web\)下查看是否有dist目录,目录下是否有内容

浏览器:http://172.10.0.108:8089/ 查看网页是否显示项目内容
构建过程中出现的问题

问题:构建过程显示成功,但是执行shell中的脚本没有生效,比如没有将dist拷贝到IIS目录下,IIS远程重启失败等

原因:

1.执行的脚本的用户(jenkins)和脚本的属主(root)不一致

2.脚本的结尾用interact,没有退出远程终端

解决:

1.统一用户身份执行脚本,实验中直接把jenkins用户改为root用户

vim /etc/sysconfig/jenkins
20525318-9851c247ef401a82.png
然后重启jenkins服务

/usr/local/tomcat/bin/shutdown.sh #因为是部署在Tomcat下的,如果是不带Tomcat的直接systemctl restart jenkins (等5秒后再启动)

/usr/local/tomcat/bin/startup.sh

修改一下三个目录的属主属组,原本是jenkins,最好确认一下其他相关目录和文件是否也是root属主的

chown -R root.root /var/lib/jenkins

chown -R root.root /var/cache/jenkins

chown -R root.root /var/log/jenkins

修改配置文件后最好连jenkins页面的用户也切换一下(因为不会切换用户,所以我改成了免账户密码登录,哈哈哈哈哈)

2.脚本的结尾全改为expect eof

20525318-118b2aa971121aff.png
如果你使用interact会一直停留在远程主机的终端上退不出来,所以无法执行本地的任何命令和脚本,可以操作上述步骤,重新建立,就可以快速解决问题啦。

免责声明:
影子论坛所发布的一切内容仅限用于学习和研究目的,请勿用于商业或者非法用途,否则一切后果由用户自负。
请支持正版得到更好的正版服务。如有侵权请邮件与我们联系处理。Mail To:swatxhim@outlook.com

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表