본문 바로가기

카카오테크 부트캠프

[KTB-Final]젠킨스 이슈해결 및 AI서버 CI/CD 구성 완료

[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
ERROR: Could not find credentials matching ecr_credentials_id

GitHub has been notified of this commit’s build result

Finished: FAILURE

자꾸 이렇게 ECR id를 찾을 수 없다는 오류 발생..... 크레덴션에는 다 맞게 설정했고, aws configure도 해줬습니다.

젠킨스 파일을 살펴보니 

 

stage('Push to ECR') {
            steps {
                script {
                    // ECR에 Docker 이미지를 푸시하는 단계
                    docker.withRegistry("https://${ECR_REPO}", "${ECR_CREDENTIALS_ID}") {
                        dockerImage.push('latest')
                    }
                }
            }
        }

저기 eCr_Credentials_id에 중괄호가 빠져있어 혹시 그건가했더니.. 그것도 아니다. 

중괄호는 상관이없다네요 엄한데서 싸우고 있었어요.

.

.

.

.

.

 

 

so 해결 완.

 

ㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎ

 

    environment {
        REPO = 'KTB-FarmMate/FramMate-API-Server'
        ECR_REPO = '211125697339.dkr.ecr.ap-northeast-2.amazonaws.com/farmmate/backend'
        ECR_CREDENTIALS_ID = 'ecr:ap-northeast-2:ecr_credentials_id'
        SSH_CREDENTIALS_ID = 'EC2_ssh_key_test'
    }

여기 ECR_CREDENTIALS_ID에서 앞에 ecr:ap-northeast-2가 빠져서 그런거였다ㅜㅜㅜㅜㅜㅜㅜ 이게 없으면 aws ECR과의 통신을 못한다네요

고작 이거 때문에.. 그렇게 헤매다니... 어쨌든 고생했습니다.. 이제 Master Agent 구성ㅇ을 이해하며 왜 origin만 찾아서 빌드가 안됐는지를 다시 살펴봐야겠습니다.

 

 

 

 

 

 

 

#45 [ 1/41] FROM docker.io/library/python:3.10-slim@sha256:eb9ca77b1a0ffbde84c1dc333beb3490a2638813cc25a339f8575668855b9ff1
#45 resolve docker.io/library/python:3.10-slim@sha256:eb9ca77b1a0ffbde84c1dc333beb3490a2638813cc25a339f8575668855b9ff1 0.0s done
#45 sha256:eb9ca77b1a0ffbde84c1dc333beb3490a2638813cc25a339f8575668855b9ff1 9.13kB / 9.13kB done
#45 sha256:e7d6ea327beabaeeb064aa3334a56ab0d99ca52e335abcbacf6b1af3fe543def 1.75kB / 1.75kB done
#45 sha256:3e625a83fe8d3ea2a08e8752ea253145030a2ed42baf00582dbe129e7f79d392 5.45kB / 5.45kB done
#45 CANCELED
------
 > [41/41] COPY ./FarmMate-AI-Server .:
------
Dockerfile:50
--------------------
  48 |     
  49 |     # 깃 레포지토리에서 프로젝트 파일을 복사
  50 | >>> COPY ./FarmMate-AI-Server .
  51 |     
  52 |     # 애플리케이션 포트를 외부에 노출
--------------------
ERROR: failed to solve: failed to compute cache key: failed to calculate checksum of ref 194c34c5-ebcd-4a76-a146-7a81d27078d9::yse6y0ir9voccqhaor5t22il7: "/FarmMate-AI-Server": not found

AI서버 빌드하려는데 이런 오류가 발생... 파일구조가

이렇게 되어있어서 그런 것 같다. 

 

그래서 COPY . . (현재 전체를 컨테이너 현재에 복사)

 

그래서 해결완료~

 

Jenkins credentials 에서

이게 ㅜ머였지 했는데 그냥 Ip 주소를 숨겨놓은 거였습니다. 그렇게 AI서버도 CICD 구축 완료~~~~

 

그러다가 갑자기 docker logs에서 오류 로그가 검출됐어요.

 

2024-10-29 07:09:45.944+0000 [id=2907]	INFO	hudson.slaves.SlaveComputer#tryReconnect: Attempting to reconnect agent_test
2024-10-29 07:09:45.946+0000 [id=2907]	INFO	o.j.p.cloudstats.CloudStatistics#getIdFor: No support for cloud-stats-plugin by class hudson.plugins.ec2.EC2SpotSlave
2024-10-29 07:09:45.950+0000 [id=2909]	SEVERE	hudson.slaves.CommandLauncher#launch: Unable to launch the agent for agent_test
java.io.EOFException: unexpected stream termination
	at hudson.remoting.ChannelBuilder.negotiate(ChannelBuilder.java:459)
	at hudson.remoting.ChannelBuilder.build(ChannelBuilder.java:404)
	at hudson.slaves.SlaveComputer.setChannel(SlaveComputer.java:440)
	at PluginClassLoader for command-launcher//hudson.slaves.CommandLauncher.launch(CommandLauncher.java:170)
	at hudson.slaves.SlaveComputer.lambda$_connect$0(SlaveComputer.java:297)
	at jenkins.util.ContextResettingExecutorService$2.call(ContextResettingExecutorService.java:46)
	at jenkins.security.ImpersonatingExecutorService$2.call(ImpersonatingExecutorService.java:80)
	at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.base/java.lang.Thread.run(Unknown Source)

이런 에러 로그가...? 근데 알고 보니 master agent 형성하는 부분에서 java와 깃을 깔아서 Java에 맞는 환경은 설정해주었는데 python은 설치해주지않아서 오류가 나는 것이었답니다~~ 다시 AMI 형성할 때 python도 깔아주고 바꿔 넣어줬더니 완성