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/|git@github.com:|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鍵の登録とか済ませてくれる
- AWSとGitHubリポジトリに
- remote urlをgit@github.....に変換する必要がある
- git remote set-url してやる必要がある
というのが煩雑でした。これを考えると TravisCI や CircleCI, GitHub Actions にしたらもっと簡素にできたなと。
今回ひとつテンプレとして buildspec.yml を作れたので、他のリポジトリにも展開したらいいのですが、
GitHub にSSHアクセス必要で、 GitHub Personal access token も必要なら、CodeBuild以外の選択肢を検討してからでよい
という理解を得ました。まる。