はじめに
CircleCI で Pulumi Service を利用せずに pulumi preview
するまでの手順と設定をまとめました。
pulumi 公式のドキュメントにも CircleCI で preview を実行する方法は用意されていますが、 Pulumi Service の利用が前提になっています。
CircleCI で pulumi preview
を実行する際に Pulumi Service を利用できる場合は公式ドキュメントを参照することをおすすめします。
また、既に pulumi のプロジェクトを作成済みであることを前提に記述します。
ブロジェクト作成方法は以下等を参照してください。
依存パッケージ等バージョン
利用したバージョンは以下のとおりです。
- pulumi v3.1 以上
- node v14
CircleCI の設定ファイルを作成する
タイトルの通り. CircleCI の設定ファイルを用意しましょう。
先に完成後のファイルを載せ、ポイントは後で記載します。
version: 2.1
orbs:
pulumi: pulumi/pulumi@2.0.0
jobs:
pulumi_preview:
docker:
- image: 'circleci/node:14'
steps:
- checkout
- run:
name: Define PULUMI_CONFIG_PASSPHRASE as an environment variable
command: echo "export PULUMI_CONFIG_PASSPHRASE=$TEST_PULUMI_CONFIG_PASSPHRASE" >> $BASH_ENV
- pulumi/login:
version: 3.1.0
cloud-url: file://~
- run:
name: Yarn install
command: yarn install
- pulumi/stack_init:
stack: 'mziyut-test-pr_${CIRCLE_BUILD_NUM}'
- run:
name: Set AWS region to ap-northeast-1
command: pulumi config set aws:region ap-northeast-1
- pulumi/preview:
stack: 'mziyut-test-pr_${CIRCLE_BUILD_NUM}'
- pulumi/stack_rm:
stack: 'mziyut-test-pr_${CIRCLE_BUILD_NUM}'
workflows:
version: 2
test:
jobs:
- pulumi_preview:
filters:
branches:
ignore:
- main
- master
ポイント 1: Orb の設定をしよう
Orb に対する詳しい説明は以下を参照してください。
簡単に説明すると、後述する pulumi/login
を実行出来るよう、設定等を読み込むための設定です。
定義しない場合、 pulumi/login
等実行することができません。
orbs:
pulumi: pulumi/pulumi@2.0.0
ポイント 2: PULUMI_CONFIG_PASSPHRASE
を定義しよう
pulumi/stack_init
を実行する際に、パスフレーズが定義されていない場合パスフレーズを要求され先に進みません。
また、よほどのことがない限り、本番とテスト環境でパスフレーズを同一にする必要はないため Variables に別名で定義しておき、Job 内で PULUMI_CONFIG_PASSPHRASE
に定義し直しています。
- run:
name: Define PULUMI_CONFIG_PASSPHRASE as an environment variable
command: echo "export PULUMI_CONFIG_PASSPHRASE=$TEST_PULUMI_CONFIG_PASSPHRASE" >> $BASH_ENV
ポイント 3: pulumi/login
実行時の cloud-url
の設定について
今回は Pulumi Service を利用しない(=Local にある state ファイルを参照する)ため、 cloud-url
に file://~
と定義します。
ちなみに、 pulumi login --local
と実行したときに設定される cloud-url
と同値です。
- pulumi/login:
version: 3.1.0
cloud-url: file://~
また、この時点で pulumi
コマンドが存在しない(未インストールの場合)同時にインストールも実行されます。
ポイント 4: リージョンを設定しよう
pulumi preview
を実行する場合、リージョンの設定が必要です。
今回は東京リージョンを定義しておきます。
- run:
name: Set AWS region to ap-northeast-1
command: pulumi config set aws:region ap-northeast-1
最後に
今回はテスト用に stack を定義しましたが、production 環境に適用している stack を用い preview することもできます。
CircleCI の設定ファイル内、stack 定義部分を書き換えてみてください。