😀
GitHub Actionsでpulumi previewを実行してPRコメントを追加する
きっかけ
個人開発でPulumiのCI/CDにPulumi Cloud
の有料プランTeam
を利用していたところ、
リソース数が増えて無料枠をオーバーしてしまった。(オーバーした時点で月💲18ほど)
開発中はなるべく節約したいので、Pulumi Cloud
のCI/CDをGitHub Actions
に移行することに。
やりたいこと
GitHub Actions
でpulumi preview
を実行し、PRコメントで実行結果を確認できるようにしたい
前提条件
- Pulumiの言語はTypeScript
- Pulumiのstate管理にはS3バケットを利用
-
pulumi stack init
でS3にPulumiのstackが作成されていること
-
- GitHubからAWSへの認証はOIDCを利用、ロールのARNを取得しておく
上記の細かい設定は別記事に書く予定
ymlファイルを作成
下記のように.github/workflows/pulumi-preview.yml
を作成する
name: Pulumi Preview
run-name: Pulumi Preview
on:
pull_request:
paths:
- "<Pulumiファイルのあるディレクトリ>/**" # 任意
jobs:
preview:
name: Preview
runs-on: ubuntu-latest
permissions:
id-token: write # OIDCを利用する時に必要
contents: read
pull-requests: write # Pull Request内にコメントを残すときに必要
defaults:
run:
working-directory: <Pulumiファイルのあるディレクトリ> # 任意
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: "20" # 16のままだとwarningが出る
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v4
with:
aws-region: ${{ vars.AWS_REGION }} # AWSのリージョン
role-to-assume: ${{ vars.AWS_ASSUME_ROLE_ARN }} # OIDCのロール
- run: npm install
- uses: pulumi/actions@v5
env:
PULUMI_CONFIG_PASSPHRASE: ${{ secrets.PULUMI_CONFIG_PASSPHRASE }} # `pulumi stack init`で設定した値
with:
command: preview
refresh: true # previewの前にrefreshを行いたい場合に設定
stack-name: ${{ vars.PULUMI_STACK_NAME }}
cloud-url: ${{ vars.PULUMI_BUCKET_URL }} # s3://<バケット名>を指定
work-dir: <Pulumiファイルのあるディレクトリ>
comment-on-pr: true # Pull Request上にコメントを残すかどうか
github-token: ${{ secrets.GITHUB_TOKEN }} # comment-on-prがtrueの時に必要
まとめ
上記の設定の後にPull Requestを作成するとGitHub Actions
でpulumi preview
が実行されて、結果がPRコメントに追加されるようになる。
参考文献
Discussion