***
- mainブランチへのpushをトリガーにGitHub Actionsが発火
- リポジトリをチェックアウト
- Google Cloud SDKをセットアップ
- DockerイメージをBuild
- Google Container Registryにイメージをpush
- Cloud Runにデプロイ
- Dokcerを使用してアプリを開発
- GitでレポジトリにPush
- Google Cloud Buildpacksを用いてイメージを作成する。
必要な設定
gcloudで直接GCPの設定ができる。
- Dokcerが必要
- buildpacksのCLIが必要(shellでインストールが良い?)
- ディレクトリ: 「dancing-code/om-lambda-publishing/app/アプリケーション本体」 このリポジトリだと、om-lambda-publishing/app配下に、go.modとmain()をもつgoファイルが必要。 appに移動してからpackコマンドを打つ。
- imageができたことを確認 docker ps -a
- gcloud configを確認する gcloud config list :local:
- DockerにGcloudSDKのCredentialを使わせる gcloud auth configure-docker リージョン-docker.pkg.dev :LOCAL:
- Docker Build時のタグを設定する
docker build -t [ホストする場所]/[project id]/[app]:latest . :LOCAL:
buildpacksでイメージを作成した場合はdocker buildは不要なのでtagコマンドでタグ付けする。 docker tag [イメージ名] [ホストする場所]/[project id]/om-lambda-publishing/app
- docker push でArtifactRegistryにpushする。
docker push [ホストする場所]/[project id]/om-lambda-publishing/app
gcloud beta run deploy –source=[DIRECTORY]
gcloud beta run deploy –source=[DIRECTORY]
pack build gcr.io/long-axle-323211/github.com/dancing-code/om-lambda-publishing:$COMMIT_SHA \ –builder gcr.io/buildpacks/builder
最初のみ手動でコンテナイメージをデプロイする必要がある。
Artifact Registryに最初のコンテナイメージのpushが合わった後。 Cloud RunをArtifact Registryをもとに作成する。 その後はWorkflowの通りにCIできる。
- GCPプロジェクトを作成。
- Cloud Run APIを有効にする。
- Cloud Runサービスアカウントを作成する。
- Cloud Runサービスアカウントに、CloudIAMロールを追加する。
- Cloud Run Admin: 新しいCloudRunサービスの作成が可能。
- Service Account User: Cloud Run asserviceアカウントにデプロイする。(required to deploy to Cloud Run as service account)
- Storage Admin: Container Registry/Artifact Registryにプッシュを可能にする。
- サービスアカウントのJSONサービスアカウントキーをダウンロードする。
- Githubのレポジトリにレポジトリシークレットを設定する
- GCP_PROJECT: GCP project ID
- GCP SA KEY: ダウンロードしたKEY
- Cloud RUN APIを有効にする。
- Cloud Runのサービスアカウントを作成する。
- IAMのロールを上記のサービスアカウントに設定する。
- ソースコードを管理
- Masterブランチにプルリク
- GCP_PROJECT (GCPプロジェクトID)
- GCP_REGION (リージョン)
- GCP_SA_EMAIL (サービスアカウント メールアドレス)
- GCP_SA_KEY (サービスアカウントキー)
- WorkFlowに基づいて起動する
- GCP公式のActionsがある。
- Go言語(限定?)では「ko」というツールでDockerなし、Dockerfileの自作なしにコンテナイメージを作れる、らしい。
- buildpackというサービスもある、らしい。
- 自力なら当然、DockerとDockerfileに対する理解が必要。 Google Cloud Buildpacks
- 有効にする。
必要なロールを設定する。GCP-CloudRun
- iam.serviceAccounts.actAs
- storage.buckets.get
- storage.objects.create