正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

Dplをデプロイツールとして使用する

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

Dpl(D-P-Lのように発音)は、継続的デプロイのために作成されたデプロイツールであり、Travis CIによって開発および使用されていますが、GitLab CI/CDでも使用できます。

Dplは、サポートされているプロバイダーのいずれかにデプロイするために使用できます。

前提条件

Dplを使用するには、gemをインストールする機能とともに、少なくともRuby 1.9.3が必要です。

基本的な使い方

Dplは、次の機能を備えた任意のマシンにインストールできます:

gem install dpl

これにより、CIサーバーでテストするのではなく、ローカルターミナルからすべてのコマンドをテストできます。

Rubyがインストールされていない場合は、Debian互換のLinuxで次のように実行できます:

apt-get update
apt-get install ruby-dev

Dplは、次のような多数のサービスをサポートしています: Heroku、Cloud Foundry、/S3など。これを使用するには、プロバイダーと、プロバイダーに必要な追加のパラメータを定義します。

たとえば、アプリケーションをHerokuにデプロイするために使用する場合は、プロバイダーとしてherokuを指定し、api_keyappを指定する必要があります。考えられるすべてのパラメータは、Heroku APIセクションにあります。

staging:
  stage: deploy
  script:
    - gem install dpl
    - dpl heroku api --app=my-app-staging --api_key=$HEROKU_STAGING_API_KEY
  environment: staging

前の例では、my-app-stagingをセキュアな変数であるHEROKU_STAGING_API_KEYに格納されているAPIキーを使用してHerokuサーバーにデプロイするためにDplを使用します。

別のプロバイダーを使用するには、サポートされているプロバイダーの長いリストをご覧ください。

DockerでのDplの使用

ほとんどの場合、サーバーのシェルコマンドを使用するようにGitLab Runnerを設定しました。つまり、すべてのコマンドはローカルユーザー(たとえば、gitlab_runnerまたはgitlab_ci_multi_runner)のコンテキストで実行されます。また、ほとんどの場合、DockerコンテナにRubyランタイムがインストールされていないことを意味します。インストールする必要があります:

staging:
  stage: deploy
  script:
    - apt-get update -yq
    - apt-get install -y ruby-dev
    - gem install dpl
    - dpl heroku api --app=my-app-staging --api_key=$HEROKU_STAGING_API_KEY
  rules:
    - if: $CI_COMMIT_BRANCH == "main"
  environment: staging

最初の行apt-get update -yqは使用可能なパッケージのリストを更新し、2番目のapt-get install -y ruby-devはシステムのRubyランタイムをインストールします。前の例は、すべてのDebian互換システムで有効です。

ステージング環境と本番環境での使用

ステージング環境(開発)と本番環境を持つことは、開発ワークフローでは非常に一般的です

次の例を考えてみましょう。mainブランチをstagingに、すべてのタグ付けをproduction環境にデプロイするとします。その設定の最終的な.gitlab-ci.ymlは次のようになります:

staging:
  stage: deploy
  script:
    - gem install dpl
    - dpl heroku api --app=my-app-staging --api_key=$HEROKU_STAGING_API_KEY
  rules:
    - if: $CI_COMMIT_BRANCH == "main"
  environment: staging

production:
  stage: deploy
  script:
    - gem install dpl
    - dpl heroku api --app=my-app-production --api_key=$HEROKU_PRODUCTION_API_KEY
  rules:
    - if: $CI_COMMIT_TAG
  environment: production

異なるイベントで実行される2つのデプロイジョブを作成しました:

  • staging: mainブランチにプッシュされたすべてのコミットに対して実行されます
  • production: プッシュされたすべてのタグに対して実行

2つのセキュアな変数も使用します:

  • HEROKU_STAGING_API_KEY: ステージングアプリをデプロイするために使用されるHeroku APIキー
  • HEROKU_PRODUCTION_API_KEY: 本番環境アプリをデプロイするために使用されるHeroku APIキー

APIキーの保存

APIキーをセキュアな変数として保存するには:

  1. 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
  2. 設定 > CI/CDを選択します。
  3. 変数を展開します。

プロジェクト設定で定義された変数は、ビルドスクリプトとともにRunnerに送信されます。セキュアな変数は、リポジトリの外部に保存されます。プロジェクトの.gitlab-ci.ymlファイルにシークレットを保存しないでください。シークレットの値がジョブログに表示されないようにすることも重要です。

$(非Windows Runnerの場合)または%(Windows Batch Runnerの場合)を使用して、追加された変数にプレフィックスを付けてアクセスします:

  • $VARIABLE: 非Windows Runner用
  • %VARIABLE%: Windows Batch Runner用

CI/CD変数の詳細をご覧ください。