7.5 CI(継続的インテグレーション)を導入する

CI(Continuous Integration)とは開発時にビルドやテストを自動で実行するプラクティスです。一般的に開発者がコードを修正してGitHubなどのバージョン管理システムにマージするのをトリガーとして実行されます。CIを実施することで開発者が修正した変更に対して、テストが失敗していないか、ビルドが壊れていないかなど、素早いフィードバックを得られます。LinterをCI環境で実行するといったプラクティスも有効です。MakefileのタスクをCI環境で実行するのもよくある方法です。

CIを行う方法としてGitHub ActionsやCircleCIといったSaaSサービスを利用する方法、あるいはJenkinsなどを使って自前でCIサーバーを構築する方法があります。本節ではGitHub ActionsとCircleCIでCIを行う方法について簡単に紹介します。

7.5.1 GitHub Actions

GitHub Actionsを使ってCIを動かせます。 .github/workflows 配下に適当なYAMLファイルを格納するだけで動作します。GitHubで公開されているGo製のOSSではGitHub Actionsが使われるケースが多いようです。以下はGitHub Actionsで golangci/golangci-lint によるLintとユニットテストを実行する設定例です。

リスト7-13: ci.yaml
name: ci
on:
  push:
    branches:
      - "**"
  pull_request: {}
jobs:
  test:
    runs-on: ubuntu-latest

    steps: