CodeBuild で git-pr-release する


git-pr-release に守破離の離に行ってそうな議論をtwitterで目撃したのですが、足元を見ると git-pr-release を導入すると楽できそうな部分があったので、セットアップしてみました。

CodeBuild でやってみた

手慣れた CodeBuild にこのようなビルドプロジェクトを作りました。起動トリガーは develop にプッシュされた時。Dockerコンテナイメージは ruby:latest

version: 0.2

env:
  variables:
     GIT_PR_RELEASE_BRANCH_STAGING: "develop"
     GIT_PR_RELEASE_BRANCH_PRODUCTION: "master"
     GIT_PR_RELEASE_VERSION: "0.6.0"
     DEBUG: "error"
  parameter-store:
     GIT_PR_RELEASE_TOKEN: "github-api-token-pr-create"
     SSH_PRIV_KEY: "ssh_private_key_for_codebuild"

phases:
  install:
    commands:
      - gem install git-pr-release -v "${GIT_PR_RELEASE_VERSION}"
      - ruby -v
      - gem -v
      - git-pr-release --help
  pre_build:
    commands:
      - mkdir ~/.ssh
      - echo "${SSH_PRIV_KEY}" > ~/.ssh/id_rsa
      - |
        cat <<EOF > ~/.ssh/config
        Host *
          StrictHostKeyChecking=no
          UserKnownHostsFile=/dev/null
        EOF
      - chmod 0700 ~/.ssh
      - chmod 0600 ~/.ssh/*
      - |
        GITHUB_REMOTE_URL_GIT_PROTO=$(echo "${CODEBUILD_SOURCE_REPO_URL}" | sed -e 's|https://github.com/|[email protected]:|g')
        echo ${GITHUB_REMOTE_URL_GIT_PROTO}
        git remote set-url origin ${GITHUB_REMOTE_URL_GIT_PROTO}
      - git remote -v
  build:
    commands:
      - git-pr-release --no-fetch

作ってみて

CodeBuildは、CircleCI などと異なり、Remote URL が https になってて、git-pr-release は git な前提なので、

  • SSHの設定を仕込む必要がある
    • AWSとGitHubリポジトリに
      • TravisCIやCircleCIなら勝手にSSH鍵の登録とか済ませてくれる
  • remote urlをgit@github.....に変換する必要がある
  • git remote set-url してやる必要がある

というのが煩雑でした。これを考えると TravisCI や CircleCI, GitHub Actions にしたらもっと簡素にできたなと。

今回ひとつテンプレとして buildspec.yml を作れたので、他のリポジトリにも展開したらいいのですが、

GitHub にSSHアクセス必要で、 GitHub Personal access token も必要なら、CodeBuild以外の選択肢を検討してからでよい

という理解を得ました。まる。

参考