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
라는 워크플로우의 실행 결과를 바로 확인할 수 있다.
결과는 아래와 같다.
워크플로우 추가 작업 명시
하나의 워크플로우에서 여러 개의 작업이 동시에 또는 순차적으로 처리되도록 설정할 수가 있다.
기존 작업 아래에 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
작업도 추가로 실행된 것을 확인할 수 있다.