服务器
环境:centos、jenkins(汉化版)、gitlab、node、pm2都已经安装好里,这里也不再描述安装过程。
cnpm安装环境(npm网络不是很稳定,下载慢):
|
|
jenkins设置(Gitlab Plugin、NodeJs Plugin安装)
进入jenkins的页面
点击左上角的新建任务,输入你的任务名字比如(text-web),建议名字由项目名字-前端部署的端口号,记住名字后面会用到,选择构建一个自由风格的软件任务
会进入一个页面有General、源码管理、构建触发器、构建环境、构建、构建后操作的tab页面。
1:先是General中描述,输入你想要对项目的描述。
2:源码管理,选择Git,在Repository URL输入,你要部署项目的gitlab的地址,我这里引用的方式是http不是ssh的,Credentials中选择就是你自己的gitlab的账号,还没有添加过的添加add
会出现下面页面UserName和Password添加你自己的gitlab账号,点击添加回到之前的页面在Credentials中就可以选择你添加的账号。
Branch Specifier (blank for ‘any’)输入dev,因为我只是设置dev的时候才去采用自动化构建。
3:构建触发器
选择Build when a change is pushed to GitLab. GitLab webhook ,出现下图,记住GitLab webhook Url地址:
点击高级按钮出现下图,看到Secret token,点击Generate出现一串字符,记录下来。
4:构建环境
选择Provide Node & npm bin/ folder to PATH
在NodeJS Installation选择NodeJs(之前安装过)
5:构建
点击添加构建步骤,选择执行Shell输入(deploy.sh就是要执行的脚本文件名)
记得保存,在jenkins设置中记录两个,第一构建触发器中的GitLab webhook Url地址和Secret token后续会用到。
gitlab(汉化)设置
进入要部署的gitlab项目地址,点击设置中的导入所有仓库,
在链接(URL)填入上面记录的GitLab webhook Url地址(就是jenkins你的任务地址,记得修改jenkins部署的是8000端口,要是之前直接复制的地址是8080的,一定记得改成8000端口的,一定记得改成8000端口的,一定记得改成8000端口的,重要的事情说三遍,我之前也是入坑了),在安全令牌输入Secret token后面复制的一串字符,在推送事件时间下输入dev,因为只想在dev推送的时候触发自动构建和jenkins中设置的dev相对应,点击添加Web钩子, 记得端口对应jenkins的端口。
react项目
最主要的是已经四个文件部署要用到的,config.prod.js(定义了端口和代理ip地址)、deploy.sh(运行的脚本)、pm2.json、server.js
1:config.prod.js
|
|
2:pm2.json
|
|
3:server.js
|
|
4:deploy.sh文件,要修改两个地址project_home/最后面的text-web-4005修改为你的项目-端口号,project_name就是jenkins的任务名字。
|
|
pm2遇到的坑
当我在给一个项目配置的时候pm2出现了以下错误
|
|
其它项目都是行的就是这个项目不行,后来在网上查了一通,也有人遇到这个问题,大概的解释就是在你的命令行中第一次运行pm2的那个文件夹是不能被删除的一删除就会出现这个错误,然后我运行pm2 kill然后在一个安全的目录先运行pm2 -v,问题解决了。因为我的脚本是每次部署都会把之前的文件夹删除,然后建立文件夹把必要的文件复制进去,然后解压然后删除不必要的问题,刚刚有个项目的目录是第一次运行pm2的文件夹被自动化部署的时候删除,就出现这个错误所以我在脚本里防止出现这个错误, cd /usr pm2 list,会先前去安全目录运行pm2 list,然后进入项目目录,运行pm2命令。请大家也能注意一下,在pm kill之后要先到安全目录运行以下pm2命令。