我已经创建了与 Gitlab 的 CI/CD 集成,并且在运行 CI/CD 时一直拖延 webpack 和资产的最终编译。
这是针对 Linux 16.04 t2.small AWS 实例的,我很好奇这是否是内存/处理器问题,尽管如果我通过 SSH 连接到服务器并直接运行 cmd,它似乎可以正常编译。
部署.sh
#!/bin/bash
set -e
echo "Deploying to $DEPLOY_SERVER"
# Once inside the server, run updateAndRestart.sh
ssh -tt -o "StrictHostKeyChecking no" ubuntu@$DEPLOY_SERVER 'bash' < ./config/updateAndRestart.sh
更新并重启.sh
#!/bin/bash
set -e
# Delete the old repo
rm -rf /home/ubuntu/deploy/application/client
# clone the repo fresh
git clone [email protected] /cdn-cgi/l/email-protection:repo/repo.git /home/ubuntu/deploy/application/client
# enter the new repo
cd /home/ubuntu/deploy/application/client
# install npm packages
echo "Running npm install"
npm install
# let resources recover
sleep 10s
echo "Running npm run build"
# build the new package
node --max_old_space_size=4096 ./node_modules/webpack/bin/webpack.js --env=production
我添加了 sleep 方法,认为可能存在一些问题npm install
囤积资源、行动过快,但这并没有解决问题。它很好地完成了最后一步,然后超时:
ubuntu@host:~/deploy/application/client$ node --max_old_spa
<-157:~/deploy/application/client$ node --max_old_spac e_size=4096 ./node_module
<ient$ node --max_old_space_size=4096 ./node_modules /webpack/bin/webpack.js -
<_size=4096 ./node_modules/webpack/bin/webpack.js -- env=productionPulling docker image gitlab/gitlab-runner-helper:x86_64-10efa505 ...
ERROR: Job failed: execution took longer than 10m0s seconds
不完全确定 gitlab-runner-helper 是否会重新启动,但这就是超时时发生的情况。
通常在运行 build cmd 时,node --max_old_space_size=4096 ./node_modules/webpack/bin/webpack.js --env=production
,它会提示更多详细信息,例如
Building in: production
clean-webpack-plugin: /home/ubuntu/deploy/application/client/public/*.js has been removed.
ℹ 「atl」: Using [email protected] /cdn-cgi/l/email-protection from typescript
ℹ 「atl」: Using tsconfig.json from /home/ubuntu/deploy/application/client/tsconfig.json
ℹ 「atl」: Checking started in a separate process...
ℹ 「atl」: Time: 1319ms
从 SSH 部署运行时我从未看到过。除了升级 ec2 大小之外,我还能做些什么吗?为什么直接通过 SSH 就可以正常工作,但从 Gitlab 的 CI/CD 执行此操作时会出现问题?