71
57

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

LIFULLその3Advent Calendar 2019

Day 4

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
57
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
57

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?