CodeBuild复制工件失败

问题描述 投票:0回答:1

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

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

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

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

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

错误:

[Container] 2019/11/18 16:53:12 Running command echo Building the Docker image... 
Building the Docker image... 

[Container] 2019/11/18 16:53:12 Running command ls -l $CODEBUILD_SRC_DIR_GF_APP 
total 45252 
-rw-r--r-- 1 root root 46332873 Nov 18 15:49 rest.war 
-rw-r--r-- 1 root root       14 Nov 18 15:49 pomversion 

[Container] 2019/11/18 16:53:12 Running command cp $CODEBUILD_SRC_DIR_GF_APP/*.war . 
cp: cannot stat '/*.war': No such file or directory

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

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

谢谢。

aws-codepipeline aws-codebuild
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.