愉快的一天一般从遇到问题时结束。
问题描述:在更新本地代码提交后-git push,需要部署到测试环境测试,在代码部署完后发现了新的问题----修改后的页面未在stage环境更新,于是我打开代码仓库,发现代码已经提交,并且已有提交记录,在重新部署代码无果后,果断摇人 找部署服务负责人。人说:“你脚本里定义的编译过程有问题(没编译,实际是没有执行编译打包命令(build文件、/dist目录))”。
我的原脚本配置文件://重点关注这
agile.js:
###################
# 线上环境编译
###################
build:
# 配置node服务环境
env:
node: '/usr/local/node/node-v8.11.3/bin/node'
npm: '/usr/local/node/node-v8.11.3/bin/npm'
# 静态资源上传CDN(没有可不填)
static-cdn:
module:
# 上传文件或文件夹地址
- dist: './dist'
# vos 目录地址
release: 'fe-static/vfe/um-workflow'
# 编译命令
command:
- 'npm install --unsafe-perm'
- 'npm run online-build'
###################
# 测试环境编译
###################
dev:
# 编译命令
command:
- 'ls -la ./' //问题点-重点关注这
# 测试环境部署
deploy-defore: # 部署前置hook
- 'ls -la ./dist'
deploy: # 代码部署
intend: # 测试目标机器上执行命令
- 'mkdir -p /opt/vipkid/vfe/um-workflow'//问题点-重点关注这
output: './dist/*' # 编译完成后要发布的目录
path: '/opt/vipkid/vfe/um-workflow'//问题点-重点关注这 # 发布到目标机器的目录
command: # 发布完成后的操作
- 'ls -la /opt/vipkid/vfe/um-workflow'//问题点-重点关注这
以及nginx文件(位于一个名为“工程效率”的项目(env-deploy)=>我的项目(um位于工程效率里)=>包含两个文件:1.nginx.conf;2.router-nginx.conf):
nginx.conf:
server {
listen 80;
server_name {{domainname_exp}};
location ^~ /auths/ {
proxy_pass http://127.0.0.1:11078/;
proxy_set_header Host $host;
}
location ^~ /bmp/ {
proxy_pass http://127.0.0.1:11141/;
proxy_set_header Host $host;
}
location / {
root /opt/vipkid/vfe/um-workflow/dist;
try_files $uri $uri/ /index.html;
}
}
router-nginx.con:
server {
listen {{vfe_listenport}};
location / {
root /opt/vipkid/vfe/um-workflow/dist;
try_files $uri $uri/ /index.html;
}
}
server {
listen 80;
server_name {{domainname_exp}} ~^{{env}}-workflow-test-vk-l5d-([\w-]+)\.vipkid(?:-qa)?\.com\.cn$;
location ^~ /auths/ {
proxy_pass http://{{env}}-uc-management.vipkid-qa.com.cn/;
}
location ^~ /bmp/ {
proxy_pass http://{{env}}-uc-bpms.vipkid-qa.com.cn/;
}
location ^~ /eips/ {
proxy_pass http://{{env}}-uc-eips.vipkid-qa.com.cn/;
}
location ^~ /staffWeb/ {
proxy_pass http://{{env}}-biz-pl-staffweb-service.vipkid-qa.com.cn/;
}
location ^~ /wmps/ {
proxy_pass http://{{env}}-uc-wmps.vipkid-qa.com.cn/;
}
location ^~ /bpscs/ {
proxy_pass http://{{env}}-uc-bpsc.vipkid-qa.com.cn/;
}
location ^~ /reports/ {
proxy_pass http://{{env}}-uc-report.vipkid-qa.com.cn/;
}
location / {
proxy_pass http://{{linkerd_host}}:4140;
proxy_set_header l5d-vk-host {{projectname}};
}
}
问题位于router-nginx.con文件
的location / {root /opt/vipkid/vfe/um-workflow/dist;和agile文件
的 output: ‘./dist/*’
agile文件
里表示代码打包后编译输出位于agile文件
的 output: ‘./dist/*’
而agile文件
里的command:- 'ls -la ./'未执行编译指令(具体修改后如下)
# 编译命令
command:
- 'npm install'
- 'npm run build'
,# 测试目标机器上执行命令
、# 编译完成后要发布的目录
、发布到目标机器的目录
、# 发布完成后的操作这几处的重点关注这
没有匹配router-nginx.con文件
的location / {root /opt/vipkid/vfe/um-workflow/dist;
路径。
修改后的agile文件:
###################
# 线上环境编译
###################
build:
# 配置node服务环境
env:
node: '/usr/local/node/node-v8.11.3/bin/node'
npm: '/usr/local/node/node-v8.11.3/bin/npm'
# 静态资源上传CDN(没有可不填)
static-cdn:
module:
# 上传文件或文件夹地址
- dist: './dist'
# vos 目录地址
release: 'fe-static/vfe/um-workflow'
# 编译命令
command:
- 'npm install --unsafe-perm'
- 'npm run online-build'
###################
# 测试环境编译
###################
dev:
# 编译命令
command:
- 'npm install' //修改后,更新部分
- 'npm run build'//修改后,更新部分
# 测试环境部署
deploy-defore: # 部署前置hook
- 'ls -la ./dist'
deploy: # 代码部署
intend: # 测试目标机器上执行命令
- 'mkdir -p /opt/vipkid/vfe/um-workflow/dist' //修改后,更新部分
output: './dist/*' # 编译完成后要发布的目录
path: '/opt/vipkid/vfe/um-workflow/dist' //修改后,更新部分 # 发布到目标机器的目录
command: # 发布完成后的操作
- 'ls -la /opt/vipkid/vfe/um-workflow/dist' //修改后,更新部分