我有一个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找不到文件的任何指针?我也曾尝试给出工件的全名,但这无济于事。
谢谢。
答案 0 :(得分:0)
尽管我现在无法解释为什么,但是当在CodePipeline中将工件选择为辅助工件时,它可以工作。选择了一个随机工件作为管道第二阶段的主要输入,CodeBuild能够在构建期间找到并复制该工件。