안녕하세요. EC2 인스턴스 및 보안 그룹 설정 후 git clone, Jar 빌드 후 run까지 되는데 외부에서 IP주소:port로 요청을해도 요청이 들어오지 않아 질문드립니다. curl 을 해봐도 커넥션 타임아웃이 발생하는데 따로 확인해야하는 부분이 있을까요? 강의랑 다르게 한것은 AWS 에서 우분투 에서 깃 클론 후 ./gradlew 명령어가 없다고 나와서 따로 wget으로 설치 후 환경변수 설정했습니다. 감사합니다.
[실습] 일반 프로젝트에서 많이 쓰는 CI/CD 구축 방법 - 에서 발생하는 오류입니다,, ``` - name: SCP로 EC2에 빌드된 파일 전송하기 uses: appleboy/scp-action@v0.1.7 with: host: ${{ secrets.EC2_HOST }} username: ${{ secrets.EC2_USERNAME }} key: ${{ secrets.EC2_PRIVATE_KEY }} source: project.jar target: /home/ubuntu/instagram-server/tobe 해당 yml로 설정 하고서도 반복해서 timeout으로 연결이 실패하네요,, 직접 script로 ec2 내부에서 동작하는 실습까지는 모두 작동했었습니다 따로 에러를 구글링해보았지만 유의미한 해결책이 보이지 않아 올려봅니다
전체적인 흐름 이미지를 보면 3번과 4번에서 캐시무효화 명령 및 캐시 무효화를 하는 설명이 작성되어 있습니다. 깃헙 액션에서 3번을 수행하는것 까진 이해가 되는데 4번은 누가 하는건지 모르겠습니다. 제가 찾아본바로는 3번만 수행하면 유저가 다음 요청시 cloudfront가 새로 s3에서 데이터를 받아오고 해당값을 캐싱하는것으로 이해했습니다. https://jscode.notion.site/Case-2-CI-CD-S3-Cloudfront-bbd22542211046feac5f04a3955ddf71
S3 에 프로젝트 파일 업로드하기 부분 해결하려고 세시간 넘게 삽질했는데... 잘 되지 않아서 결국 질문 드립니다... ㅜㅜ 제공해주신 수업 자료 참고해서 여러 번 반복하고, 구글에 물어보고 했는데 정확히 어떻게 해결해야 맞는지 모르겠습니다ㅠㅠ 어떻게 해야 할까요..? Run aws s3 cp --region ap-northeast-2 ./`$GITHUB_SHA.tar.gz s3://cicd/$GITHUB_SHA.tar.gz upload failed: ./db57ef8b92927c241fb3b672c2dc0ad8c20c6d79.tar.gz to s3://cicd/db57ef8b92927c241fb3b672c2dc0ad8c20c6d79.tar.gz An error occurred (AccessDenied) when calling the CreateMultipartUpload operation: Access Denied Error: Process completed with exit code 1.
섹션4의 5번째 강의 5분 17초에 보면 ECR에 저장된 이미지를 가져오기 위해 ECR의 주소가 적혀있는데요. 이 코드들이 깃헙에 올라가게 되면 저의 프라이빗 ECR 주소가 외부로 공개가 되는 것 같은데 실제 현업에서도 이렇게 ECR 주소가 외부로 공개하는 방식으로 사용하나요? 현재 여럿이서 진행하는 프로젝트의 CI/CD 구축을 해당 강의를 참고하여 진행하려고 하는데 스크립트 작성을 하면서 의문점이 생겨 글 남깁니다! 강의 항상 잘 듣고 있습니다 감사합니다~
안녕하세요 실습하다보니 질문이 생겨서 질문드립니다. 저같은 경우에는 .yml 파일을 올리돼, 중요한 값은 ${변수명} 이런식으로 작성해서 올리는 편입니다. 따라서 이를 EC2 서버의 .bashrc 파일에 export로 설정한 뒤, source ~.bashrc로 값을 초기화해놓았습니다. echo로 확인해보니 문제없이 출력되구요... 그 후 CICD를 적용시켯더니 계속 해당 환경변수를 찾지 못한다는 에러가 발생합니다.. 어떤 부분이 잘못되었는지 모르겠어서 질문드립니다. name: deploy chatGPT server to AWS EC2 on: push: branches: - main jobs: deploy: runs-on: ubuntu-latest steps: - name: ssh로 서버 접근 & git pull 후 재배포 진행 uses: appleboy/ssh-action@v1.0.3 with: host: ${{ secrets.EC2_HOST }} username: ${{ secrets.EC2_USERNAME }} key: ${{ secrets.EC2_PRIVATE_KEY }} script_stop: true script: | source ~/.bashrc cd /home/ubuntu/spring-chatgpt-communication git pull origin main ./gradlew clean build sudo fuser -k -n tcp 8081 || true nohup java -jar build/libs/*SNAPSHOT.jar > ./output.log 2>&1 & 아래는 저의 CICD yml 파일입니다!
안녕하세요, 재성님! 다름이 아니라 강의를 보며 공부하고 있다가 에러를 마주했는데 해결이 잘 되지 않아 질문드립니다. SSH 로 EC2 에 접속하기 란 스크립트 실행 중 다음과 같이 에러가 발생합니다. ec2의 ~ 폴더 .docker 에 `config.json` 도 추가했습니다. IAM 사용자에 AmazonEC2ContainerRegistryFullAccess 정책을 추가하고, 보안 자격 증명에서 액세스 키와 비밀 키를 발급 받아 github 의 Settings 탭에 Secret Key 에 환경변수로 추가해주었습니다. AmazonEC2ContainerRegistryFullAccess 정책을 추가한 역할을 만들어서 이 역할을 EC2 의 IAM 역할 수정으로 등록해주었습니다. 다음은 제 CI/CD .yml 파일 입니다. https://sky-feast-c76.notion.site/yml-5d542fb264d24e58a3f1342fc076343c?pvs=4 좋은 강의 만들어 주셔서 감사합니다!!
안녕하세요! 알려주신 방법으로 도커와 EC2를 이용해서 CI/CD를 잘 하고 있습니다. ㅎㅎ 그런데 방금 전에 Actions 가 실패해서 봤더니 용량이 부족해서 그런거더라구요. 그래서 좀 찾아봤더니 도커 이미지들을 삭제를 해줘야 하는 것 같네요! 혹시 EC2에 배포하기 전에 도커 이미지를 삭제해주려면 이렇게 하면 될까요? docker stop {컨테이너 이름} || true docker rm {컨테이너 이름} || true docker rmi $(docker images -q) || true docker pull ${{ steps.login-ecr.outputs.registry }}/{이미지 이름}:latest docker run -d --name {컨테이너이름} -p 8080:8080 ${{ steps.login-ecr.outputs.registry }}/{이미지 이름}:latest
혹시 코드를 수정하고 계속 commit 해서, 맨 처음에 clone 했을 때의 코드와 현재 코드가 다른데 추가로 어떤 명령어를 더 입력해야 하나요 ? 깃허브 주소입니다 ! https://github.com/jjeong1015/memberCertification/tree/main
ubuntu@ip-172-31-86-200:~/memberCertification$ ./gradlew clean build Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0. You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins. For more on this, please refer to https://docs.gradle.org/8.7/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation. BUILD FAILED in 15s 8 actionable tasks: 8 executed ubuntu@ip-172-31-86-200:~/memberCertification$ ./gradlew clean build > Task :test MemberCertificationApplicationTests > contextLoads() FAILED java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java:180 Caused by: org.springframework.beans.factory.BeanCreationException at AbstractAutowireCapableBeanFactory.java:1773 Caused by: org.hibernate.service.spi.ServiceException at AbstractServiceRegistryImpl.java:276 Caused by: org.hibernate.HibernateException at DialectFactoryImpl.java:191 1 test completed, 1 failed > Task :test FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':test'. > There were failing tests. See the report at: file:///home/ubuntu/memberCertification/build/reports/tests/test/index.html * Try: > Run with --scan to get full insights. Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0. You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins. For more on this, please refer to https://docs.gradle.org/8.7/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation. BUILD FAILED in 15s 8 actionable tasks: 8 executed ubuntu@ip-172-31-86-200:~/memberCertification$ ./gradlew clean build > Task :test MemberCertificationApplicationTests > contextLoads() FAILED java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java:180 Caused by: org.springframework.beans.factory.BeanCreationException at AbstractAutowireCapableBeanFactory.java:1773 Caused by: org.hibernate.service.spi.ServiceException at AbstractServiceRegistryImpl.java:276 Caused by: org.hibernate.HibernateException at DialectFactoryImpl.java:191 1 test completed, 1 failed > Task :test FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':test'. > There were failing tests. See the report at: file:///home/ubuntu/memberCertification/build/reports/tests/test/index.html * Try: > Run with --scan to get full insights. Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0. You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins. For more on this, please refer to https://docs.gradle.org/8.7/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation. BUILD FAILED in 14s 8 actionable tasks: 8 executed 구글에 검색해본 결과, java: error: invalid flag: --warning-mode=all을 하면 된다는 글을 보고 Preferences > Compiler > java Compiler에 --warning-mode all --stacktrace 입력을 하고 실행을 해봤습니다. java: error: invalid flag: --warning-mode=all가 발생하며 실행이 되지 않습니다. 어떻게 해야 에러를 고칠 수 있을까요 ?
- name: S3에 프로젝트 폴더 업로드하기 run : aws s3 cp --region 과정을 통해서 압축된 tar.gz 파일은 s3에 저장한다고 이해했는데 따로 압축해제하는 과정이 없어서 질문드립니다. run: aws s3 cp --region ... 다음 S3에 프로젝트 폴더 업로드 하는 과정에서 s3에서 해당 파일을 받고 난 후에 알아서 압축해제를 하는건가요??