我正在使用 bitbucket 管道来部署我的 react 应用程序。
现在我的管道看起来像这样:
image: node:10.15.3
pipelines:
default:
- step:
name: Build
script:
- npm cache clean --force
- rm -rf node_modules
- npm install
- CI=false npm run deploy-app
artifacts: # defining build/ as an artifact
- 'build-artifact/**'
- step:
name: Deploy
script:
- apt-get update
- apt-get install ncftp
- ncftpput -v -u "$USERNAME" -p "$PASSWORD" -R $SERVER build 'build-artifact/*'
- echo Finished uploading build
这样工作得很好,但是ftp上传大约需要8分钟,这很漫长,因为使用Bitbucket的免费计划,我每月只能使用管道功能50分钟。
似乎每个小文件的上传都需要很长时间。这就是为什么我认为上传单个zip文件可能会提高性能。
所以我的问题是:它真的更快吗?以及如何压缩工件,将zip上传到服务器并将其解压缩到那里?
感谢您的帮助
实际上,您应该考虑使用其他工具来上传文件,例如具有一些有用功能的rsync
,例如压缩数据。它还仅上传从上次上传更改的文件,这也将加快上传速度。例如,您可以使用 rsync-deploy 管道:
script:
- pipe: atlassian/rsync-deploy:0.3.2
variables:
USER: 'ec2-user'
SERVER: '127.0.0.1'
REMOTE_PATH: '/var/www/build/'
LOCAL_PATH: 'build'
EXTRA_ARGS: '-z'
请注意通过EXTRA_ARGS传递的-z
选项。这将在传输文件时启用数据压缩。
还有另一种选择。 首先安装 zip-build:
npm install --save-dev zip-build
然后,在您的构建脚本中(在此处查看帮助 https://www.npmjs.com/package/zip-build(:
"build": "react-scripts build && zip-build -t your-zip-file.zip"
然后将工件定义为zip-file.zip。但是,如果要部署到 Azure,则可能必须将项目定义为dist/your-zip-file.zip。我不确定其他服务器。这里的"dist"是在运行构建命令时创建的默认目标文件夹。