묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
gitignore 및 branch에 대한 질문
강의를 들으면서 궁금증이 생겼습니다.gitignore에 설정된 파일은 깃허브에만 노출되지 않는것인지, 아니면 git clone으로 프로젝트 다운 시에는 폴더 안에 존재하는지 궁금합니다.만약 clone으로 다운 시 존재하지 않는다면 다른 사람이 제 프로젝트를 clone 하더라도 로컬에서 제대로 돌아가지 않는 게 제 생각인데 맞을까요?ec2에서 현재 프로젝트에 여러 branch가 있을 때, 그 중에서 어떤 branch의 코드를 사용할지는 어떻게 정해지는지 궁금합니다.
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
time out 질문
현재 github actions 실행할때마다 계속 Run Command timeout 뜨는 상태입니다. swap 생성을 해주었는데도 계속 실패하네요..아래는 yml 코드입니다.# Workflow의 이름 # Workflow : 하나의 yml 파일을 하나의 Workflow라고 부른다. name: Deploy To EC2 # Event : 실행되는 시점을 설정 # main이라는 브랜치에 push 될 때 아래 Workflow를 실행 on: push: branches: - step3 # 하나의 Workflow는 1개 이상의 Job으로 구성된다. # 여러 Job은 기본적으로 병렬적으로 수행된다. jobs: # Job을 식별하기 위한 id deploy: # Github Actions를 실행시킬 서버 종류 선택 runs-on: ubuntu-latest # Step : 특정 작업을 수행하는 가장 작은 단위 # Job은 여러 Step들로 구성되어 있다. steps: - name: SSH(원격 접속)로 EC2에 접속하기 # Step에 이름 붙이는 기능 uses: appleboy/ssh-action@v1.0.3 with: host: ${{ secrets.EC2_HOST }} # IP 주소 username: ${{ secrets.EC2_USERNAME }} key: ${{ secrets.EC2_PRIVATE_KEY }} # 키페어 값 script_stop: script: | cd /home/ubuntu/spring-gift-point git pull origin step3 ./gradlew bootJar -x test sudo fuser -k -n tcp 8080 || true nohup java -jar build/libs/*SNAPSHOT.jar > ./output.log >&1 &
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
현재 강의 진행 하기전에 하나씩 훑어 보고있는중에 질문이...
안녕하세요. 현재 강의 진행 하기전에 하나씩 훑어 보고있는중에 질문이 생겨서 질문을 드립니다.아무래도 인프라, 백엔드 쪽 코드에 중점으로 맞춰서 강의를 해주신 거 같습니다. 프론트 프레임워크도 강의 섹션이 있지만, vercel 혹은 s3, cloudfront로 진행을 해주셨는데, 이렇게 간단하게 아닌, next.js도 ec2, ecr, codebuild로 진행하고 싶습니다. js코드를 보면서 익히고 싶은데, 그나마 제가 보면서 대입하기 편한 강의는 nest.js로 보이는데, 이걸로 봐도 이해하는데 지장이 없을까요??
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
CI/CD는 무중단 배포와 다른 느낌인 것이죠?
저는 현재 Github Actions만 사용하여 하는 CI/CD 강의까지 들었는데 이 방식은 결국 sudo fuser -k -n tcp 블라블라를 하고 다시 nohup java -jar 블라블라 명령어로 서버를 띄우는 데까지는 서버가 꺼져있는 것 같습니다.결국 이는 CI/CD는 무중단 배포와 관련은 있지만 CI/CD + {어떤 기술} = 무중단 배포가 되는 것인 거죠?
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
yml 파일 관리
안녕하세요 강의 들으면서 진행중인 토이 프로젝트에 적용시켜 보고 있습니다. gitignore 처리 된 yml 파일을 관리하는 부분에서 궁금증이 생겨 질문 드립니다. 현재 프로젝트엔 yml파일이 3종류 있는데(jwt, oauth 관련) 이렇게 yml 파일이 여러개인 경우 APPLICATION_PROPERTIES1,2,3 이렇게 여러개 만들어서 각각 적용해 주려고 합니다. 이게 좋은 방법일까요? 다른 방법이 있는지도 궁금합니다!그리고 cat 명령어로 yml 파일의 내용을 읽어 봤는데 강의에서처럼 파일 자체의 내용이 나오지 않고 APPLICATION_PROPERTIES 이라고 나오는데 정상적인건가요?
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
IAM에서 역할의 권한 추가 질문있습니다.
강의 잘 듣고 있습니다! 제가 AWS는 잘 몰라서 질문이 있습니다.IAM >역할에서 EC2의 권한을 추가할때 예전에 S3 접근 권한은 수업 내용 중 'code-deploy-ec2-policy'라는 정책을 만들고 IAM > 역할에서 EC2의 권한을 부여했는데요,ECR의 접근 권한을 부여할때는 정책을 따로 만들어서 권한을 부여하지 않고, 'AmazonEC2ContainerRegistryFullAccess' 권한을 직접 추가한 이유가 따로 있으신가요?결과적으로 둘다 같지만 정책을 별도로 추가해서 작업하는 것은 JSON에서 커스텀할 수 있기 때문인가요?
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
docker compose 를 사용할 때 CICD 방법 질문입니다
compose.yml과 프로젝트 소스를 Git PushGithub Actions 에서 도커 이미지 생성생성한 이미지 도커 허브에 전달Github Actions 에서 EC2로 compose.yml 전송Github Actions 에서 SSH로 EC2에 접속해서docker compose downdocker compose pulldocker compose up제가 생각하기에는 이 순서로 진행해야 할 것 같은데 혹시 잘못된게 있을까요?
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
JDK 17 업데이트
안녕하세요! 좋은 강의 감사합니다.우선 저는 현재 JDK 11 버전을 사용하고 있습니다(openjdk version "11.0.21")강의에선 JDK 17 버전을 사용하던데, 11버전을 17로 업데이트해도 기존 프로젝트를 실행 시키는 데 문제가 없을까요?? 스프링부트 2점대와 3점대를 번갈아가며 사용중인데 혹시 버전을 올렸을 때 돌아가지 않는 프로젝트가 생길까 염려되어 질문 남깁니다.그리고 혹시 문제가 있을 수 있다면 JDK 11버전을 사용해도 강의를 끝까지 따라가는 데 문제가 없을까요?
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
docker compose 를 이용하는 방법?
프로젝트에서compose.yml 파일에 mysql과 redis를 적용 시켜놓은 상태입니다compose를 통해 명령 할려면 어떤 식으로 해야 되는지 감이 안잡혀서 여쭈어 봅니다
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
선생님 모든 IP 말고 제 IP로는 연결이 안 됩니다.
선생님 좋은 강의 감사합니다. 도중에 문제가 생겼는데 도무지 해결이 안 돼 글 남깁니다. ㅠㅠ너무 위험해 보여서 제 IP로 진행하고 싶어 보안 그룹에서 SSH 22번 포트 설정할 때 제 IP로 설정을 하였습니다. 제 맥북 터미널을 통한 SSH 원격 접속은 잘 되는데, 콘솔에서 강의에 나오는 웹 방식으로는 접속이 안 되고 있습니다.왜 이럴까요? IP가 잘못된 것은 아닙니다. IP를 바꾸고 제 맥북 터미널에서 SSH 접속을 해보면 접속에 실패하는 것으로 확인했습니다. 도대체 왜 이럴까요?
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
도커 이미지 생성과 푸시 명령어를 할 수 있는 이유
안녕하세요 선생님. 질문 있어 글 남깁니다.Github actions에서 도커 이미지를 생성하고, ECR에 푸시하기 위해 사용한 docker build, docker push와 같은 명령어가 어떻게 실행 될 수 있는건가요?위의 테스트 과정에서 테스트를 위해 ubuntu 서버에 node를 설치했듯이, 여기서도 이미지 생성,푸시 위해서는 ubuntu 서버에 docker를 설치해야 되지 않나요?정리하면, ubuntu 서버에서 도커 설치 없이 docker build, docker push와 같은 명령어가 실행 가능한 이유가 궁금합니다
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
인바운드 규칙 설정 문제
강의내용 따라서 배포까지 진행하고있습니다. 이전강의 보안그룹 설정할때 인바운드규칙 설정에서 HHTP에 기본 80포트로 하고 규칙을 저장하려고 하니 "CIDR 블록, 보안 그룹 ID 또는 접두사 목록을 지정해야 합니다." 라는 문구와함께 값을 인바운드 ip주소? 나 접두사를 입력해야하더라구요. 0.0.0.0/0 은 허용이 되지 않아 접두사목록에 있는 것 하나 그냥 선택해서 넘어갔습니다.배포 후 서버 접속 하려고하니 HTTP 인바운드규칙에 걸려서 그런지 접속이 되지 않아 일단 내IP로 설정해서 접속은 했습니다.모든 IP 주소 접속허용은 안되는건지 잘 모르겠네요...
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
배포 실패
에러 메시지The overall deployment failed because too many individual instances failed deployment, too few healthy instances are available for deployment, or some instances in your deployment group are experiencing problems.CodeDeploy 공식문서 참조less /var/log/aws/codedeploy-agent/codedeploy-agent.log / ERROR에러 메시지InstanceAgent::Plugins::CodeDeployPlugin::CommandPoller: Error during perform: Aws::S3::Errors::NoSuchKey - The specified key does not exist. - /opt/codedeploy-agent/vendor/gems/aws-sdk-core-3.121.1/lib/seahorse/client/plugins/raise_response_errors.rb:17:in call 혹시나 하고 CodeDeploy Agent restart 재시작EC2인스턴스 IAM 재설정yaml 마지막부분 \ 인식하게 수정다 안되네요...
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
일반 프로젝트에서 많이 쓰는 CI/CD 구축 방법의 스크립트 질문
- name: SSH(원격접속)로 EC2에 접속하기 uses: appleboy/ssh-action@v1.0.3 #env: #APPLICATION_PROPERTIES: ${{ secrets.APPLICATION_PROPERTIES }} with: #SSH로 접속할 때 필요한 값들이 있음. IP주소, ubuntu, 키페어 (EC2에 접속하기 위한 과정) host: ${{ secrets.EC2_HOST }} username: ${{ secrets.EC2_USERNAME }} key: ${{ secrets.EC2_PRIVATE_KEY }} #envs: APPLICATION_PROPERTIES #문제가 있으면 스크립트 중단. script_stop: true script: | rm -rf /home/ubuntu/instargram-server/current mkdir /home/ubuntu/instargram-server/current mv /home/ubuntu/instargram-server/tobe/project.jar /home/ubuntu/instargram-server/current/project.jar cd /home/ubuntu/instargram-server/current sudo fuser -k -n tcp 8080 || true nohup java -jar project.jar > ./output.log 2>&1 & rm -rf /home/ubuntu/instargram-server/tobe스크립트에서 실행 순서에 대한 질문입니다.기존에 있던 서버는 current 파일의 project.jar 로 실행되고 있었을텐데 current 파일을 먼저 날리고 기존의 서버를 종료시켜 주는 부분이 이해가 되지 않습니다. 아마도 제 생각에는 current 폴더 안의 project.jar로 실행되고 있던 8080포트의 프로세스가 current 폴더를 삭제해주면 에러가 생길 것 같은데 에러가 생기지 않는 이유가 궁금합니다. 프로젝트 종료 -> 프로젝트가 담겨있던 폴더 삭제 -> 새 프로젝트 폴더 생성 순으로 가야 할 것 같은데 기존 프로젝트 폴더 삭제 -> 새 프로젝트 폴더 생성 -> 프로젝트 이동 -> 기존 프로젝트 종료 -> 새 프로젝트 실행 이런 순서로 해도 에러가 안나는 이유가 궁금합니다. 두서없이 써서 죄송합니다 ㅎㅎ;
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
git action run command timeout
인스턴스 생성시 전부 프리티어로 생성을 했었는데git action run command timeout 발생했습니다혹시나 다른분들도 이런상황이라면aws ec2 메모리 용량 증설에 대해서 검색해보세요15분이 기다려도 안되던데 바로 적용이 되네요
-
해결됨비전공자도 이해할 수 있는 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 구축을 해당 강의를 참고하여 진행하려고 하는데 스크립트 작성을 하면서 의문점이 생겨 글 남깁니다! 강의 항상 잘 듣고 있습니다 감사합니다~