본문 바로가기
★ 프로젝트 + 트러블 슈팅 ★

CI/CD 트러블 슈팅 1

by 리승우 2022. 12. 13.

1. workflow 진행 시 Build 오류 발생

우측과 같은 오류가 발생하여 왼쪽에 기재된 내용을 workflow에 추가하여 다시 실행하였음

 

 

2. workflow 진행 시 Build 오류 발생

해당 오류 발생 시는 문제상황 가능성은 아래와 같이 나뉘어짐.

 

[문제 종류]

1. RDS의 보안규칙에 EC2 보안그룹을 넣어주지 않았기 때문

2. Mysql 보안정보가 기재되지 않았기 때문

3. Mysql 보안정보가 틀렸기 때문

4. 환경변수 이용 시, 올바르게 연동이 되지 않았기 때문

 

확인한 결과 1,2,3에서의 문제는 이상이 없었다.

그러므로 4번이 가장 유력한 문제점이기에, 해결방법을 찾아야했다.

 

github actions는 repository에 있는 정보를 기반으로 실행되는 것이기에 repository에 정보를 올리지않으면서도 RDS를 사용하는 효율적인 방법이 필요하였다.

 

찾아본 결과, 아래와 같은 방법을 이용하였다.

 

1. Settings -> Secrets -> Actions의 APPLI(이름은 자유형식으로 지정)에 application.yml 코드 내용을 전부 기재

 

2. (2)번과 (3)번 사이에 #create application.yml내용을 기재

 

코드설명 : secrets에 작성된 APPLI값을 가져와서 application.yml 파일을 작성함.

                 해당 코드 덕분에 RDS의 보안정보를 github 노출없이 사용할 수 있게됨.

   # (2) JDK 11 세팅
    - name: Set up JDK 11
      uses: actions/setup-java@v3
      with:
        distribution: 'temurin'
        java-version: '11'

# create application.yml
    - name: make application.yml
#       if: contains(github.ref, 'leedev') # branch가 leedev 일 때, 나머지는 위와 동일
      run: |
        mkdir -p ./src/main/resources
        cd ./src/main/resources       
        touch ./application.yml
        echo "${{ secrets.APPLI }}" > ./application.yml
      shell: bash
        

        
    - name: Run chmod to make gradlew executable
      run: chmod +x ./gradlew

    # (3) Gradle build (Test 제외)
    - name: Build with Gradle
      uses: gradle/gradle-build-action@0d13054264b0bb894ded474f08ebb30921341cee
      with:
        arguments: clean build -x test

 

해당 방식을 차용하여 workflow 정상작동 및 RDS연결을 원활히 진행하게 되었다.

 

3. log 파일 연동 불가로 인한 서버 배포 실패

아마 나만 겪었을 오류일 수도 있으나, 누군가를 위해 글을 남겨둔다.

해당 프로젝트에서 아래와 같이 logback-spring.xml파일을 만들어서 로그를 파일 단위로 기록하게끔 설정하였다.

해당 파일은 55번째 행에 기재된 대로, 파일명을 찾아가 로그를 추가로 기재되게끔 하는 코드이다.

 

헌데!

github actions를 통해 S3에 저장된 jar파일을 codedeploy 명령을 받은 ec2가 실행하여 배포할 경우

log를 못 찾으면 오류가 발생하게 된다.

해당 오류를 잡느라 꼬박 2일이 걸렸다. 나의 능력 부족이 컸다고 생각한다.

 

그래서 2번째 이미지에 기재된 log 파일을 모두 삭제한 후 실행하였다.

드디어 실행이 되었다. 

CI/CD의 진행과정에 대해 면밀히 살펴보게 된 귀중한 경험으로 남았다.

 

댓글