LoginSignup
71
55

More than 3 years have passed since last update.

GitHub Actionsを使うとCloud Runへのデリバリが最高に捗るぞ🚀

Posted at

GitHub Actions使ってますか? 最高に便利ですね、CI/CDが捗ります。
GCPのCloud Runも便利ですね。GAEも良いですがCloud Runも最高です。

さて、この記事ではGitHub Actionsを使って、GCPのCloud Runにデプロイする方法を紹介します。

ユースケース

シンプルなユースケースとして、masterブランチにpushするとActionsが動いて、コンテナがCloud Runにデプロイされるようなデリバリを例に扱います。

流れはこんな感じです。

  1. masterブランチへのpushをトリガーにActionsが発火
  2. リポジトリをチェックアウトする
  3. Google Cloud SDKをセットアップする(SDKにgcloudが含まれる)
  4. gcloudをDocker認証ヘルパーとして設定
  5. DockerイメージをBuildする
  6. Google Container Registryにイメージをpushする
  7. Cloud Runにデプロイする

このワークフローを動かすためには事前準備が必要ですが、先にymlを見ておきましょう。IMAGE環境変数は適宜変更してください。

.github/workflows/delivery.yml
name: Delivery

on: 
  push:
    branches:
      - master

env:
  GCP_PROJECT: ${{ secrets.GCP_PROJECT }}
  GCP_REGION: ${{ secrets.GCP_REGION }}
  IMAGE: asia.gcr.io/${{ secrets.GCP_PROJECT }}/foobar:${{ github.sha }}

jobs:
  delivery:

    runs-on: ubuntu-latest

    steps:
      - name: Checkout the repository
        uses: actions/checkout@v1

      - name: GCP Authenticate
        uses: GoogleCloudPlatform/github-actions/setup-gcloud@master
        with:
          version: '273.0.0'
          service_account_email: ${{ secrets.GCP_SA_EMAIL }}
          service_account_key: ${{ secrets.GCP_SA_KEY }}

      - name: Configure docker to use the gcloud cli
        run: gcloud auth configure-docker --quiet

      - name: Build a docker image
        run: docker build . -t $IMAGE

      - name: Push the docker image
        run: docker push $IMAGE

      - name: Deploy to Cloud Run
        run: |
            gcloud run deploy foobar \
              --image $IMAGE \
              --project $GCP_PROJECT \
              --region $GCP_REGION \
              --platform managed \
              --quiet

ちなみに、gcloudを使うための方法として、以前はGithub公式のActionsも提供されていましたが現在はDeprecatedです。

GCP公式のActions推奨されていますのでそちらを使いましょう。

事前準備

このデプロイフローを動かすためには、事前準備が必要です。

GCPでやること

GitHubでやること

  • GitHub Secrets に Actionsで使う変数を設定する
    • このworkflowではSecretsに以下を設定しています。GCP側で行った内容を反映させましょう。
      • GCP_PROJECT (GCPプロジェクトID)
      • GCP_REGION (リージョン)
      • GCP_SA_EMAIL (サービスアカウント メールアドレス)
      • GCP_SA_KEY (サービスアカウントキー)

実行する

あとは、上記ymlをリポジトリに含めてmasterブランチにpushしてみましょう。

うまくいくとこんな感じになります。めっちゃ捗るわー🚀

スクリーンショット 2019-12-25 15.03.50.png

71
55
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
71
55