GithubAction CI/CD 질문드립니다

23.05.28 22:26 작성 조회수 226

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 폴더가 존재하지 않아 실행되지 않습니다.

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

답변 1

답변을 작성해보세요.

1

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.05.29

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

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

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

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

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

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