Github Action 정리

뜨루루루·2023년 10월 21일

문법

name => workflow 안에서 식별자 역할

on => 트리거 설정

  • pull_request, push, issues ... 등등 지정
  • 배열 형식으로 지정 할 수도 있다. ex) [push, pull_request]
  • branches 를 시용하여 트리걸할 branch 특정 가능
  • 배열 형식으로 지정 할 수도 있다. ex) [main, 'feature/login']
  • tags 를 사용하여 해당 태그를 트리거 할 수도 있다. (방법은 branch와 같다.)
  • branches, tags에 ignore를 사용 할 수 있다.

jobs => 모든 workflow는 job으로 이루어 지며, 병력적으로 수행되기 그점을 유의 해야한다.
job => 식별자가 필요하며 이름은 자유롭게 지정하면 된다.

  • name: Github에 표시되는 job 이름이다.
  • needs: job은 병렬적으로 실행되기 때문에 동기적으로 실행해야 한다면 needs 조건을 주어야 한다. 문자열 또는 문자열의 array타입이 값으로 사용된다. 만약 조건이 되는 job이 실패하면 그 job을 필요로하는 모든 job은 실행되지 않는다.
  • runs-on: 필수적인 필드이며 해당 job이 이루어질 환경을 설정해주는곳 이다. ex) runs-on: ubuntu:latest
  • env: 환경 변수이다. job 아래의 모든 step에서 사용가능하고 전역적으로 선언된 env를 오버라이딩한다.
  • if-else: 기타 언어에서 사용되는 if-else와 유사하다.
  • steps: job 내부 실행순서를 지정해주는 곳 이다.
  • steps.name: Github에 표시되는 step 이름이다.
  • steps.run: 사용할 커맨드라인을 지정할 수 있으며, 여러 커맨드를 지정할 수 있다.
    ex)
run: |
	echo Hello world!
    echo Yeah!
  • steps.shell: 커맨드라인을 사용할 shell을 지정 할 수 있다.
  • steps.working-directory: 커맨드라인이 사용될 위치를 지정 할 수 있다.
  • steps.uses: 외부, 커스텀 actions를 불러올 수 있다.
  • steps.with: uses에서 불러온 action input 값을 넣어 줄수 있다.
  • steps.id: step을 대표하는 id값을 지정 할 수 있다.
    ex & 사용예시)
- name: Cache node modules
        uses: actions/cache@v2
        id: cache
        with:
          path: node_modules
          key: npm-packages-${{ hashFiles('**/package-lock.json') }}

      - name: Install Dependencies
        if: steps.cache.outputs.cache-hit != 'true'
        run: npm install

코드 출처 - kakao FE 기술 블로그

input => 함수처럼 값을 받아 올 수 있다.

  • 변수처럼 이름을 지정해서 사용하면 된다.
  • required: 필수적으로 필요한 값인지 설정 할 수 있다.(boolean)
  • default: 기본값을 지정해 줄 수 있다.

알면 좋은 것들

커스텀 액션을 만들어 줄때 runs 내부에 using을 'composite'으로 지정 해주자.

Github repository 내부 환경변수들을 사용하려면 ${{secrets.***}} 식으로 접근해야 하며,
actions에 사용될 환경변수는 Secrets and variables -> actions에
workflow에 사용될 변수들은 Secrets and variables -> Dependabot에 넣어주자.

profile
개발 블로그보단 개발 일기 입...껄요?

0개의 댓글