LINEで送る
Pocket

以下のように、今までCircleCIECS/Fargateでのステージングデプロイfilters branchesdevelopブランチに対してプルリクマージを出していました。それに本番反映するためにdevelopブランチをmasterブランチに対してプルリクマージを出すというgit flowで運用していました。(なかなかの手間が…)

※今回はWordpress

[CircleCI][AWS][WordPress]OrbsをつかってECR/ECS/Fargateにデプロイする

これにより、気楽にステージング環境にデプロイすることができず、開発スピードも遅くなり、逆にしくじって元に戻すのが大変ということもあるので、今回はgithub flowな方法でAPI経由でデプロイを試してみました。


■API Reference

https://circleci.com/docs/ja/2.0/api-intro/

https://circleci.com/docs/api/v2/#circleci-api

こんな感じでローカルからcurlAPIを指定すればジョブに対してデプロイができます。もちろんオプションでブランチ名を指定することも可能!これができれば以下のような構成になる。

  • API経由でのデプロイ構成図

masterマージはそのまま本番反映したいのでそのままで良き。ステージングはfilters branchesの指定がなくなります。これによってpushしたブランチ名を指定してサクッとステージング環境へデプロイが可能になるわけですね(シェルスクリプト)。実際コードを見てみましょう。


■CircleCI

https://circleci.com/docs/ja/2.0/pipeline-parameters/

https://circleci.com/docs/ja/2.0/configuration-reference/#when-%E3%82%B9%E3%83%86%E3%83%83%E3%83%97-version-21-%E3%81%8C%E5%BF%85%E9%A0%88

  • Make Personal API Tokens

まずはCircleCIのダッシュボードから左下のプロフィール画面をクリックすると以下のようにPersonal API Tokensがあるので発行しましょう。

  • config.yml

  • stg-deploy.sh

6行目に新しく parameters を追加しましたが、特定のパラメーターの値でパイプラインをトリガーすることができます。なのでWorkflowを任意で実行するためのフラグとして、今回はdeploy_wordpress_stgと名付けました。

51行目からfilters branchesを削除して、 pipeline.parameters という変数を指定することで、curlで指定したtrueが代入されます。これによってステージングへのデプロイは特定のブランチに対していくらpushしても、デプロイされないようにwhenで条件分岐をしています。

stg-deploy.shはブランチ名である引数を指定して発動するように作ってみました。


■やってみる

今回はtest-deployというブランチ名を引数指定して叩いてみましたが!見事にデプロイされました!masterマージもちゃんと本番反映されていたのでOK。

ちなみにブランチ名をmasterにすると本番とステージングがmasterブランチでデプロイされます。


■まとめ

素晴らしい!これで気楽にステージ環境へデプロイすることができました。意外と簡単だった。curlで結構ハマったけど。

というわけで、次はSlackのワークフローで実行できるように実装してみよう!!これは作り込みだな。

LINEで送る
Pocket

カテゴリー: CircleCI

adachin

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

0件のコメント

コメントを残す

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