CircleCI¶
01. CircleCIの仕組み¶
アーキテクチャ¶
CIパイプライン/CDパイプライン¶
(1)
-
テストクラスを実装したうえで、新機能を設計実装する。
(2)
-
リポジトリへプッシュすると、CIツールがGituHubからブランチの状態を取得する。
(3)
-
CIツールによって、CIパイプラインが実行される。
(4)
-
CIOpsを採用している場合に、CDパイプラインも実行される。
(5)
-
結果を通知することも可能。
02. セットアップ¶
インストール¶
▼ Webhook¶
CircleCIの鍵をGitHubに登録すると、リポジトリに対するプッシュによって、CircleCIをフック (プッシュフック) できるようになる。
鍵のうちでデプロイキーを使用することが推奨である。
注意点として、デプロイキーを追加するには、GitHubアカウントにAdmin権限が必要である。
▼ デバッグの事前準備¶
デバッグでは行数がわからない仕様になっている。
そこで、workflowのjobのどこで失敗しているのかを特定するために、検証しないjobをコメントアウトしておく。
workflows:
# build以外を実行しないことにより、buildのみを検証できる。
build-test-and-deploy:
jobs:
- build
# - test1:
# requires:
# - build
# - test2:
# requires:
# - test1
# - deploy:
# requires:
# - test2
▼ バリデーション¶
ホストで、以下のコマンドを実行する。
$ circleci config validate
# 以下の文章が表示されれば問題ない。
# Config file at .circleci/config.yml is valid.
▼ 処理の展開¶
設定ファイルを実行した時の処理を展開し、ファイルに出力できる
$ circleci config process .circleci/config.yml > .circleci/process.yml
▼ ローカルテスト¶
コマンドにより、テストに必要なコンテナイメージをプルし、コンテナを作成する。
続いて、コンテナ内でCircleCIを実行する。
バージョン2.1以降では、事前に、設定ファイルの処理を展開しておく必要がある。
# バージョン2.1の設定ファイルの処理を展開する。
$ circleci config process .circleci/config.yml > .circleci/process.yml
# 専用のコンテナを作成し、展開ファイルを元にテストを実施する。
$ circleci local execute -c .circleci/process.yml --job <job名>
▼ CircleCIコンテナにSSH公開鍵認証¶
(1)
-
CircleCI用に鍵を作成しても良いが、ここではGitHubの鍵をそのまま使用することとする。
GitHubの秘密鍵の中身をコピーし、CircleCIのプロジェクト設定に登録する。
この時、他の連携サービスと区別しやすいように、ホスト名を
github
とする。
$ pbcopy < ~/.ssh/github/<秘密鍵名>
(3)
-
CircleCIの
Enable SSH
ステップに表示されたssh
コマンドをコピーし、CircleCIコンテナにSSH公開鍵認証を実行する。
$ <CircleCIから提示されたコマンドをコピペ> -i ~/.ssh/github/<秘密鍵名>
▼ Test Insights¶
各テストの性能や成功失敗率を確認できる。
▼ SSHキー¶
SSHキーを作成する必要がある。
鍵名 | 説明 |
---|---|
デプロイキー | CircleCIコンテナがプロジェクトのGitHubリポジトリに接続するために必要である (例:CIOps) 。GitHubのリポジトリ設定にあるデプロイキーが、自動的に作成される。 |
ユーザーキー | CircleCIコンテナがプロジェクト以外のGitHubリポジトリに接続するために必要である (例:GitOps) 。GitHubのアカウント設定にあるSSHキーが、自動的に作成される。 |