inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

GithubAction CI/CD 질문드립니다

해결된 질문

376

임종영

작성한 질문수 1

0

현재 GithubAction + AWS S3 + CodeDeploy CI/CD 구축 중입니다.

CI.yml 파일 코드는

name: Java CI with Gradle

# master 브랜치의 push와 pull로 CI가 작동

on:

push:

branches: [ "be-dev" ]

pull_request:

branches: [ "be-dev" ]

permissions:

contents: read

jobs:

build:

runs-on: ubuntu-latest

steps:

- uses: actions/checkout@v3

- name: Set up JDK 11

uses: actions/setup-java@v3

with:

# 자신이 사용하는 자바 버전에 맞춰주자

java-version: '11'

distribution: 'temurin'

- uses : actions/checkout@v3

#1

# 해당 부분은 상당히 중요함 (글에서 부가설명)

# application.yml는 외부에 노출되면 안되므로 Actions가 빌드될때마다 해당 Repository의 Secret 설정을

# 이용하여서 설정 파일을 생성해줌 (github에 commit 되는게 아님!)

- run : touch ./server/src/main/resources/application.yml

- run : echo "${{ secrets.APPLICATION }}" > ./server/src/main/resources/application.yml

- run : cat ./server/src/main/resources/application.yml

# gradlew에 권한 부여

- name: Grant execute permission for gradlew

run: chmod +x ./server/gradlew

shell: bash

# gradlew 빌드

- name: init with Gradle

uses: gradle/gradle-build-action@v2

- run: gradle init

- name: Build with Gradle

uses: gradle/gradle-build-action@v2

with:

gradle-version: 7.5.1

arguments: build

# 빌드를 성공하면 해당 프로젝트를 zip로 만듬

# 이름은 run 에서 설정 가능

- name: Make zip file

run: zip -r ./main13.zip .

shell: bash

#2

# AWS 계정 설정

- name: Configure AWS credentials

uses: aws-actions/configure-aws-credentials@v1

with:

# 깃허브 Secret에 넣어둔 Access key

aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}

# 깃허브 Secret에 넣어둔 Secret key

aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

# 깃허브 Secret에 넣어둔 Region

aws-region: ${{ secrets.AWS_REGION }}

#3

# 만들어 놓은 S3에 해당 zip 파일 저장

- name: Upload to S3

run: aws s3 cp --region ${{ secrets.AWS_REGION }} ./main13.zip s3://api.hard-coding.com/main13.zip

#4

# AWS CodeDeploy에 배포

- name: Deploy

env:

AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}

AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

run: |

S3 설정내용

입니다.

 

액션에서는 성공으로 나오는데 제가 생각하기에는 Task 생성이 제대로 되는 것 같지 않고

action.jpg

빌드된 파일들이 S3 버킷을 통해서 ec2로 들어왔을때도 빌드파일은 존재하지 않습니다.

빌드.jpg

당연히 deploy.sh 파일에서도

디플로이.jpg

build 폴더가 존재하지 않아 실행되지 않습니다.

어디서 문제인지 혹은 빌드파일이 생성되지 않는 문제 조언부탁드립니다...

springboot githubaction ci/cd codedeploy

답변 1

1

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴이에요.

GithubAction + AWS S3 + CodeDeploy CI/CD 구축 중 문제가 발생하고 계신 것 같아서 안타깝습니다.

빌드 된 파일이 S3 버킷을 통해서 EC2로 전송될 때 빌드 파일이 생성되지 않는다는 말씀이신데요, 빌드 파일이 어디에서 생성되는지를 정확히 파악하시는 것이 중요합니다.

CI/CD 구축을 위해 작성한 .yml 파일에서 build: job에서 Gradle을 사용하여 빌드하는 것으로 보입니다. Gradle 자체적으로 빌드 파일을 생성해주기 때문에 build 폴더가 생기며, 빌드된 파일들은 코드가 저장된 경로에서 상위 경로인 build 폴더에서 만들어집니다.

따라서, S3 버킷으로 파일을 전송하기 전에 빌드된 파일들이 build 폴더 안에 있는지 다시 한 번 확인해보시기 바랍니다. 빌드되지 않는 문제 해결을 위해서 Gradle 빌드 과정 중 빌드에 실패하는 부분을 파악하고 확인하는 작업도 함께 진행하시면 좋을 것 같습니다.

도움이 되었으면 좋겠습니다. 감사합니다.

선생님 안녕하세요

0

12

1

intellij나 파이참 기준 어떻게 하는지 궁금합니다

0

38

2

상세 설정까지 이해하시는 비결이 궁금합니다

1

62

2

Apple Silicon에서 CI 빌드 이미지가 재시작을 반복할 때 (jib platforms 수정)

1

51

1

제공된 스크립트를 어디서 받을 수 있나요?

0

38

1

실행중인 컨테이너를 모두 삭제하는 방법(윈도우버전)

0

72

3

winpty docker 설정

0

64

3

vs code설치했는데도, easy docker 파일 열기에서 vs code 아이콘은 안보여요

0

45

1

verify.sh 4단계 실패 — Jenkins 컨테이너에서 127.0.0.1:6443 connection refused

0

64

2

아무 수정도 안하고 주어진 소스로 그대로 했는데 패스워드 에러가 남

0

87

1

처음 실행 시 계속 패스워드가 틀리다고 나옴. 수정하고 해도 마찬가지임

1

107

2

4. ArgoCD설치---Base64 디코딩 부분만 PowerShell 방식으로 바꾸어서 설치 필요

0

61

1

개인 git에 코드를 올려도 될지 문의드립니다.

0

75

2

vagrant up 설치 에러

0

73

2

자료를 다운로드후 압축을 풀때 오류납니다.

0

106

2

섹션12 강의에 대한 질문

0

59

1

!!!!!강의내용 틀린 부분 수정좀 해줘요!!!!!!!

1

76

1

동영상이상여부

0

61

1

백엔드 이미지

0

88

1

Pull 방식 아키텍처3 문의

1

83

2

가상머신, Jenkins 등의 설치, 설정

0

70

1

[해결] Jenkins 설치 시 "Package jenkins has no installation candidate" 에러

0

142

1

내장형 톰캣일경우

0

101

2

Docker + Spring Boot CI/CD 방법

0

120

2