Github Action이란?
- 개발과정에서 발생하는 워크플로우를 자동화할 수 있는 도구
- 빌드 / 테스트 / 커버리지 / 배포까지 진행할 수 있다.
How to use?
.github/workflows
아래에 action이 작성된 yml 파일을 추가하면 된다.
Github의 Tab에 Action으로 확인할 수 있다.
다양한 예제가 있어 참고하기 좋다.
Event 지원
on:
# Push 될때마다 돌기
push:
branches:
- master
- release/*
# PR 조건 걸기
pull_request:
branches:
- master
# 스켸줄링도 가능
schedule:
- cron: "0 2 * * 1-5"
다양한 OS 환경 지원한다
Virtual environment | YAML workflow label |
---|---|
Windows Server 2019 | windows-latest |
Ubuntu 18.04 | ubuntu-latest or ubuntu-18.04 |
Ubuntu 16.04 | ubuntu-16.04 |
macOS Catalina 10.15 | macos-latest |
jobs:
my_job:
name: deploy to staging
runs-on: ubuntu-18.04
외부 Actions도 재사용 가능하다
- name: Setup Node
uses: actions/setup-node@v1
with:
node-version: '10.x'
변수 행렬화하여 사용 가능하다.
jobs:
test:
name: Test on node $ and $
runs-on: $
strategy:
matrix:
node_version: ['8', '10', '12']
os: [ubuntu-latest, windows-latest, macOS-latest]
steps:
- uses: actions/checkout@v1
- name: Use Node.js $
uses: actions/setup-node@v1
with:
node-version: $
- name: npm install, build and test
run: |
npm install
npm run build --if-present
npm test
Secret Key 사용 방법
Settings - Secret
에 등록하여 사용하면 된다.
coverage:
name: 'Coverage'
needs: linux
steps:
- name: Upload to Codecov.io
shell: bash
env:
CODECOV_TOKEN: # $로 사용하면 된다
run: |
bash <(curl -s https://codecov.io/bash)
Badge 생성하기
https://github.com/<OWNER>/<REPOSITORY>/workflows/<WORKFLOW_NAME>/badge.svg
- 특정 branch의 상태를 조건으로 걸 수 있다.
?branch=master
Example
Gradle로 작성된 프로젝트 빌드하기
name: Java CI
on: [push] # 조건
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Build with Gradle
run: ./gradlew build