amazon-web-services - Azure DevOps S3 React/MERN 堆栈
问题描述
有没有人有使用 Azure DevOps 使用他们的扩展将 React 构建包部署到 AWS 的经验?
我坚持只上传 npm build 的构建包。
到目前为止,这是我的脚本:
trigger:
- master
pool:
vmImage: 'ubuntu-latest'
steps:
- task: NodeTool@0
inputs:
versionSpec: '10.x'
displayName: 'Install Node.js'
- script: |
npm install
npm test
npm run build
- task: S3Upload@1
inputs:
awsCredentials: 'AWS Deploy User'
regionName: 'us-east-1'
bucketName: 'test'
globExpressions: '**'
createBucket: true
displayName: 'npm install and build'
S3Upload 任务中唯一突出的选项是 sourceFolder。他们使用类似的东西,"$(Build.ArtifactStagingDirectory)"
但由于我之前从未使用过,这对我来说没有多大意义。会不会像这样简单$(Build.ArtifactStagingDirectory)/build
解决方案
预定义变量 $(Build.ArtifactStagingDirectory)
映射到c:\agent_work\1\a
,这是代理上的本地路径,任何工件在被推送到目的地之前都会复制到该路径。
在您的 yaml 管道中,您的源代码下载到文件夹$(Build.SourcesDirectory)
(即。c:\agent_work\1\s
)中。并且脚本任务中的 npm 命令都在这个文件夹中运行。所以 npm 构建结果就是这个文件夹$(Build.SourcesDirectory)\build
(ie.c:\agent_work\1\s\build)。
S3Upload 任务默认从 $(Build.ArtifactStagingDirectory) 上传文件。您可以将 S3Upload 任务的sourceFolder
属性(默认为)具体指向 folder 。见下文:$(Build.ArtifactStagingDirectory)
$(Build.SourcesDirectory)\build
- task: S3Upload@1
inputs:
awsCredentials: 'AWS Deploy User'
regionName: 'us-east-1'
bucketName: 'test'
globExpressions: '**'
createBucket: true
sourceFolder: '$(Build.SourcesDirectory)/build'
另一种解决方法是使用复制文件任务将构建结果从$(Build.SourcesDirectory)\build
文件夹复制$(Build.ArtifactStagingDirectory)
。请参见此处的示例。
- task: CopyFiles@2
inputs:
Contents: 'build/**' # Pull the build directory (React)
TargetFolder: '$(Build.ArtifactStagingDirectory)'
推荐阅读
- reactjs - 对象状态更改时 React Native 屏幕不更新
- reactjs - 带有 setTimeout 的 setState 操作带回已删除的元素
- flutter - Flutter + Hive 检查 Future Builder 的框中是否存在值
- javascript - Bootstrap 5 Accordion:使箭头旋转 90 度而不是 180 度
- java - 使用 Microsoft OpenJDK 升级到 Java 17 后的 Java 编码问题
- javascript - 如何以json格式显示我们的数据
- java - 问题交换图像
- javascript - Ajax 调用仅适用于表的第一行,不适用于下一行
- npm - 如何安装单个 next api?
- python - 为什么我不能更改 python 版本?