CI/CD with Git Action
Git Action을 이용한 CI
아래는 Git action으로 CI를 하는 예시이다.
Git action은 가장 크게는 workflow라는 단위로 진행된다.
yml 파일로 CI에 대한 workflow를 설정할 수 있다.
-workflow----------
jobs:
잡이름:
steps:
- 실행할 거
- 실행할 거2
...
잡이름2:
steps: - 실행할 거
- 실행할 거2
...
이런 식으로 이루어져있다고 생각하면 된다.
name: Java CI with Gradle
on:
pull_request:
branches: [ develop ]
jobs:
build:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- name: Set up JDK 11
uses: actions/setup-java@v2
with:
java-version: '11'
distribution: 'adopt'
- name: Build with Gradle
uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021
with:
arguments: build
설명:
develop 브랜치에 pull request가 들어올때마다 이 workflow가 실행된다.
이 workflow는 현재 하나의 job으로 구성되어 있고, 이 job은 2 step으로 구성되어 있다.
Set up JDK 11 - gradle로 빌드를 하기위해 자바를 세팅해준다.
Build with Gradle - gradle build를 하게 되면 컴파일에 문제가 없어야 하는것은 물론이고 내부적으로 작성해둔 테스트를 다 통과해야만 빌드가 정상적으로 완료된다.
Action을 활용해서 CI를 하기 위한 Github 설정
위와 같이 이 build job에서 아무 문제가 발생하지 않아야만 merge를 할수있도록 github에서 설정해 줄 수 있다.
Git Action을 이용한 CD
github->ec2로 CD가 되도록 구현하는 예시이다.
name: CD
on:
push:
branches: [ develop ]
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-20.04
steps:
- name: Checkout source code
uses: actions/checkout@v2
- name: Build App
run: ./gradlew bootJar
- name: Deploy Prod use SCP
uses: appleboy/scp-action@master
with:
username: ubuntu
host: ${{ secrets.HOST }}
key: ${{ secrets.PRIVATE_KEY }}
source: "./build/libs/*.jar"
target: "/home/ubuntu/deploy"
strip_components: 2
- name: Transfer Deploy Script use SCP
uses: appleboy/scp-action@master
with:
username: ubuntu
host: ${{ secrets.HOST }}
key: ${{ secrets.PRIVATE_KEY }}
source: "deploy.sh"
target: "/home/ubuntu/deploy"
- name: Execute Server Init Script
uses: appleboy/ssh-action@master
with:
username: ubuntu
host: ${{ secrets.HOST }}
key: ${{ secrets.PRIVATE_KEY }}
script_stop: true
script: |
cd /home/ubuntu/deploy
chmod u+x deploy.sh
./deploy.sh
설명:
develop 브랜치에 push가 되었을 때 Git Action으로 scp로 ec2에 빌드된 jar 파일을 전송 후 쉘 스크립트로 jar을 실행하는 job을 진행한다.
Author And Source
이 문제에 관하여(CI/CD with Git Action), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@koseyeon/CICD-with-Git-Action저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)