workflow_dispatch를 이용한 github action 수동 트리거

이번 주말에 집 서버에 있던 자동화 로직 중 일부를 github action으로 이동하는 작업을 진행했습니다. 어차피 git pro를 사용하고 있어서, 월 3000분의 private repo에서 사용할 수 있는 github action의 시간이 있기도하고, 아무래도 클라우드 환경이다보니, 피씨꺼짐 등으로 인해 cron이 동작하지 않을 가능성을 줄이기 위해서 이동을 결심했죠.

(점점 탈 Jenkins를 하는 것 같은 느낌이네요..😁)

Github action event

Github action의 event는 각 Job을 수행 시키기 위한 구동 조건을 의미합니다. 대표적으로 push, pull_request, cron을 통해 주기적 등이 있죠.

이러한 github action을 만들고 테스트를 하기 위해선 push으로 event를 지정하면 되긴하지만, 때로는 수동으로 테스트가 필요한 경우가 있습니다. (개발 목적이던, 수동 github actiond 만들 목적이던)

# Triggers the workflow on push or pull request events
on: [push, pull_request]

자 그럼 manual 테스트는 어떻게 할까요?

What is workflow_dispatch

조금 찾아보다보니 wofkflow_dispatch라는게 있고, 이는 POST Request를 이용해 Event를 발생시킬 수 있는 event occurs 입니다. 이를 이용하면 git action 탭 내 manual 버튼을 만들 수 있고, 클릭 시 지정한 push, pull_request와 같이 특정 상황에서 트리거되던 workflow를 임의로 동작시킬 수 있습니다.

on:
  workflow_dispatch:
    inputs:
      logLevel:
        description: 'Log level'     
        required: true
        default: 'warning'
      tags:
        description: 'Test scenario tags'

push, pull_request와 비슷하게 on 아래에 명시해주며, 내부 값 inputs로 메뉴얼 테스트 시 사용할 값을 받을 수 있습니다. (마지 Jenkins의 build with parameter와 비슷하죠.)

My case

name: Olaf

on:
   schedule:
     - cron: '55 22 * * *' # AM 07:55, South Korea!
   workflow_dispatch:
      inputs:
         logLevel:
            description: 'Log level'     
            required: true
            default: 'warning'
         tags:
            description: 'Test scenario tags'

jobs:
  build:
    runs-on: ubuntu-latest
    ... snip ...

생성 시 git action 탭 내 workflow에 버튼이 생깁니다.

클릭 시 바로 workflow가 동작합니다.

Conclusion

사실 github action을 코드 테스트 정도의 목적으로만 가볍게만 사용하고 있었는데, 막상 사용해보니 Jenkins 보다 더 편리하게 사용할 수 있는 부분이 많았습니다. (마켓에 있는 다른 action을 끌어쓰는 부분은 진짜 편리하네요)

일해라 올라프!

보안 테스팅 관련하여 github action으로 자동화를 계획중인 부분이 있는데, 잘 마무리되면 게시글로 공유하도록 하겠습니다 😎

References