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 environmentYAML workflow label
Windows Server 2019windows-latest
Ubuntu 18.04ubuntu-latest or ubuntu-18.04
Ubuntu 16.04ubuntu-16.04
macOS Catalina 10.15macos-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 ${{ matrix.node_version }} and ${{ matrix.os }}
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        node_version: ['8', '10', '12']
        os: [ubuntu-latest, windows-latest, macOS-latest]
 
    steps:
    - uses: actions/checkout@v1
    - name: Use Node.js ${{ matrix.node_version }}
      uses: actions/setup-node@v1
      with:
        node-version: ${{ matrix.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: # ${{secrets.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

Reference