AWS CodeBuild 抛出错误“CLIENT_ERROR 消息:找不到匹配的工件路径”。
我正在尝试使用 CodeCommit 存储库构建一个 docker 应用程序,构建阶段似乎顺利通过,但工件文件路径存在一些问题。
这是链接,我参考了https://youtu.be/MDMH_XXDbrI 时间戳:48:18 到 56:24
这是我的构建规范:
version: 0.2
phases:
pre_build:
commands:
- echo Logging in to Amazon ECR...
- aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com
- REPOSITORY_URI=$AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME
- COMMIT_HASH=$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | cut -c 1-7)
- IMAGE_TAG=${COMMIT_HASH:=latest}
build:
commands:
- echo Build started on `date`
- echo Building the Docker image...
- docker build -t $REPOSITORY_URI:latest .
- docker tag $REPOSITORY_URI:latest $REPOSITORY_URI:$IMAGE_TAG
post_build:
commands:
- echo Build completed on `date`
- echo Pushing the Docker image...
- docker push $REPOSITORY_URI:latest
- docker push $REPOSITORY_URI:$IMAGE_TAG
- echo Writing image definitions file...
- printf '[{"name":"%s","imageUri":"%s"}]' "$IMAGE_REPO_NAME" "$REPOSITORY_URI:$IMAGE_TAG" > imagedefinitions.json
artifacts:
files: imagedefinitions.json
这是构建日志:
[Container] 2023/05/06 06:40:30 Phase complete: PRE_BUILD State: SUCCEEDED
[Container] 2023/05/06 06:40:30 Phase context status code: Message:
[Container] 2023/05/06 06:40:30 Entering phase BUILD
[Container] 2023/05/06 06:40:30 Phase complete: BUILD State: SUCCEEDED
[Container] 2023/05/06 06:40:30 Phase context status code: Message:
[Container] 2023/05/06 06:40:30 Entering phase POST_BUILD
[Container] 2023/05/06 06:40:30 Phase complete: POST_BUILD State: SUCCEEDED
[Container] 2023/05/06 06:40:30 Phase context status code: Message:
[Container] 2023/05/06 06:40:30 Expanding base directory path: .
[Container] 2023/05/06 06:40:30 Assembling file list
[Container] 2023/05/06 06:40:30 Expanding .
[Container] 2023/05/06 06:40:30 Expanding file paths for base directory .
[Container] 2023/05/06 06:40:30 Assembling file list
[Container] 2023/05/06 06:40:30 Expanding imagedefinitions.json
[Container] 2023/05/06 06:40:30 Skipping invalid file path imagedefinitions.json
[Container] 2023/05/06 06:40:30 Phase complete: UPLOAD_ARTIFACTS State: FAILED
[Container] 2023/05/06 06:40:30 Phase context status code: CLIENT_ERROR Message: no matching artifact paths found
我不知道这里出了什么问题......
我在 buildspec.yml 文件的最后一行做了一些修改。
version: 0.2
phases:
pre_build:
commands:
- echo Logging in to Amazon ECR...
- aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com
- REPOSITORY_URI=$AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME
- COMMIT_HASH=$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | cut -c 1-7)
- IMAGE_TAG=${COMMIT_HASH:=latest}
build:
commands:
- echo Build started on `date`
- echo Building the Docker image...
- docker build -t $REPOSITORY_URI:latest .
- docker tag $REPOSITORY_URI:latest $REPOSITORY_URI:$IMAGE_TAG
post_build:
commands:
- echo Build completed on `date`
- echo Pushing the Docker image...
- docker push $REPOSITORY_URI:latest
- docker push $REPOSITORY_URI:$IMAGE_TAG
- echo Writing image definitions file...
- printf '[{"name":"%s","imageUri":"%s"}]' "$IMAGE_REPO_NAME" "$REPOSITORY_URI:$IMAGE_TAG" > imagedefinitions.json
artifacts:
files:
- 'imagedefinitions.json'
构建成功