CircleCiとbitbucketの連携とEC2(AmazonLinux2)にSSH接続してデプロイする手順

[Sponsored Links]

デプロイツールに今回CircleCiを導入することになります。

もともとbitbucket⇒EC2の連携はSSHの認証で行っている状態で、デプロイ用のスクリプトdeploy.shを実行してデプロイを行っていた。今回はEC2上のこのスクリプトを自動で実行してデプロイとする。gitで管理しているプロジェクトのdevelopブランチへPUSHされたことをトリガーに、EC2でのデプロイを自動化して実行するという流れ。

deploy.sh…内容は、Rubyのプロジェクトなのでデプロイに必要な「最新のソースを取得⇒asset:precompile実行⇒nginx再起動」のような一連の流れを行うスクリプト。

CircleCIとbitbucketの連携

1. Set Up Project

CircleCIにbitbucketアカウントでログインし、プロジェクトの「Set Up Project」

Alt text

2. .circleci/config.ymlファイルの追加

プロジェクトのホーム直下に、CircleCI用の設定ファイルを設置してPUSHする。
config.ymlの中身は下記の内容で。テストは簡略化しているので、別途適宜修正。

今回はdevelopブランチにPUSHされることをトリガーにした設定をします。

version: 2
jobs:
build:
machine:
image: circleci/classic:edge
steps:
- checkout
- run:
name: Echo Test
command: echo "CircleCI Test"
# deploy
deploy:
machine:
image: circleci/classic:edge
steps:
- checkout
# 秘密鍵を呼び出す
- add_ssh_keys:
# 環境変数を使って SSH
- run: ssh ${USER_NAME}@${HOST_NAME} 'cd && ./deploy.sh'
workflows:
version: 2
build_and_deploy:
jobs:
- build
- deploy:
requires:
# 先に build ジョブを実行
- build
# develop ブランチに push された場合のみ deploy
filters:
branches:
only: develop

3. 環境変数の追加

CircleCiの「Environment Variables」から
{USER_NAME}{HOST_NAME}に該当の値を登録します。

Alt text

CircleCIとEC2の連携

今回CircleCi⇒EC2にログインしてデプロイのため、SSHのKEYを生成し連携しておく。

1. 秘密鍵生成

EC2で秘密鍵を作成します。(circleci-keycircleci-key.pub

$ ssh-keygen -m pem

場所は、ユーザーのホームディレクトリの.sshフォルダ直下に設置。
既存の鍵を上書きしないように今回はファイル名をcircleci-keyにして新規作成する。

2. authorized_keysへ追加

$ cat ~/.ssh/circleci-key.pub >> authorized_keys

3. CircleCIへ鍵の追加

CircleCiの「SSH Keys」Additional SSH Keysで「circleci-keyの内容」と「該当ホスト名」を登録する。

Alt text

動作確認

developブランチにPUSHしてみる。
CircleCiのPipelinesで何やらSUCCESSが確認できればOK

Alt text

参考サイト

  • このエントリーをはてなブックマークに追加
[Sponsored Links]