LINEで送る
Pocket

adachin.meという自己紹介サイトを公開しているのですが、コードはGithubで管理しており、毎回修正するたびにmasterマージして、サーバーログインしてシェルスクリプトで git clone をやっていたのですが、あまりにも面倒だし時代遅れのため、今回CircleCIを使ってmasterマージされたら自動でサーバーへSSHしてコードをデプロイするように高速で作ってみました。まずは流れ的なものを説明したいと思います。


■構成

  1. ブルリクでmasterマージする
  2. CircleCIのWorkFlowでTriggerが動く
  3. サーバーにSSHからのdeploy-me.sh(以下)が叩かれる
  4. コードがgit cloneされる

このサーバーは adachin.meblog.adachin.me の2つのサイトをバーチャルホスト(DigitalOcean)で動かしており、H2O 2.2.6 , PHP 7.2.25Ubuntu 18.04.3 で動作しています。

ちなみにWorkflowはCircleCI 2.0からJobについて実行条件や順序の依存関係などを指定できるようになりました。以下参考に。

https://circleci.com/docs/2.0/workflows/#overview

では実際に設定してみましょう。


■準備

  • Add Projects

今回対象となるリポジトリを追加します。

  • SSH Permissions

https://circleci.com/docs/2.0/add-ssh-key/

SSHするサーバの秘密鍵を登録しましょう。ハッシュ化されている fingerprints をメモります。

  • Environment Variables

https://circleci.com/docs/2.0/env-vars/#setting-an-environment-variable-in-a-project

後に必要となってくるSSHのホスト名、ポート番号、ユーザを環境変数として登録します。


■Setting .circleci/config.yml/Deploy

  • config.yml

  • deploy-me.sh

workflowsfilters の記述によって、masterブランチ以外ではデプロイのJobが実行されないようにしました。あとは実際にプルリク出してデプロイされるか確認してみましょう。

  • masterマージ

  • Deploy

おおお!デプロイされている!


■サーバー確認

差分なし!

slackにも通知してみた。

https://slack.com/apps/A0F7VRE7N-circleci


■まとめ

これでようやく手動がなくなったぜ!ハマったのは

ということなので今回のCircleCIはCIチェックというよりリリースでの使い方を紹介していきました。何でもできますので、みなさんも試してください!次はコンテナをデプロイするのにCI使いまくるので、その時にまた!

LINEで送る
Pocket

カテゴリー: CircleCI

adachin

1989年生まれのSRE。 ホスティングから大規模なアドテクなどのインフラエンジニアとして携わり、AnsibleやTerraformでのインフラコード化を推進。副業では数社サーバー保守、未経験によるエンジニアのメンターなども実施している。また、「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。現在はサービスの信頼性向上、可用性、レイテンシ、パフォーマンス、モニタリング、緊急対応、インフラコード化、リファクタリング、セキュリティ強化、新技術の検証、Docker開発環境の提供、AWSでのインフラ構築、ECS(Fargate)、Wordpressによるコーポレートサイトの修正、メンター、分析基盤の運用を担当している。

0件のコメント

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください