Go言語とCI/CDツール連携ガイド!GitHub Actions・CircleCIを使った自動ビルドとテスト
生徒
「先生、Go言語のプロジェクトで、毎回手動でビルドやテストを実行するのは大変です。自動化できませんか?」
先生
「もちろんです。GitHub ActionsやCircleCIなどのCI/CDツールを使うと、自動でビルドやテストを行えます。」
生徒
「CI/CDツールって、初心者でも使えますか?」
先生
「基本的な設定ファイルを作るだけで使えます。順番に解説していきますね。」
1. CI/CDとは?
CI/CDとは、ソフトウェア開発でよく使われる自動化の仕組みです。CIは「Continuous Integration(継続的インテグレーション)」で、コードを統合するたびに自動でビルドやテストを実行します。CDは「Continuous Deployment(継続的デプロイ)」で、自動で本番環境やステージング環境にリリースできる仕組みです。
Go言語でも、このCI/CDを使うことで、人為的なミスを減らし、効率的に開発を進められます。
2. GitHub ActionsでGoを自動ビルドする方法
GitHub Actionsでは、リポジトリに.github/workflowsフォルダを作り、YAML形式の設定ファイルを置くことで自動化できます。
name: Go CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: '1.21'
- name: Build
run: go build -v ./...
- name: Test
run: go test -v ./...
この設定では、mainブランチにプッシュやプルリクエストがあると、自動でGoのビルドとテストが実行されます。
3. CircleCIでGoを自動ビルドする方法
CircleCIでも同様に、自動ビルド・テストの設定が可能です。リポジトリ直下に.circleci/config.ymlを作ります。
version: 2.1
jobs:
build:
docker:
- image: circleci/golang:1.21
steps:
- checkout
- run:
name: Install Dependencies
command: go mod tidy
- run:
name: Build
command: go build -v ./...
- run:
name: Test
command: go test -v ./...
workflows:
version: 2
build_and_test:
jobs:
- build
CircleCIではDockerイメージを使って環境を用意し、自動で依存関係の整理、ビルド、テストを行います。
4. 依存関係とビルドキャッシュの活用
CI/CDツールでは、go mod tidyで不要な依存関係を整理し、キャッシュを使うことでビルド時間を短縮できます。GitHub Actionsでは、actions/cacheを使い、CircleCIでもsave_cacheとrestore_cacheを使います。
こうすることで、毎回全ての依存関係をダウンロードせずに済み、CIの実行速度が大幅に向上します。
5. 初心者向けポイント
- まずは簡単なビルドとテストだけを自動化してみる
- CI/CDツールのログでエラー内容を確認して修正する
- ビルド環境(GoのバージョンやOS)を明示することで、環境依存のトラブルを防ぐ
- 段階的にデプロイまで自動化するステップを追加していく
初心者でも、まずはGitHub ActionsやCircleCIでビルドとテストを自動化するところから始めると、効率的にGoプロジェクトを管理できます。
6. 実践例の流れ
CI/CDツールを使ったGoプロジェクトの流れは次の通りです。
- リポジトリにコードをプッシュ
- GitHub ActionsやCircleCIが自動でビルドを実行
- 依存関係を整理(go mod tidy)
- ビルドとテストを実行
- 必要に応じてデプロイや通知を自動化
この自動化によって、手作業によるミスを減らし、開発スピードを上げることができます。