skarltjr / Memory_Write_Record

나의 모든 학습 기록
0 stars 0 forks source link

깃허브 액션 #107

Open skarltjr opened 2 years ago

skarltjr commented 2 years ago

Github action이란?

깃허브 저장소를 기반으로 소프트웨어 개발 WorkFlowfmf 자동화할 수 있는 도구
깃허브 내부에서 프로젝트 빌드,테스트, 릴리즈등의 기능을 지원하는 깃허브의 CI/CD

Github Action 주요 개념

1. workflow

- workflow는 프로젝트를 빌드,테스트,릴리즈를 위한 전체적인 프로세스
- workflow는 여러개의 job으로 구성되어 event기반으로 동작한다.
- 여러 job으로 구성되며 최상위 개념
- yaml로 작성되며 .github/workflows폴더 아래에 저장된다

2. event

- workflow를 실행하는 trigger
- ex) 특정 브랜치로 push / 특정 브랜치로 pr / 특정 시간대에 반복(cron)
- webhook을 사용해 외부 이벤트를 통해 실행

3. job

- job은 여러 step으로 구성되고 가상 환경의 인스턴스에서 실행된다
- 서로다른 job이 의존관계를 가질 수 있고, 독립적으로 병렬 실행도 가능하다

4. step

- step은 순차적으로 명령어를 수행한다.
- task들의 집합으로 커맨드 사용이 가능

5.action

- workflow의 가장 작은 단위 블럭
- job을 만들기 위해 step들을 연결할 수 있다
- 재사용이 가능한 컴포넌트
skarltjr commented 2 years ago
name: Java CI with Gradle

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - name: Set up JDK 11
      uses: actions/setup-java@v2
      with:
        java-version: '11'
        distribution: 'adopt'

    - name: Grant execute permission for gradlew
       run: chmod +x gradlew

    - name: run test
       run: ./gradlew test

    - name: run build
       run: ./gradlew clean build -x test
1. on -> event를 정의한다
main브랜치에 push나 pr이 발생하면 workflow가 실행된다
2. jobs
여러 step으로 구성된다. step을 살펴보면

먼저 uses는 어떤 액션을 사용할지 지정. 이미 만들어진 액션을 사용할 때 지정한다.
1. uses: actions/checkout@v2. => checkout 액션을 사용한다

2. uses: actions/setup-java@v2 => 자바 세팅 

여기까진 이미 마켓플레이스에 존재하는 액션을 활용했고 나머지 workflow는 필요에의해 구성한다

3. gradle 권한부여
 name: Grant execute permission for gradlew
 run: chmod +x gradlew

4. 테스트 실행
    name: run test
     run: ./gradlew test

5. 빌드 실행
    name: run build
    run: ./gradlew clean build -x test