묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
Ec2 인스턴스로 요청이 안됩니다.
안녕하세요.EC2 인스턴스 및 보안 그룹 설정 후 git clone, Jar 빌드 후 run까지 되는데외부에서 IP주소:port로 요청을해도 요청이 들어오지 않아 질문드립니다.curl 을 해봐도 커넥션 타임아웃이 발생하는데따로 확인해야하는 부분이 있을까요?강의랑 다르게 한것은 AWS 에서 우분투 에서 깃 클론 후 ./gradlew 명령어가 없다고 나와서 따로 wget으로 설치 후 환경변수 설정했습니다.감사합니다.
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
scp로 EC2에 jar 전송 중 scp timeout로 인한 실패 문제입니다
[실습] 일반 프로젝트에서 많이 쓰는 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 내부에서 동작하는 실습까지는 모두 작동했었습니다 따로 에러를 구글링해보았지만 유의미한 해결책이 보이지 않아 올려봅니다
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
수업자료 질문-Case 2 - 일반 웹 프로젝트 구조에 CI/CD 적용하기 (S3, Cloudfront)
전체적인 흐름 이미지를 보면 3번과 4번에서 캐시무효화 명령 및 캐시 무효화를 하는 설명이 작성되어 있습니다. 깃헙 액션에서 3번을 수행하는것 까진 이해가 되는데 4번은 누가 하는건지 모르겠습니다. 제가 찾아본바로는 3번만 수행하면 유저가 다음 요청시 cloudfront가 새로 s3에서 데이터를 받아오고 해당값을 캐싱하는것으로 이해했습니다.https://jscode.notion.site/Case-2-CI-CD-S3-Cloudfront-bbd22542211046feac5f04a3955ddf71
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
S3 권한 문제 어떻게 해결해야 할까요 ㅠㅠ?
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.
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
ECR + CodeDeploy를 활용한 CI/CD에서 쉘 스크립트 질문
섹션4의 5번째 강의 5분 17초에 보면ECR에 저장된 이미지를 가져오기 위해ECR의 주소가 적혀있는데요. 이 코드들이 깃헙에 올라가게 되면저의 프라이빗 ECR 주소가 외부로 공개가 되는 것 같은데실제 현업에서도 이렇게 ECR 주소가 외부로 공개하는 방식으로 사용하나요?현재 여럿이서 진행하는 프로젝트의 CI/CD 구축을 해당 강의를 참고하여 진행하려고 하는데 스크립트 작성을 하면서 의문점이 생겨 글 남깁니다! 강의 항상 잘 듣고 있습니다 감사합니다~
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
java 환경변수 주입 질문
안녕하세요 실습하다보니 질문이 생겨서 질문드립니다. 저같은 경우에는 .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 파일입니다!
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
`err: Error response from daemon: Head "https://~~~/v2/issue-tracker/manifests/latest": no basic auth credentials` 에러 문제입니다.
안녕하세요, 재성님!다름이 아니라 강의를 보며 공부하고 있다가 에러를 마주했는데 해결이 잘 되지 않아 질문드립니다. 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 좋은 강의 만들어 주셔서 감사합니다!!
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
EC2에 배포하기 전에 기존 이미지를 삭제하고 배포해도 되나요?
안녕하세요! 알려주신 방법으로 도커와 EC2를 이용해서 CI/CD를 잘 하고 있습니다. ㅎㅎ 그런데 방금 전에 Actions 가 실패해서 봤더니 용량이 부족해서 그런거더라구요. 그래서 좀 찾아봤더니 도커 이미지들을 삭제를 해줘야 하는 것 같네요! 혹시 EC2에 배포하기 전에 도커 이미지를 삭제해주려면 이렇게 하면 될까요?docker stop {컨테이너 이름} || truedocker rm {컨테이너 이름} || truedocker rmi $(docker images -q) || truedocker pull ${{ steps.login-ecr.outputs.registry }}/{이미지 이름}:latestdocker run -d --name {컨테이너이름} -p 8080:8080 ${{ steps.login-ecr.outputs.registry }}/{이미지 이름}:latest
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
EC2 스프링부트 배포하기에서 빌드가 안됩니다.
ec2-spring-boot-sample를 clone 받아 빌드를 실행했는데 78%에서 진행이 안되네요. 말씀주신 다른 명령어로 실행해보니 디펜던시에 문제가 있는 것 같기도 합니다 ㅜㅜ
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
EC2에 nodejs 설치하기
[실습] 7. Express 서버를 EC2에 배포하기강의에서 nodejs 설치할 때 복사해서 가져와 주셨는데 코드가 길어서 어디서 긁어올 수 있는지 알 수 있으면 좋을 것 같아요. 늘 좋은 강의 감사합니다.
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
aws ecr이 아닌 docker hub를 이용한 CI/CD
aws ecr이 아닌 docker hub를 이용한 CI/CD 이용한 방법하고 ECR하고 차이가 많나요.있다면 어떤 부분 따로 학습이 필요할 까요?
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
echo로 깃허브 액션내 서버에서 yml 파일 생성시 질문
spring: jpa: open-in-view: false hibernate: ddl-auto: none properties: hibernate.default_batch_fetch_size: 100 --- spring.config.activate.on-profile: local spring: jpa: hibernate: ddl-auto: create properties: hibernate: format_sql: true show_sql: true h2: console: enabled: true storage: datasource: core: driver-class-name: org.h2.Driver jdbc-url: jdbc:h2:mem:core;MODE=MySQL;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE username: sa pool-name: core-db-pool data-source-properties: rewriteBatchedStatements: true --- spring.config.activate.on-profile: local-dev spring: jpa: properties: hibernate: show_log: true format_sql: true show-sql: true storage: datasource: core: driver-class-name: com.mysql.cj.jdbc.Driver jdbc-url: jdbc:mysql://${storage.database.core-db.url} username: ${storage.database.core-db.username} password: ${storage.database.core-db.password} maximum-pool-size: 5 connection-timeout: 1100 keepalive-time: 30000 validation-timeout: 1000 max-lifetime: 600000 pool-name: core-db-pool data-source-properties: socketTimeout: 3000 cachePrepStmts: true prepStmtCacheSize: 250 prepStmtCacheSqlLimit: 2048 useServerPrepStmts: true useLocalSessionState: true rewriteBatchedStatements: true cacheResultSetMetadata: true cacheServerConfiguration: true elideSetAutoCommits: true maintainTimeStats: false위의 yml 파일을 깃허브 액션내 서버에서 생성하려구 합니다. - name: db-core.yml 파일 만들기 run: echo "${{ secrets.APPLICATION_PROPERTIES }}" > ./storage/db-core/src/main/resources/db-core.yml액션 스크립트에서 강의와 같이 설정하면 아래와 같은 에러가 뜹니다 ㅠㅠecho 명령어가 특수문자(---)에 대해서 처리를 못하는 걸까요?Run echo "*** /home/runner/work/_temp/63b7a555-4d5d-42d4-971d-fe62ef3e0580.sh: line 70: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** : bad substitution Error: Process completed with exit code 1.
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
8080 포트에서 실행 중인 프로그램이 없습니다.
ubuntu@ip-172-31-86-200:~$ cd memberCertification ubuntu@ip-172-31-86-200:~/memberCertification$ ./gradlew clean build BUILD SUCCESSFUL in 7s 6 actionable tasks: 6 executed ubuntu@ip-172-31-86-200:~/memberCertification$ ls build build.gradle gradle gradlew gradlew.bat settings.gradle src ubuntu@ip-172-31-86-200:~/memberCertification$ cd build ubuntu@ip-172-31-86-200:~/memberCertification/build$ ls classes generated libs resolvedMainClassName resources tmp ubuntu@ip-172-31-86-200:~/memberCertification/build$ cd libs ubuntu@ip-172-31-86-200:~/memberCertification/build/libs$ ls memberCertification-0.0.1-SNAPSHOT-plain.jar memberCertification-0.0.1-SNAPSHOT.jar ubuntu@ip-172-31-86-200:~/memberCertification/build/libs$ nohup java -jar memberCertification-0.0.1-SNAPSHOT.jar & [1] 1678 ubuntu@ip-172-31-86-200:~/memberCertification/build/libs$ nohup: ignoring input and appending output to 'nohup.out' ubuntu@ip-172-31-86-200:~/memberCertification/build/libs$ sudo lsof -i:8080 ubuntu@ip-172-31-86-200:~/memberCertification/build/libs$ build를 했는데 publicIPs에 8080 포트를 주소에 입력하면 "연결을 거부했습니다." 라는 문구가 뜹니다.8080 포트가 쓰이지 않는 거 같아 cat nohup.out을 입력해보면 org.postgresql.util.PSQLException: FATAL: password authentication failed for user "jjeong" at org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.java:693) ~[postgresql-42.6.0.jar!/:42.6.0] org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.exception.GenericJDBCException: Unable to open JDBC Connection for DDL execution [FATAL: password authentication failed for user "jjeong"] [n/a] application.properties#datasource spring.datasource.driver-class-name=org.postgresql.Driver spring.datasource.url=jdbc:postgresql://localhost:5432/membercertification spring.datasource.username=jjeong spring.datasource.password=0525url, username, password가 다 들어맞는 것도 확인했습니다. build.gradledependencies { implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.modelmapper:modelmapper:3.1.0' implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity6:3.1.2.RELEASE' // implementation 'org.hibernate.orm:hibernate-core:6.2.6.Final' compileOnly 'org.projectlombok:lombok' runtimeOnly 'org.postgresql:postgresql' annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' testImplementation 'org.springframework.security:spring-security-test' testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.0' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.10.0' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' developmentOnly 'org.springframework.boot:spring-boot-devtools' } 어디가 문제인지 모르겠습니다 ㅠㅠ
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
InteliiJ IDEA에서 빌드 시 에러가 발생하지 않는데, EC2에서 빌드 시 에러가 발생합니다.
혹시 코드를 수정하고 계속 commit 해서, 맨 처음에 clone 했을 때의 코드와 현재 코드가 다른데 추가로 어떤 명령어를 더 입력해야 하나요 ?깃허브 주소입니다 ! https://github.com/jjeong1015/memberCertification/tree/main
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
./gradlew clean build --warning-mode=all --stacktrace 빌드 에러
https://www.inflearn.com/questions/1277467/%EB%B9%8C%EB%93%9C-%EC%8B%9C-%EC%97%90%EB%9F%AC%EA%B0%80-%EB%B0%9C%EC%83%9D%ED%95%A9%EB%8B%88%EB%8B%A4 말씀하신 명령어로 입력해보았으나 해당 에러들이 발생하였습니다 !깃허브 주소 : https://github.com/jjeong1015/memberCertification
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
빌드 시 에러가 발생합니다.
ubuntu@ip-172-31-86-200:~/memberCertification$ ./gradlew clean buildDeprecated 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가 발생하며 실행이 되지 않습니다. 어떻게 해야 에러를 고칠 수 있을까요 ?
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
tar.gz 압축 질문있습니다
- name: S3에 프로젝트 폴더 업로드하기 run : aws s3 cp --region 과정을 통해서 압축된 tar.gz 파일은 s3에 저장한다고 이해했는데 따로 압축해제하는 과정이 없어서 질문드립니다. run: aws s3 cp --region ... 다음 S3에 프로젝트 폴더 업로드 하는 과정에서 s3에서 해당 파일을 받고 난 후에 알아서 압축해제를 하는건가요??
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
Github Actions는 성공적으로 끝났는데 docker 컨테이너가 실행되지 않습니다.
ci/cd가 끝난 후 ec2에서 docker ps 명령어를 쳤는데 컨테이너가 실행되지 않습니다. docker ps -a 명령어로 보니 status 가 Exited로 나오네요.ec2 사양은 t2micro 로 했는데 이 영향이 있을까요?
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
파일 작성시
강의 잘 듣고 있습니다. ㅎㅎ yml 파일 작성시 저렇게 노란색으로 나오는데 왜나오는 건가요? 없앨수 있는 방법이 있나요??