Bitbucket 管道 - 构建 Create-react-app,压缩它,通过 ftp 上传它并将其解压缩到服务器上



我正在使用 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"是在运行构建命令时创建的默认目标文件夹。

相关内容

最新更新