最初に
みなさん、こんにちは!
この記事では、GitHub Actionsを使ってGoの自動化テストを案件で挑戦した事例を紹介します。エンジニアとして自動化テストはとても重要なスキルだと思うのでより良い完全等があればコメントいただければ幸いです。
必要な準備(チュートリアル)
まず最初に、あなたのプロジェクトにgo.mod
ファイルがあることを確認してください。それでは、早速始めましょう!
ステップ1: GitHubリポジトリの作成
リポジトリを作成する: GitHubで新しいリポジトリを作成しましょう。名前は何でもOKです。ここでは例としてgo-automation
リポジトリを使います。
ステップ2: go.ymlファイルの作成
プロジェクトのルートディレクトリに.github/workflows
ディレクトリを作成し、その中にgo.yml
ファイルを作成します。このgo.yml
ファイルがGitHub Actionsのワークフローを定義します。
name: Go CI
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v2
- name: Set up Go environment
uses: actions/setup-go@v2
with:
go-version: 1.18
- name: Install dependencies
run: go mod tidy
- name: Run tests
run: go test ./... -v
ステップ3: プッシュしてみる
変更をコミットする: go.ymlファイルを作成したら、それをコミットしてプッシュしましょう。
$ git add .
$ git commit -m "Add GitHub Actions for Go CI"
$ git push origin main
GitHub Actionsの確認: GitHubリポジトリのページに移動し、「Actions」タブをクリックします。新しく作成されたワークフローがトリガーされ、テストが実行されるのを確認しましょう。
結果の確認
ワークフローが正常に実行されると、テストの結果がGitHubの「Actions」タブに表示されます。すべてのテストがパスしていることを確認すればチュートリアルは完了です。
実例
your-go-project/workflows配下にtest.ymlを追加しました。
案件では
your-go-project/
├── .github/
│ └── workflows/
│ └── list.yml
├── cmd/
│ └── yourapp/
│ └── main.go
├── pkg/
│ ├── yourpackage/
│ │ ├── yourfile.go
│ └── anotherpackage/
│ └── anotherfile.go
├── go.mod
├── go.sum
└── README.md
test.yml
name: test # ワークフローの名前
on:
pull_request: # プルリクエストが作成されたときに実行
workflow_dispatch: # 手動でワークフローを実行
jobs:
test:
runs-on: ubuntu-latest # ジョブを実行する環境として最新のUbuntuを使用
steps:
- uses: actions/checkout@v3 # リポジトリのコードをチェックアウトするステップ
- name: Set up Go
uses: actions/setup-go@v4 # Go環境を設定するステップ
with:
go-version: 'go1.23.3' # 使用するGoのバージョンを指定
- name: Run tests
run: go test -v ./... # 指定されたディレクトリ以下のすべてのテストを実行
まとめ
GitHub Actionsを使ってGoの自動化テストを設定する手法をまとめました。
自動化テストで反復で行う処理を自動化して楽できるだけでなく、バグの早期発見にも繋がります。
今回はAWSに連携したりと複雑な処理は行なっていないので次回はCDについても実装していきたいと思います。