GitHub Actions はじめの一歩

GitHub Actions とは

GitHub の特定のアクションをトリガーにCI/CD的なことを実行できるサービス

  • CircleCI とか AWS Codebuild みたいのを GitHub が提供してくれるようになった

help.github.com

アクションのつくりかた

Githubのリポジトリから「Actions」を選択

いろんなActionをサジェストしてくれるけど、今回は Simple workflow を選択

f:id:kasei_san:20200304163103p:plain

すると、 .github/workflows/blank.yml にファイルが生成される

f:id:kasei_san:20200304163516p:plain

name: CI
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Run a one-line script
      run: echo Hello, world!
    - name: Run a multi-line script
      run: |
        echo Add other actions to build,
        echo test, and deploy your project.

設定ファイルの構文

公式ドキュメントを参照

help.github.com

ざっくりこんなかんじ

  • name : 名前
  • on : 発火するイベント
  • jobs : イベント発火時に実行する処理を格納するところ
  • jobs.<job_id> : イベント発火時に実行する処理。<job_id> は build
  • jobs.<job_id>.runs-on : 実行環境。windowsとかMacOSもある
  • jobs.<job_id>.steps : 実行する処理
  • jobs.<job_id>.uses : ジョブのステップの一部として実行される外部のアクション。公開リポジトリなどを参照できる。今回の場合 https://github.com/actions/checkout が実行される
  • jobs.<job_id>.name githubに表示されるステップの名前
  • jobs.<job_id>.run ステップで実行される処理。runs-on で指定したOSでコマンドラインが実行される

アクションを実行してみる

コードを commit すると早速アクションが実行される

実行結果

f:id:kasei_san:20200304164746p:plain

step単位で処理が実行されているのが分かる

感想

  • 他サービスを使わずにGitHub上でCIまでまとめて実行できるのは良い感じに思える
  • 今の会社だと、CIにAWS CodeBuildを使っているが、private VPCでビルドする必然性がなければ、GitHub Actionsに移行した方が管理がシンプルになってよいのかもしれない
  • PRとの連携も、他のサービス使うより楽そう(な気がする

ざっくりそんなかんじ