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

如何解决Bitbucket Pipelines部署Angular项目时OCI无效挂载报错

问题根因

你遇到的OCI runtime报错核心是使用的cgswong/aws:aws镜像存在兼容性问题:该老旧镜像内部配置了相对路径~/.aws作为AWS凭证的挂载目标,而containerd运行时不支持波浪号开头的相对路径作为挂载点,必须使用绝对路径(例如/root/.aws)才能正常识别。
另外你当前的配置还缺少Angular项目编译生成dist文件夹的步骤,即使镜像问题解决,也会因为找不到dist目录导致同步失败。

解决方案

按照以下步骤修改配置即可解决:

  1. 替换老旧的AWS镜像,改用官方维护的amazon/aws-cli镜像,或者直接使用Node.js镜像同时完成Angular编译和AWS上传操作(更适配Angular项目场景)
  2. 在Bitbucket仓库配置页的「Repository settings」->「Repository variables」中添加两个安全变量:
    • AWS_ACCESS_KEY_ID:你的AWS账号访问密钥ID
    • AWS_SECRET_ACCESS_KEY:你的AWS账号访问密钥凭证
      不要将密钥硬编码到Pipeline配置文件中避免泄露。
  3. 使用修正后的bitbucket-pipelines.yml配置:
# 使用兼容Angular 9编译要求的Node 12镜像,同时支持安装aws-cli
image: node:12-alpine

pipelines:
  branches:
    master:
      - step:
          name: 编译并部署到生产环境
          script:
            # 安装aws-cli
            - apk add --no-cache aws-cli
            # 安装项目依赖
            - npm install
            # 编译Angular项目生成dist文件夹
            - npm run build --prod
            # 同步到S3生产桶
            - aws s3 --region "ap-southeast-1" sync --delete dist/xyz s3://xyz.abc.com
    staging:
      - step:
          name: 编译并部署到测试环境
          script:
            - apk add --no-cache aws-cli
            - npm install
            - npm run build --prod
            - aws s3 --region "ap-southeast-1" sync --delete dist/xyz s3://stage.xyz.abc.com

如果需要拆分步骤,也可以设置多阶段Step:第一阶段用Node镜像编译产出dist文件夹并作为制品传递,第二阶段用官方AWS镜像上传,同样不会出现路径报错。

内容的提问来源于stack exchange,提问作者Juthi Sarker Aka

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 19:24:02