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-devDplは、次のような多数のサービスをサポートしています: Heroku、Cloud Foundry、/S3など。これを使用するには、プロバイダーと、プロバイダーに必要な追加のパラメータを定義します。
たとえば、アプリケーションをHerokuにデプロイするために使用する場合は、プロバイダーとしてherokuを指定し、api_keyとappを指定する必要があります。考えられるすべてのパラメータは、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キーをセキュアな変数として保存するには:
- 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 設定 > CI/CDを選択します。
- 変数を展開します。
プロジェクト設定で定義された変数は、ビルドスクリプトとともにRunnerに送信されます。セキュアな変数は、リポジトリの外部に保存されます。プロジェクトの.gitlab-ci.ymlファイルにシークレットを保存しないでください。シークレットの値がジョブログに表示されないようにすることも重要です。
$(非Windows Runnerの場合)または%(Windows Batch Runnerの場合)を使用して、追加された変数にプレフィックスを付けてアクセスします:
$VARIABLE: 非Windows Runner用%VARIABLE%: Windows Batch Runner用
CI/CD変数の詳細をご覧ください。