Tips: CodeBuildでGitHubのPRへコメントを行う


これは何

記事投稿イベント「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