Profile picture

[Github Actions] 첫 워크플로우 생성해보기

JaehyoJJAng2023년 04월 11일

Github 저장소 생성

실습을 위하여 test-gh-action 이라는 레포지토리를 새로 만들고 실습을 진행하도록 하자.

워크플로우 파일 생성

워크플로우는 YAML 파일을 통해 설정해야 한다. 반드시 .github/workflows 폴더 아래에 YAML 파일이 위치해야 Github에서 워크플로우로 인식을 하도록 정해져있다.


.github/workflows 폴더를 생성하고, 그 안에 first.yml라는 이름의 YAML 파일을 하나 생성해보자.

mkdir -p .github/workflows
touch first.yml

그 다음에 YAML 파일 제일 위에 name 키를 통해서 해당 워크플로우의 이름을 설정해보자

name: My First Workflow

name 키를 생략하면 파일 경로가 워크플로우 이름으로 사용되기 때문에 반드시 설정해줘야 하는 것은 아니지만 name키를 명시하여 워크플로우에 알맞은 이름을 부여해주는 것이 일반적이다!

이유는 뭘까? 하나의 코드 저장소에는 여러 개의 워크플로우가 존재할 수 있기 때문에 워크플로우의 이름이 제대로 지정되어 있지 않으면 이 워크플로우가 뭐하는 워크플로우인지 구분이 쉽지 않기 때문이다.


워크플로우 실행 조건 설정

다음으로 필수 항목인 on키를 통해서 워크플로우가 언제 실행되야할지 설정해줘야 한다

수동으로 워크플로우를 실행할 수도 있지만 일밙넉으로 코드 저장소에서 어떤 이벤트가 발생할 때 마다 워크플로우를 자동으로 실행하도록 설정하는 경우가 대부분이지 않겠나.

가장 많이 사용되는 이벤트 중 하나인 push 이벤트를 사용해보자

name: My First Workflow
on: 
  push:
    branches:
      - main

이렇게 설정을 해주면 누군가 코드 저장소의 main 브랜치에 변경 사항을 push 하거나 , PR이 머지 될 때 마다 해당 워크플로우가 자동으로 실행된다.


워크플로우 작업 내용 명시

워크플로우에서 어떤 작업들을 수행할지는 jobs키를 통해서 설정한다.

jobs키에는 여러 개의 작업을 작업 식별자(ID)와 작업 세부 내용 간의 맵핑 형태로 표시를 한다


안녕 반갑다를 출력하는 echo라는 식별자를 가진 작업을 추가해보자

name: My First Workflow
on: 
  push:
    branches:
      - main
jobs:
  echo:
    runs-on: ubuntu-latest
    steps:
      - name: Print "안녕 반갑다"
        run: echo "안녕 반갑다"

작업 세부 내용에는 필수적으로 runs-on 키를 통해 해당 작업이 어떤 환경에서 돌아가는지, 그리고 steps키를 통해 순차적으로 수행할 작업 단계를 적어도 하나 이상은 명시해야 한다.


워크플로우 테스트

지금까지 작성한 .github/workflows/first.yml 파일을 코드 저장소에 push하면 Github는 해당 워크플로우를 자동으로 실행할 것이다.

이제 Github의 코드 저장소 화면에서 Actions 탭을 클릭하면 My First Workflow 라는 워크플로우의 실행 결과를 바로 확인할 수 있다.

결과는 아래와 같다.

image


워크플로우 추가 작업 명시

하나의 워크플로우에서 여러 개의 작업이 동시에 또는 순차적으로 처리되도록 설정할 수가 있다.

기존 작업 아래에 pwd-ls라는 작업 식별자를 갖는 새로운 작업을 추가해보자

이번에는 현재 작업 디렉토리의 경로를 출력한 후 그 경로 내 파일들을 출력해보도록 할거다.


.github/workflows/first.yml

name: My First Workflow
on: 
  push:
    branches:
      - main
jobs:
  echo:
    runs-on: ubuntu-latest
    steps:
      - name: Print "안녕 반갑다"
        run: echo "안녕 반갑다"
  pwd-ls:
    name: PWD & LS
    runs-on: ubuntu-latest
    steps:
      - name: Print working directory
        run: pwd
      - name: List files
        run: ls -alh

이번에는 name키도 사용하여 작업(job)의 이름과 각 작업 단계(step)에 이름을 부여해봤다!

필수 설정은 아니지만 name키를 넣어주니 가독성이 더 좋아진 것 같다. 복잡한 워크플로우 환경에서 사용하면 유용할듯


이제 Actions 탭에 가서 방금 실행된 워크플로우를 선택하면 echo 작업뿐 아니라 PWD & LS 작업도 추가로 실행된 것을 확인할 수 있다.

image


Loading script...