ドキュメント
circleci.com
Start Building for Free

デプロイ設定

3 weeks ago1 min read
Cloud
Server v3.x
Server v2.x
On This Page

Deployment at CircleCI is just the same as any other job configuration. You create a job and configure it to deploy to virtually any target. このドキュメントでは、導入プロセスの概要に加えて、ベストプラクティスや最適化戦略を紹介しています。

概要

ソフトウェア・アプリケーションの開発およびテストが完了したら、デプロイし、対象ユーザーが利用できるようにする必要があります。 CircleCIは、ほぼすべてのターゲットにデプロイすることができ、QA/テスト、機能管理、およびブルーグリーンデプロイやカナリアデプロイなどのデプロイ戦略を行うための他のサービスとの統合を簡単に設定することができます。 完全に自動化されたプロセスが必要な場合も、手動での承認要素が必要な場合も、お客様の要件に合わせて迅速かつ簡単に設定をカスタマイズすることができます。

デプロイ: 基礎編

  • Deployment Job: To deploy your application, add a job to your .circleci/config.yml file and configure the job to run the steps you require. The deployment examples document covers example config for many common deployment targets.

  • デプロイ パラメーター: デプロイするための手順を実行するには、環境変数やSSHキーの追加が必要な場合があります。 環境変数は、CircleCI UIを使ってプロジェクト自体に追加したり(詳しい手順は以下のリンクを参照)、設定で定義することができます。 環境変数を 設定で 定義する例は、このページの下方にある、Heroku Orb を使用しないデプロイジョブの設定で紹介しています。

  • Manual Approval: If your deployment strategy requires a manual approval step, you can include a hold/approve job within your workflow. それにより、CircleCI UIのワークフローマップから手動承認ボタンが利用できるようになります。

Orb を使用したデプロイメントの簡素化

At CircleCI we offer packages of reusable configuration, known as orbs. Orb は多くの一般的なデプロイ ターゲットに対応しており、設定の簡素化と効率化に役立ちます。 Orb レジストリで利用可能なすべての Orb をご覧いただけます。 シンプルなデプロイ パイプラインであれば、Orbを使うことで最小限の設定のみで必要な結果を得ることができます。

例として、 AWS CodeDeploy Orb を考えてみましょう。 この Orb にはあらかじめ デプロイ ジョブが設定されており、Orb スタンザを追加してオーブが起動したら、 aws-code-deploy/deploy の一行で設定に含めることができます。 以下の例ように、簡単にデプロイすることができます。

version: 2.1

orbs:
  aws-code-deploy: circleci/aws-code-deploy@0.0.11

workflows:
  deploy_application:
    jobs:
      - aws-code-deploy/deploy
          application-name: myApplication
          deployment-group: myDeploymentGroup
          service-role-arn: myDeploymentGroupRoleARN
          bundle-bucket: myApplicationS3Bucket
          bundle-key: myS3BucketKey

Orb は内部で、 aws-code-deploy/deploy ジョブの宣言により設定された指定パラメーターを使用して、アプリケーションの作成、バンドル、デプロイを行います。

Herokuを使った簡単な例

ここでは、Rails アプリケーションを Heroku にデプロイする簡単な例を紹介します。

Heroku Orb の使用

以下は、設定を簡素化にするために Heroku Orb を使用したHeroku デプロイの例です。 この設定では、https://circleci.com/docs/2.0/workflows/[ワークフロー]を使用して、sequential-branch-filter ブランチがチェック アウトされ build ジョブが実行された場合にのみデプロイされるようにしています。

Orb レジストリdeploy-via-git コマンドのソースを見ると、この簡潔な設定には以下の環境変数: $HEROKU_APP_NAME$HEROKU_API_KEY の設定が必要であることが分かります。 To take advantage of secrets masking, it is best practice to set environment variables at the project level or within a context.

version: 2.1

orbs:
  heroku: circleci/heroku@0.0.10 # Heroku orbを起動する

workflows:
  heroku_deploy:
    jobs:
      - build
      - heroku/deploy-via-git: # 事前に設定されたジョブ deploy-via-git を使う
          requires:
            - build
          filters:
            branches:
              only: sequential-branch-filter
jobs:
  build:
    docker:
      - image: cimg/ruby:2.4-node
        auth:
          username: mydockerhub-user
          password: $DOCKERHUB_PASSWORD  # コンテキスト/プロジェクト UI 環境変数の参照
      - image: cimg/postgres:9.6
        auth:
          username: mydockerhub-user
          password: $DOCKERHUB_PASSWORD  # コンテキスト/プロジェクト UI 環境変数の参照
    working_directory: ~/circleci-demo-workflows
    steps:
      - checkout
      # インストールの依存関係をバンドル
      - run: bundle install --path vendor/bundle
      # データベースの設定
      - run: bundle exec rake db:create db:schema:load
      - run:
          name: Run tests
          command: rake

2.0 の設定

このバージョンでは、同じパイプラインを Orb を使わずに表示します。 アプリケーション全体は、https://github.com/CircleCI-Public/circleci-demo-workflows/tree/sequential-branch-filter[CircleCI デモ ワークフロー リポジトリの連続ジョブのブランチ]で確認できます。

この設定では、https://circleci.com/docs/2.0/workflows/[ワークフロー]を使用して、sequential-branch-filter ブランチがチェック アウトされ build ジョブが実行された場合にのみデプロイされるようにしています。 デプロイ ジョブで過去のジョブからの出力を使用する場合は、https://circleci.com/docs/2.0/workflows/#using-workspaces-to-share-data-among-jobs[ワークスペースを使用]することでそのデータを共有できます。 条件付きデプロイについては、「https://circleci.com/docs/2.0/workflows/#using-contexts-and-filtering-in-your-workflows[ワークフローにおけるコンテキストとフィルターの使用]」を参照してください。

version: 2.0

jobs:
  build:
    docker:
      - image: cimg/ruby:2.4-node # primary container - where job steps are run
        auth:
          username: mydockerhub-user
          password: $DOCKERHUB_PASSWORD  # context / project UI env-var reference
      - image: cimg/postgres:9.6 # services container
        auth:
          username: mydockerhub-user
          password: $DOCKERHUB_PASSWORD  # context / project UI env-var reference
    working_directory: ~/circleci-demo-workflows
    steps:
      - checkout
      # Bundle install dependencies
      - run: bundle install --path vendor/bundle

      # Database setup
      - run: bundle exec rake db:create db:schema:load

      - run:
          name: Run tests
          command: rake

  deploy:
    machine:
        enabled: true
    working_directory: ~/circleci-demo-workflows
    environment:
      HEROKU_APP: "sleepy-refuge-55486" # define env var $HEROKU_APP
    steps:
      - checkout
      - run:
          name: Setup Heroku
          command: bash .circleci/setup-heroku.sh # run a script to set up Heroku

      - run:
          command: |
            git push heroku sequential-branch-filter:main
            heroku run rake db:migrate
            sleep 5 # sleep for 5 seconds to wait for dynos
            heroku restart

workflows:
  version: 2
  build-and-deploy:
    jobs:
      - build
      - deploy:
          requires:
            - build
          filters:
            branches:
              only: sequential-branch-filter

次のステップ

Look through the deployment examples document, which provides config examples for some popular deployment targets. お客様のデプロイ ターゲットの設定を簡素化するための Orb があるかどうかを Orb レジストリ でご確認ください。 If not consider authoring one!


ドキュメントの改善にご協力ください

このガイドは、CircleCI の他のドキュメントと同様にオープンソースであり、 GitHub でご利用いただけます。 ご協力いただき、ありがとうございます。

サポートが必要ですか

CircleCI のサポートエンジニアによる、サービスに関する問題、請求およびアカウントについての質問への対応、設定の構築に関する問題解決のサポートを行っています。 サポートチケットを送信して、CircleCI のサポートエンジニアにお問い合わせください。日本語でお問い合わせいただけます。

または、 サポートサイト から、サポート記事やコミュニティフォーラム、トレーニングリソースをご覧いただけます。