You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用AWS CodeDeploy部署monorepo中的website子目录?

用AWS CodeDeploy只部署Monorepo里的Website子目录

没问题,我来一步步帮你搞定这个需求——让CodeDeploy只处理monorepo里的website子目录,并且使用它自带的appspec.yml。下面是几种实用的方法,你可以根据自己的部署流程选:

方法一:通过CodePipeline配置(推荐给持续部署场景)

如果用CodePipeline做自动化部署,只需要调整部署动作的设置就行:

  • 找到CodePipeline里的CodeDeploy部署阶段,点击「编辑」这个动作
  • 翻到「高级选项」,找到**"Appspec文件"**这一项,直接填website/appspec.yml——这就告诉CodeDeploy别找根目录的配置,去website文件夹里读
  • 要是想进一步精简部署包、只传website的内容,可以在CodeBuild的buildspec.yml里修改输出配置:
    artifacts:
      files:
        - 'website/**/*'
      base-directory: '.'
    
    这样构建出来的包就只有website的内容,传输更快;要是monorepo里其他目录有依赖需要一起传,这步可以跳过,只改Appspec路径就行。

方法二:用AWS CLI手动部署

如果是手动上传部署包或者用CLI触发部署,直接在命令里指定Appspec路径就行:

aws deploy create-deployment \
  --application-name 你的应用名 \
  --deployment-group-name 你的部署组名 \
  --s3-location bucket=你的S3桶名,bundleType=zip,key=monorepo打包文件的路径 \
  --file-exists-behavior OVERWRITE \
  --appspec-file website/appspec.yml

重点就是最后那个--appspec-file参数,明确告诉CodeDeploy要读哪个目录下的配置文件。

方法三:根目录Appspec转发(备选方案)

要是因为权限或者旧版本Agent的限制没法直接指定路径,可以在monorepo根目录建一个临时的appspec.yml,把所有部署逻辑转发到website里:

version: 0.0
os: linux # 你的服务器是Windows就改成windows
files:
  - source: website/
    destination: /你的服务器部署路径 # 比如/var/www/website
hooks:
  BeforeInstall:
    - location: website/scripts/before-install.sh
      timeout: 300
      runas: root
  # 其他钩子(比如AfterInstall、ApplicationStart)都照着这个格式,指向website里的脚本

不过这种方法有点绕,还是前两种更直接。

几个要注意的点

  • 确保CodeDeploy的服务角色有足够权限读取部署包里的website目录内容
  • 要是目标服务器上的CodeDeploy Agent版本太老,可能不支持自定义Appspec路径,记得更到最新版
  • 第一次部署后,去CodeDeploy控制台看日志,确认它确实读对了website/appspec.yml,而且只部署了website的内容

内容的提问来源于stack exchange,提问作者Zerium

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 06:28:51