美文网首页
jenkins(Linux)自动部署vue项目至IIS(Wind

jenkins(Linux)自动部署vue项目至IIS(Wind

作者: 肉包君 | 来源:发表于2020-07-27 17:48 被阅读0次

    2020-07-27

    jenkins(Linux)自动部署vue项目至IIS(Windows)

    前提:jenkins部署完成(基于Linux)

    gitlab部署完成(基于Linux)(上传可用vue项目,例子:add-name)

    IIS 部署完成(基于Windows)

    以上平台的部署过程已有文档记录,或自行百度

    思路

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

    过程

    1.Windows安装winSSHD工具

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

    安装过程见文档:Windows安装winsshd及配置 https://www.jianshu.com/p/a30e71a77279

    测试是否能从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


    hh.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


    ii.png

    用interact会一直停留在远程主机的终端上退不出来,所以无法执行本地的任何命令和脚本

    做完以上修改后,再次构建,完美搞定!

    相关文章

      网友评论

          本文标题:jenkins(Linux)自动部署vue项目至IIS(Wind

          本文链接:https://www.haomeiwen.com/subject/sgftrktx.html