이번 주말에 집 서버에 있던 자동화 로직 중 일부를 github action으로 이동하는 작업을 진행했습니다. 어차피 git pro를 사용하고 있어서, 월 3000분의 private repo에서 사용할 수 있는 github action의 시간이 있기도하고, 아무래도 클라우드 환경이다보니, 피씨꺼짐 등으로 인해 cron이 동작하지 않을 가능성을 줄이기 위해서 이동을 결심했죠.
(점점 탈 Jenkins를 하는 것 같은 느낌이네요..😁)
Github action의 event는 각 Job을 수행 시키기 위한 구동 조건을 의미합니다. 대표적으로 push 시
, pull 시
, cron을 통해 주기적
등이 있죠.
이러한 github action을 만들고 테스트를 하기 위해선 push으로 event를 지정하면 되긴하지만, 때로는 수동으로 테스트가 필요한 경우가 있습니다. (개발 목적이던, 수동 github actiond 만들 목적이던)
# Triggers the workflow on push or pull request events
on: [push, pull_request]
자 그럼 manual 테스트는 어떻게 할까요?
조금 찾아보다보니 wofkflow_dispatch라는게 있고, 이는 POST Request를 이용해 Event를 발생시킬 수 있는 event occurs 입니다. 이를 이용하면 git action 탭 내 manual 버튼을 만들 수 있고, 클릭 시 지정한 pus
h, 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와 비슷하죠.)
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가 동작합니다.
사실 github action을 코드 테스트 정도의 목적으로만 가볍게만 사용하고 있었는데, 막상 사용해보니 Jenkins 보다 더 편리하게 사용할 수 있는 부분이 많았습니다. (마켓에 있는 다른 action을 끌어쓰는 부분은 진짜 편리하네요)
일해라 올라프!
보안 테스팅 관련하여 github action으로 자동화를 계획중인 부분이 있는데, 잘 마무리되면 게시글로 공유하도록 하겠습니다 😎
https://docs.github.com/en/free-pro-team@latest/actions/reference/events-that-trigger-workflows https://github.blog/changelog/2020-07-06-github-actions-manual-triggers-with-workflow_dispatch/