GitHub ActionsでPulumiをCI/CDしてみた

はじめに

個人趣味のインフラをPulumiで管理しています。
Pulumiの公式からGitHub Actionsが公開されていたので、こちらを利用してGitHubのmainブランチへpushしたら自動でデプロイされるように設定してみました。

手順

GitHub Actionsのワークフロー作成

GitHub: pulumi/actionsのリポジトリ内にワークフローのサンプルがあるので、これを参考にしてYAMLを書きます。
ファイルは .github/workflows/pulumi.yml に配置します。

name: Pulumi deploy
on:
  push:
    branches:
      - main
jobs:
  up:
    name: Update
    runs-on: ubuntu-latest
    steps:
      - name: Checkout 🛎️
        uses: actions/checkout@v3
 
      - name: Setup Go ✨
        uses: actions/setup-go@v3
        with:
          go-version: "1.21"
 
      - name: Downloading dependencies 📦
        run: go mod download
 
      - name: Applying infrastructure 🚀
        uses: pulumi/actions@v4
        with:
          command: up
          stack-name: prod
        env:
          PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }}

Pulumiのアクセストークン取得

Pulumi Cloudへアクセスして、アクセストークンを取得します。

Pulumi Cloudのアクセストークン取得画面

アクセストークンをGitHub ActionsのSecretsに登録

取得したアクセストークンをGitHub ActionsのSecretsに登録します。

GitHub Actionsの設定画面

おわりに

もう少し凝ったことをやろうとすると、GitHub Actions力が必要そうですが、公式のサンプルがあったので簡単にできました。
Pulumiは公式のドキュメントであったり、サンプルが充実しているので、初心者でも簡単に始められて良いですね。

参考資料