Github Actions - 간단한 워크플로우 생성해보기

지난 포스트에서 Github Actions에 대한 간단한 사용과 기능을 소개하는 시간을 가졌었는데요. 이번에는 직접 Github Actions를 사용해 워크플로우를 자동화하는 것을 해보도록 하겠습니다.

 

Start

먼저 레포지터리를 Actions를 사용하고자 하는 프로젝트를 clone 하도록 하죠.

$ git clone [Repository]

클론한 레포지터리에 아래의 디렉터리를 한 개 만들어보겠습니다.

$ mkdir -p .github/workflows

Actions를 사용하려면 먼저 Workflow를 읽을 수 있는 경로가 필요한데, 이 경로가 바로 .github 디렉터리입니다.

$ touch main.yml

그리고 main.yml 라는 이름의 파일을 한 개 만들어줍니다. 이것이 이 레포지터리에서 Maintain으로 작동하는 Workflow 중 하나입니다.

.
├── ,git
├── .github
    └── workflows
            └── main.yml
├── config
├── public
└── src

디렉터리 트리를 보면, 대충 이런 형식이다. React 프로젝트마다 조금은 다를 수 있겠지만 기본적으로 Git을 붙이게 되면 .git 폴더가 있고, Actions를 사용하기 위해서는 .github 폴더를 만들어서 Workflow 코드를 삽입하면 Actions가 동작하게 되는 구조인 것이죠.

 

Write Actions

이제 워크플로우를 정의해보도록 하겠습니다. 자동화 코드를 작성하기 위해 아래의 가이드라인을 참조하였습니다.

 

Configuring a workflow

 

Configuring a workflow - GitHub Help

Configuring a workflow You can create, view, or edit workflows for a repository if you have write or admin permissions to the repository. You can customize your workflow configuration based on the type of actions you include in your workflow. GitHub Action

help.github.com

그럼 간단한 코드를 짜보도록 하죠.

name: Practice actions

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Run a one-line script
        run: echo Testing...

name 영역에 자신의 Workflow 이름을 넣도록 합니다. 그 후 어떤 브랜치에서 이벤트가 발생했을 때 Workflow를 수행할지를 고르고, 마지막으로 어떤 작업을 어느 OS에서 수행할 것인지를 정하면 기본 워크플로우 틀이 완성됩니다.

 

워크플로우가 완성이 된 상태로 원격 저장소에 Push를 하게 되면 위와 같이 작업한 내용과 Actions의 이름이 표시가 됩니다. 응? 그런데, Actions를 자세히 보니, 빌드 환경으로 Travis CI를 사용하고 있는 것이 눈에 띄네요..

 

그러면 간단한 알고리즘을 한 개 짜보고, 해당 알고리즘이 잘 돌아가는지를 한 번 테스트해보는 Workflow를 한 번 짜보도록 하겠습니다. 언어는 C++로 한 번 짜보도록 할게요. 

 

name: Practice actions

on:
  push:
    branches:
      - master

on:
  pull_request:
    branches:
      - master

jobs:
  build:
    runs-on: ubuntu-latest
    
    steps:
      - uses: actions/checkout@v1
      - name: Run cmake for create configuration,,
        run: cmake CMakeLists.txt
      - name: Run make command,,
        run: make
      - name: Test code,,
        run: ./Multitab

이번에는 추가로 master에 push 하는 것 뿐 아닌, PR에 대해서도 적용을 해봤습니다. uses에 반드시 checkout@v1 기록을 넣어두셔야만 변경된 사항을 환경으로 가져오기 때문에 반드시 수행을 하시고, 진행하시면 됩니다.

 

 

그러면 이렇게 Action 별로 실행된 사항을 보여주게 됩니다. Travis CI를 아마 빌드 환경으로 사용하고 있는 듯하고, UI 또한 Travis CI와 매우 흡사하게 생겨서 보기 편한 점도 있네요.. 

 

Action에 이름을 넣는 기능은 굉장히 유용해보입니다. 각 테스트에 이름을 부여하여 사용한다면, 좀 더 테스트 결과를 편하게 볼 수 있다고 생각합니다.

 

다음 글에서는 Token 등의 민감한 정보, 브랜치 별 테스트, 멀티 OS 환경에서의 테스트 등을 살펴보도록 하겠습니다.

comments powered by Disqus

Tistory Comments 0