GitHub Actions는 Github가 공식적으로 제공하는 빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 CI/CD 플랫폼이다.

 

레포지토리에서 Pull Requestpush 같은 이벤트를 트리거로 GitHub 작업 워크플로우(Workflow)를 구성할 수 있다.

 

📌워크플로우
하나 이상의 작업이 실행되는 자동화 프로세스
각 작업은 자체 가상 머신 또는 컨테이너 내부에서 실행된다.

.yml(혹은.yaml) 파일에 의해 구성되며, 테스트, 배포 등 기능에 따라 여러 개의 워크플로우도 만들 수 있다.
생성된 워크플로우는.github/workflows 디렉토리 이하에 위치하게 된다.

 

 

 

📌Github Actions를 통한 배포 Flow

 

📌Github Actions

설정 파일(.yml)에 따라 Github Repository에 특정 변동사항을 트리거로 작동.

나는 main 브랜치에 push 하는 경우 작동하도록 설정한 후 진행할 예정이다.

main 브랜치에 push시 빌드하고, 빌드를 마친 프로젝트를 AWS의 S3 버킷에 저장하고, Code Deploy에 S3에서 EC2로 배포 명령을 내린다.

 

📌S3

S3를 정적 웹 페이지 배포하는 데에 사용할 수도 있지만,

Github Actions 배포 자동화에서 저장소로써 사용할 수도 있다.

Github Actions에서 빌드한 결과물압축되어 S3으로 전송되고, 버킷에 저장되는 것이다.

 

 

📌Code Deploy

Github Actions에서 배포 명령을 받은 Code Deploy는 S3에 저장되어 있는 빌드 결과물을 EC2 인스턴스로 이동시킨다.

 

프로젝트 최상단에 위치한 appepec.yml 설정 파일에 의해 특정 동작을 함.

Code Deploy가 S3 버킷에서 EC2 인스턴스로 프로젝트를 이동할 수 있도록 EC2 인스턴스에 Code Deploy Agent의 설치가 필요하다.

OS별, 버전별 설치 방법이 상이하므로, 공식문서를 참고하여 진행한다.

 

 

📌EC2

Code Deploy에 의해 빌드 과정을 거친 프로젝트가 EC2 인스턴스로 전달되고,

.yml (설정 파일) .sh (쉘 스크립트)에 의해 각 배포 결과를 로그로 저장하며 빌드 파일(.jar)을 실행

해당 과정이 원활히 진행되기 위해, EC2 인스턴스에 접속하여 알맞은 Code Deploy Agent의 설치와 JDK 11 버전 설치가 필요하다.

 

 

 

📌리소스 설정하기

깃허브 엑션 탭에서 워크플로우를 어떻게 생성할지 선택할 수 있따.

 

상단의 set up a workflow yourself를 통해 빈yml 설정파일로 워크플로우를 설정할 수 있고,

추천 워크플로우 구성을 선택하여 진행할 수도 있다.

 

나는 Gradle빌드가 기본으로 설정되어 있는 Java With Gradle추천 구성에 권한을 추가하여 사용하였따(권한 추가하지 않을 시 '~/gradlew' is not executable 에러가 발생 에러가 발생했다.)

name: Java CI with Gradle

on:
  push:
    branches: [ "master" ]
  pull_request:
    branches: [ "master" ]

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'
    - name: Add permission
      run: chmod +x ./gradlew
    - name: Build with Gradle
      uses: gradle/gradle-build-action@bd5760595778326ba7f1441bcf7e88b49de61a25 # v2.6.0
      with:
        arguments: build
 


이제 깃허브 워크플로우 설정이 성공적으로 빌드되었다.

위와 같이 워크플로우의 과정을 확인할 수 있다.

진행 성공/실패 여부도 레포지토리에서 최근 커밋 내역과 함께 확인할 수 있게 되었다.

 

 

 

이제 S3버킷에 프로젝트 빌드한 결과물을 전송해보자❗

https://develoyummer.tistory.com/122

 

 

 

 

'etc' 카테고리의 다른 글

EC2환경에서 환경변수 적용하기(ubuntu)  (3) 2024.03.28
Github Actions를 통한 배포 자동화 3  (7) 2024.03.04
[프로젝트] redis 적용  (0) 2023.06.23
NoSQL과 RDBMS의 차이  (0) 2023.06.21
Redis란  (0) 2023.06.19
복사했습니다!