CodeBuild复制工件失败

时间:2019-11-18 17:29:00

标签: aws-codepipeline aws-codebuild

我有一个CodePipeline项目托管在CodeCommit Git存储库中,并由maven构建。该存储库使用CodeBuild进行编译,并将构建的工件上载到ECR。管道有一个阶段来编译代码,然后一个单独的阶段来上载所构建的工件。我在稍后的CodeBuild阶段遇到问题,说它无法获取工件。各个阶段之间的通信使用的是S3存储桶。

第一个CodeBuild阶段buildspec :(用于编译代码)

X = dataset.drop(columns="Y")
y = dataset["Y"]
X_train,X_test, y_train, y_test= train_test_split(X,y,test_size=0.2,random_state=0)

第二个CodeBuild阶段buildspec :(创建docker映像)

artifacts:
  files:
    - rest.war
    - pomversion
  name: GF_APP

错误:

  build:
    commands:
      - echo Building the Docker image...
      - ls -l $CODEBUILD_SRC_DIR_GF_APP
      - cp $CODEBUILD_SRC_DIR_GF_APP/*.war .

可以看到目录中存在war文件,似乎没有丢失任何权限。两个CodeBuild项目使用相同的角色,并具有读取存储工件的S3存储桶的权限。 CodePipleline项目还具有足够的权限来读取和写入存储桶,该存储桶使用默认的aws / s3 KMS密钥进行了加密。

为什么CodeBuild找不到文件的任何指针?我也曾尝试给出工件的全名,但这无济于事。

谢谢。

1 个答案:

答案 0 :(得分:0)

尽管我现在无法解释为什么,但是当在CodePipeline中将工件选择为辅助工件时,它可以工作。选择了一个随机工件作为管道第二阶段的主要输入,CodeBuild能够在构建期间找到并复制该工件。