포스트

Github Actions - 시작하기

Github Actions script 작성 위치

Repository 루트 위치에 .github/workflows 디렉터리를 생성하고 이 디렉터리에 실행 될 스크립트 파일을 yml 문서로 작성하여 위치시켜야 한다.

파일 이름은 어떤 이름이 와도 상관 없으며 파일 형식으로 yml과 파일이 위치 할 디렉터리만 /.github/workflows로 지켜주면 된다.

그리고 yml 파일은 .yml.yaml 두 가지 확장자를 사용할 수 있으므로 깃헙 액션 스크립트를 작성 할 때도 두 가지 확장자를 모두 사용 할 수 있다.


기본 구조

스크립트 구조를 간단하게 살펴본다면 다음과 같이 작성해볼 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# name 값은 Actions 탭에서 보여지는 workflow 이름이다. 생략 가능하며 생략하면 파일 이름으로 노출된다.
name: GitHub Actions Demo 

# 트리거 설정. 아래의 경우 main branch에 무언가 push 되면 workflow가 실행된다.
on:
  push:
    branches:
      - main

# 환경변수 정의. 다음과 같이 최상위 위치에서 선언된 값은 해당 workflow의 모든 jobs에서 함께 사용할 수 있게 된다. (= global 환경변수 설정)
# `jobs.<job_id>.env` 위치에서 정의할 수도 있고 `jobs.<job_id>.steps[*].env` 위치에서 정의할 수도 있다.  
env:
  DAY_OF_WEEK: Monday
  
# 실행할 작업 작성
jobs:
  
  # job id. 원하는 값으로 작성!
  Explore-GitHub-Actions:
  
    # job이 실행 될 OS 
    runs-on: ubuntu-latest
    
    # 환경변수 정의. 다음과 같이 특정 job의  최상위 위치에서 선언된 값은 해당 job의 모든 step에서 함께 사용할 수 있게 된다.
    env:
      Greeting: Hello
      
    # job에서 실행 될 작업을 순서대로 나열
    steps:
    
      # 실행 될 OS에 맞추어 실행 해야 할 코드를 run 값으로 작성
      # 이곳에 작성 된 env 값은 해당 step에서만 사용할 수 있는 환경 변수가 된다.
      # step에 if 문이 있다면 if 조건이 true인 경우에만 해당 step이 실행된다.
      - name: 웰컴 메세지 🖐️
        if: ${{ env.First_Name == 'zhyun' }}  
        env:
          First_Name: zhyun
        run: echo "$Greeting $First_Name. Today is $DAY_OF_WEEK!"

      # repository에 입력해놓은 secret 값 사용하기 = secrets 컨텍스트 사용하기
      - run: echo "💡 '${{ secrets.example }}' is Secret value"
      
      # github 컨텍스트 사용 예시
      - run: echo "🎉 The job was automatically triggered by a ${{ github.event_name }} event."
      
      # runner 컨텍스트 사용 예시
      - run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by GitHub!"
      
      # github 컨텍스트 사용 예시
      - run: echo "🔎 The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}."
      
      # name 필드에는 step 이름을 작성. optional 필드이다
      # uses 필드는 라이브러리 정보를 입력한다. uses: 만든이/라이브러리이름@v버전
      - name: Check out repository code
        uses: actions/checkout@v4
                  
      - run: echo "💡 The ${{ github.repository }} repository has been cloned to the runner."
      
      - run: echo "🖥️ The workflow is now ready to test your code on the runner."
      
      # run 코드가 여러줄인 경우 | 문자를 run 키워드 라인에 작성해준 후 바로 아래 줄에서부터 코드를 작성
      - name: List files in the repository
        run: |
          ls ${{ github.workspace }}
          
      # job 컨텍스트 사용 예시
      - run: echo "🍏 This job's status is ${{ job.status }}."

$First_name 과 ${{ env.First_name }}

  • $First_name은 쉘 스크립트에서 환경 변수를 참조
  • ${{ env.First_name }}은 github actions에서 runtime 시 해석

$변수명 구문은 쉘 스크립트 문법이고 ${{ }} 구문은 github actions 워크플로 엔진이 인식하는 문법이다.


github actions 라이브러리 링크

Github Marketplace에서 다양한 github actions 라이브러리를 검색할 수 있다.

마켓플레이스에 게시 된 라이브러리를 눌러보면 사용 방법이 자세히 나와있다!


혹시 언젠가 나도 마켓플레이스에 올려볼 기회가 생길까 싶어서 남겨보는 참고 링크: Github Marketplace에 게시하는 방법


Github Actions Documents
https://docs.github.com/ko/actions/quickstart




참고한 사이트

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.