[英]'npm run build' failed in AWS CodeBuild but succeeded locally
[英]AWS codebuild: CODEBUILD_BUILD_SUCCEEDIN is still 1 even build step failed
Step 65/154 : RUN apt-get install -y python3-pip
---> Running in 29f078573813
Reading package lists...
Building dependency tree...
Reading state information...
E: Unable to locate package python3-pip
The command '/bin/sh -c apt-get install -y python3-pip' returned a non-zero code: 100
[Container] 2022/04/20 02:31:18 Phase complete: BUILD State: SUCCEEDED
[Container] 2022/04/20 02:31:18 Phase context status code: Message:
[Container] 2022/04/20 02:31:18 Entering phase POST_BUILD
[Container] 2022/04/20 02:31:18 Running command echo check CODEBUILD_BUILD_SUCCEEDING $CODEBUILD_BUILD_SUCCEEDING
check CODEBUILD_BUILD_SUCCEEDING 1
如上面的構建日志,我正在使用 AWS 代碼管道,我嘗試在 docker 中安裝 python3-pip 但失敗了。 它返回代碼 100。但是BUILD State
仍然是SUCCEEDED
。 當我在 post_build 步驟中回顯CODEBUILD_BUILD_SUCCEEDING
的值時,它的值仍然是 1,這意味着構建成功。 我認為CODEBUILD_BUILD_SUCCEEDING應該自動設置為 0。 如果CODEBUILD_BUILD_SUCCEEDING
不是 1,我想退出。你能幫我弄清楚為什么即使退出代碼是 100, CODEBUILD_BUILD_SUCCEEDING
仍然是 1 嗎?
如果您想檢查我的buildspec.yml
:
version: 0.2
phases:
install:
runtime-versions:
docker: 18
pre_build:
commands:
- echo Logging in to Amazon ECR...
- aws --version
- echo $AWS_DEFAULT_REGION
- eval $(aws ecr get-login --region $AWS_DEFAULT_REGION --no-include-email)
- REPOSITORY_URI=xxxxxxxxx.dkr.ecr.us-east-1.amazonaws.com/test-farget-ecr-t
- COMMIT_HASH=$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | cut -c 1-7)
- IMAGE_TAG=${COMMIT_HASH:=latest}
############################
# Pull the previous docker image
- docker pull $REPOSITORY_URI:latest
build:
commands:
- echo Build started on `date`
- echo Building the Docker image...
- |
if [[ $NEED_BUILD == "yes" ]]
then
docker build --cache-from $REPOSITORY_URI:latest -t $REPOSITORY_URI:latest .
docker tag $REPOSITORY_URI:latest $REPOSITORY_URI:$IMAGE_TAG
fi
post_build:
commands:
- echo "check CODEBUILD_BUILD_SUCCEEDING $CODEBUILD_BUILD_SUCCEEDING"
- bash -c "if [ "$CODEBUILD_BUILD_SUCCEEDING" == "0" ]; then exit 1; fi"
- echo Build completed on `date`
- echo Pushing the Docker images...
- |
if [[ $NEED_BUILD == "yes" ]]
then
docker push $REPOSITORY_URI:latest
docker push $REPOSITORY_URI:$IMAGE_TAG
fi
- echo Writing image definitions file...
- printf '{"name":"fargate-test-api-ecr","ImageURI":"%s"}' $REPOSITORY_URI:latest > imageDetail.json
artifacts:
files:
- imageDetail.json
- taskdef.json
- appspec.yaml
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.