묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨비전공자도 이해할 수 있는 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 파일 작성시 저렇게 노란색으로 나오는데 왜나오는 건가요? 없앨수 있는 방법이 있나요??