AWS CI/CD: CodePipeline 세 번째 빌드 오류 해결 (6편)

2023. 10. 30. 00:54·AWS/CodePipeline, CICD
반응형

저번 포스트에서는 PRE_BUILD단계의 오류를 해결했다. 이번 포스트에서는 그 다음 BUILD 단계에서 발생한 오류를 해결해 보자

 


 

1. BUILD단계의 오류 파악하기


1-1. 오류 파악

  • PRE_BUILD오류를 해결했더니 이번에는 BUILD 에서 오류가 발생했다. 오류 로그를 바로 확인했다.

오류 파악하기
오류 파악하기

 

1-2. 오류 로그 확인

#5 [2/2] ADD build/libs/member-0.0.1-SNAPSHOT.jar member-api.jar
#5 ERROR: failed to calculate checksum of ref moby::z5ufilzi940gpc8hp3lj0ypj8: failed to walk /var/lib/docker/tmp/buildkit-mount237631583/build/libs: lstat /var/lib/docker/tmp/buildkit-mount237631583/build/libs: no such file or directory

#6 [1/2] FROM docker.io/library/amazoncorretto:17-al2-jdk@sha256:e9d48fda62bb4266a7fe4fd524e96463615a6cb3176210676814efe20ececaaa
#6 resolve docker.io/library/amazoncorretto:17-al2-jdk@sha256:e9d48fda62bb4266a7fe4fd524e96463615a6cb3176210676814efe20ececaaa 0.0s done
#6 sha256:e9d48fda62bb4266a7fe4fd524e96463615a6cb3176210676814efe20ececaaa 547B / 547B done
#6 sha256:dfbfa19bccc9104bc5d39d2c4d5b3f2ec1e721e3af5f6af945bf4d2d2ef0a038 742B / 742B done
#6 sha256:ee544fb8d73106a928b4d785c2bf5a959fcf49c98acc0008349839348a461d4a 3.07kB / 3.07kB done
#6 CANCELED
------
 > [2/2] ADD build/libs/member-0.0.1-SNAPSHOT.jar member-api.jar:
------
Dockerfile:9
--------------------
   7 |     # Specify the built JAR file path and add it to the container as member-api.jar
   8 |     ARG JAR_FILE=build/libs/member-0.0.1-SNAPSHOT.jar
   9 | >>> ADD ${JAR_FILE} member-api.jar
  10 |     
  11 |     # Run the JAR file
--------------------
ERROR: failed to solve: failed to compute cache key: failed to calculate checksum of ref moby::z5ufilzi940gpc8hp3lj0ypj8: failed to walk /var/lib/docker/tmp/buildkit-mount237631583/build/libs: lstat /var/lib/docker/tmp/buildkit-mount237631583/build/libs: no such file or directory

[Container] 2023/10/28 11:39:11.768023 Command did not exit successfully docker build -t 473709498430.dkr.ecr.ap-northeast-2.amazonaws.com/recipia-repository:latest . exit status 1
[Container] 2023/10/28 11:39:11.771511 Phase complete: BUILD State: FAILED
[Container] 2023/10/28 11:39:11.771526 Phase context status code: COMMAND_EXECUTION_ERROR Message: Error while executing command: docker build -t 473709498430.dkr.ecr.ap-northeast-2.amazonaws.com/recipia-repository:latest .. Reason: exit status 1
[Container] 2023/10/28 11:39:11.808032 Entering phase POST_BUILD
[Container] 2023/10/28 11:39:11.808812 Running command echo Pushing the Docker image...
Pushing the Docker image...

[Container] 2023/10/28 11:39:11.813458 Running command docker push 473709498430.dkr.ecr.ap-northeast-2.amazonaws.com/recipia-repository:latest
The push refers to repository [473709498430.dkr.ecr.ap-northeast-2.amazonaws.com/recipia-repository]
An image does not exist locally with the tag: 473709498430.dkr.ecr.ap-northeast-2.amazonaws.com/recipia-repository

[Container] 2023/10/28 11:39:11.829911 Command did not exit successfully docker push 473709498430.dkr.ecr.ap-northeast-2.amazonaws.com/recipia-repository:latest exit status 1
[Container] 2023/10/28 11:39:11.832842 Phase complete: POST_BUILD State: FAILED
[Container] 2023/10/28 11:39:11.832856 Phase context status code: COMMAND_EXECUTION_ERROR Message: Error while executing command: docker push 473709498430.dkr.ecr.ap-northeast-2.amazonaws.com/recipia-repository:latest. Reason: exit status 1
  • 위에서 발생한 오류의 핵심 부분은 다음과 같다.
#5 ERROR: failed to calculate checksum of ref moby::z5ufilzi940gpc8hp3lj0ypj8: failed to walk /var/lib/docker/tmp/buildkit-mount237631583/build/libs: lstat /var/lib/docker/tmp/buildkit-mount237631583/build/libs: no such file or directory
  • 로그에 의하면 Docker 빌드 프로세스가 "build/libs" 라는 디렉터리를 찾을 수 없다는 것을 나타낸다. build/libs/member-0.0.1-SNAPSHOT.jar 파일의 경로가 올바르지 않거나, 빌드 컨텍스트 내에 존재하지 않아서 생긴 오류같으니 이 파일이 현재 디렉터리의 build/libs 폴더에 있는지 확인을 해볼 필요가 있다.

1-3. 오류를 생각해보기

  • 나는 "member-0.0.1-SNAPSHOT.jar"가 깃허브 저장소에 없기 때문이 아닐까? 라는 생각이 들었다. 그래서 GPT에게 물어봤더니 대답은 이랬다.
build/libs/member-0.0.1-SNAPSHOT.jar 파일은 Gradle 빌드 프로세스를 통해 생성되어야 한다.
이 파일은 깃허브 저장소에 미리 존재하지 않아도 된다. 대신, AWS CodeBuild 프로젝트의 빌드 프로세스 중에 생성되어야 한다.

 


 

2. 오류 해결하기 (Buildspec.yaml 수정)


2-1. 빌드 프로젝트 들어가기

  • 하단의 이름을 클릭해서 프로젝트 "구성"으로 들어간다.

빌드 프로젝트
빌드 프로젝트

 

2-2. Buildspec 들어가기

  • 아래와 같은 구성 페이지에서 "편집" 버튼을 클릭하고 "Buildspec"을 클릭한다.

빌드 프로젝트 > 편집 > Buildspec
빌드 프로젝트 > 편집 > Buildspec

 

2-3. Buildspec.yaml 수정하기

  • 여기서 기존 buildspec.yaml에 ./gradlew build 명령어를 추가해 준다. (아래의 코드는 가져가서 수정을 해야 사용이 가능하다.)
version: 0.2
phases:
  pre_build:
    commands:
      - echo Logging in to Amazon ECR...
      - aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin {내 ecr 저장소/저장소 이름}
      - echo Building the Spring Boot application...
      - ./gradlew build  # Gradle 빌드 명령을 추가합니다.
  build:
    commands:
      - echo Building the Docker image...
      - docker build -t {내 ecr 저장소:tag .}
  post_build:
    commands:
      - echo Pushing the Docker image...
      - docker push {내 ecr 저장소:tag}
  • 아래와 같이 적게될 것이다.

BuildSpec 편집
BuildSpec 편집

 


 

3. 빌드하기


3-1. Codepipeline 실행

  • 수정을 마쳤으니 다시 Codepipeline을 실행했다.

Codepipeline
Codepipeline

 

3-2. 빌드 성공

  • 드디어 빌드에 성공했다! 이제 실제로 이미지가 ECR에 제대로 들어갔는지 확인했다.(잘 들어갔다)

ECR 빌드 성공
ECR 빌드 성공

 

3-3. 새로운 문제 발생

  • 근데 "Deploy" 배포단계에서 오류가 생겼다. 오류내용을 슬쩍 보니 이번에도 S3관련 오류인것 같다.

Deploy오류
Deploy오류

  • 아래의 오류가 발생했다. 다음 포스트에서 "배포" 오류까지 해결해 보자
Unable to access the artifact with Amazon S3 object key 'recipia-member-git-n/BuildArtif/IejGhqN' located in the Amazon S3 artifact bucket 'codepipeline-ap-northeast-2-555139989952'. The artifact object key is not found.

 

 

이번 포스트에서는 드디어 길고 길었던 "빌드" 단계의 오류를 해결했다.
다만 산넘어 산이라고 "Deploy"인 배포단계에서 오류가 발생했다.
다음 시간에는 배포오류를 해결해보도록 하겠다.





 

 

2023.10.30 - [AWS] - AWS CI/CD: CodePipeline 배포 오류 수정 (7편)

 

AWS CI/CD: CodePipeline 배포 오류 수정 (7편)

열심히 빌드오류를 수정해서 고쳤다. 근데 근데!! 이번에는 Deploy 배포단계에서 오류가 생겼다 당장 해결해보도록 하자 1. 배포 오류 파악하기 1-1 .오류 파악 아래와 같이 Deploy에서 빨갛게 실패라

curiousjinan.tistory.com

 

2023.10.30 - [AWS] - AWS CI/CD: CodePipeline 두 번째 빌드 오류 해결 (5편)

 

AWS CI/CD: CodePipeline 두 번째 빌드 오류 해결 (5편)

이번에는 PRE_BUILD 단계에서 발생한 빌드오류를 해결해 보자 1. 빌드 오류 파악하기 1-1. 오류 파악 열심히 S3 관련 문제를 해결했더니 이번에는 아래와 같은 PRE_BUILD 단계에서 에러가 발생했다. COMMA

curiousjinan.tistory.com

 

반응형

'AWS > CodePipeline, CICD' 카테고리의 다른 글

AWS CI/CD: CodePipeline 배포 최종 점검 (8편)  (0) 2023.10.30
AWS CI/CD: CodePipeline 배포 오류 수정 (7편)  (1) 2023.10.30
AWS CI/CD: CodePipeline 두 번째 빌드 오류 해결 (5편)  (1) 2023.10.30
AWS CI/CD: CodePipeline 첫 번째 빌드 오류 해결 (4편)  (2) 2023.10.29
AWS CI/CD: CodePipeline 배포 및 검토 (3편)  (1) 2023.10.29
'AWS/CodePipeline, CICD' 카테고리의 다른 글
  • AWS CI/CD: CodePipeline 배포 최종 점검 (8편)
  • AWS CI/CD: CodePipeline 배포 오류 수정 (7편)
  • AWS CI/CD: CodePipeline 두 번째 빌드 오류 해결 (5편)
  • AWS CI/CD: CodePipeline 첫 번째 빌드 오류 해결 (4편)
Stark97
Stark97
문의사항 또는 커피챗 요청은 링크드인 메신저를 보내주세요! : https://www.linkedin.com/in/writedev/
  • Stark97
    오늘도 개발중입니다
    Stark97
  • 전체
    오늘
    어제
    • 분류 전체보기 (240)
      • 개발지식 (20)
        • 스레드(Thread) (8)
        • WEB, DB, GIT (3)
        • 디자인패턴 (8)
      • JAVA (21)
      • Spring (88)
        • Spring 기초 지식 (35)
        • Spring 설정 (6)
        • JPA (7)
        • Spring Security (17)
        • Spring에서 Java 활용하기 (8)
        • 테스트 코드 (15)
      • 아키텍처 (5)
      • MSA (14)
      • DDD (7)
      • gRPC (9)
      • Apache Kafka (18)
      • DevOps (23)
        • nGrinder (4)
        • Docker (1)
        • k8s (1)
        • 테라폼(Terraform) (12)
      • AWS (32)
        • ECS, ECR (14)
        • EC2 (2)
        • CodePipeline, CICD (8)
        • SNS, SQS (5)
        • RDS (2)
      • notion&obsidian (3)
  • 링크

    • notion기록
    • 깃허브
    • 링크드인
  • hELLO· Designed By정상우.v4.10.0
Stark97
AWS CI/CD: CodePipeline 세 번째 빌드 오류 해결 (6편)
상단으로

티스토리툴바