vue通过jenkins拉取git仓库自动部署

  • 下载资源
  • jenkins
  • ssh服务端
  • ssh客户端
  • 操作步骤
  • 拉取jenkins image
  • 启动jenkins
  • jenkins配置node打包环境
  • 配置ssh windows远程推送地址
  • jenkins 创建一个item,自动构建配置
  • build完成后执行的windows脚本配置
  • 总结


下载资源

我们从docker成功部署之后开始讲起。
想要完成部署需要下载几个资源。
只要你跟我环境(系统为centos7,docker20.10.6)一样,一步步按照我的操作,肯定可以成功。

jenkins

我找了很多网上的教程,但是只有jenkinsci/blueocean这个版本成功部署并构建了vue。所以我建议选择这个版本。

ssh服务端

windows安装ssh可以按这篇文章操作,安装完可以使用ssh工具测试一下。我使用的是putty客户端连接ssh。

ssh客户端

putty

操作步骤

拉取jenkins image

使用以下代码拉取:

//先看看有没有安装jenkins
docker images
//执行docker run,会自动拉取镜像 -p 8080:8080 表示映射的端口,如果占用8080了,可以把前一个端口替换掉
// -v 表示映射jenkins目录,后面会需要这个目录来查看密码
docker run -u root --rm -d -p 8080:8080 -v /jenkins:/var/jenkins_home jenkinsci/blueocean

等待完成后,检查一下是否启动成功。

//查看容器是否运行jenkins
docker ps
//查看jenkins日志 这里7798是我容器的id,替换就可以
docker logs 7798

启动jenkins

成功后,打开你的jenkins地址:

jenkins 配置ssh 秘钥_node.js


第一次进入会慢一些,大概等个几分钟(看你服务器了),进入到这个界面后,账号输入admin,密码按以下方式找到并输入:

find / -name initialAdminPassword
//找到后进入并复制
vi /jenkins/secrets/initialAdminPassword

把密码填入后,成功登录。

jenkins 配置ssh 秘钥_node.js_02

jenkins配置node打包环境

然后配置node环境:

jenkins 配置ssh 秘钥_node.js_03


进入到manage plugin后,搜索 NodeJS Plugin,之后按照提示安装就可以了。

jenkins 配置ssh 秘钥_git_04


我这里已经安装完成了。

安装完,jenkins就可以做到根据你的npm build指令,拉取并构建vue项目了。

配置ssh windows远程推送地址

如果要自动部署到远程服务器,回到manage jenkins -> configure system这里,配置ssh服务器:

jenkins 配置ssh 秘钥_node.js_05


这里填写自己的服务器地址和登录账户密码,注意remote directory这里只写"/"。

jenkins 创建一个item,自动构建配置

这里回到dashboard,创建一个item,选择freestyle就可以,之后的操作按照图示就可以了:

jenkins 配置ssh 秘钥_centos_06


jenkins 配置ssh 秘钥_vue.js_07


jenkins 配置ssh 秘钥_git_08

build完成后执行的windows脚本配置

jenkins 配置ssh 秘钥_vue.js_09


这里exec command里的autoCopy.bat文件如下所示:

autoCopy.bat

// 调用winrar解压传过来的test.tar.gz到c盘
"C:\Program Files\WinRAR\WinRAR.exe" x -o+ c:\test.tar.gz c:\
//复制并覆盖到你网站的目录
xcopy /y /c /h /r /s /e "c:\dist" "D:\XXX"
//删除解压的文件和压缩包
rd /s /q c:\dist
del /f /s /q c:\test.tar.gz

之后再blueocean里执行这个项目就行了。

jenkins 配置ssh 秘钥_vue.js_10


这样就完成了从vue从git上拉取构建,部署到windows服务器整个流程。

总结

目前由于git使用的是gitblit,并没有webhock功能,所以没实现自动拉取git代码部署。之后会再部署一个gitlab,完全实现代码部署的全自动化。