これは何
記事投稿イベント「3000文字Tips」の参加記事です。
CodeBuildについて
CodeBuildとは、AWSで使えるCI/CDサービスです。
詳しくは↓の記事などが参考になると思います。
CodeBuildの準備
まずはCodeBuildとGitHubを以下の記事を参考に連携してください。
CIの発火イベントはPULL_REQUEST_UPDATED
を設定してください。
コメントを行うためのスクリプトを用意する
GitHubのPRへコメントを行うためのスクリプトを用意します。
今回はRubyで書いていますが、GitHubのAPIが叩ければなんでも大丈夫です。
ci.rb
require 'net/http'
require 'uri'
require 'json'
trigger_data = ENV['CODEBUILD_WEBHOOK_TRIGGER'].split('/')
uri = URI.parse("https://api.github.com/repos/#{'ユーザー名'}/#{'リポジトリ名'}/issues/#{trigger_data[1]}/comments")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
params = {
body: <<~EOS
#{'コメントしたい内容'}
EOS
}
headers = {
"Accept" => "application/vnd.github.v3+json",
"Authorization" => "token #{'GITHUBアクセストークン'}"
}
response = http.post(uri.path, params.to_json, headers)
buildspec.ymlの準備
buildspec.ymlに以下のように記述します。
buildspec.yml
phases:
build:
commands:
- |
parsed_triger=(${CODEBUILD_WEBHOOK_TRIGGER//\// })
if [ "${parsed_triger[0]}" = "pr" ]; then
ruby scripts/ci.rb
fi