質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Google Cloud Platform

Google Cloud Platformは、Google社がクラウド上で提供しているサービス郡の総称です。エンドユーザー向けサービスと同様のインフラストラクチャーで運営されており、Webサイト開発から複雑なアプリ開発まで対応可能です。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

Q&A

1回答

3803閲覧

GCPのGCEに Githubのコードをどうやってデプロイしたら良いですか?

DeepRoastBeans

総合スコア79

Google Cloud Platform

Google Cloud Platformは、Google社がクラウド上で提供しているサービス郡の総称です。エンドユーザー向けサービスと同様のインフラストラクチャーで運営されており、Webサイト開発から複雑なアプリ開発まで対応可能です。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

0グッド

1クリップ

投稿2021/11/16 12:00

GCPのGCEに、Githubのソースコードをどうやってデプロイしたら良いでしょうか?

毎回SSHログインしてGit cloneするとオペレーションミスがありそうなので、Git Clone以外で、AWSのCodeDeployの様な方法でデプロイすることは出来ますでしょうか?
※Dockerは使っておりません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

いまさらですが、
CodeDeploy 的な話であれば Cloud Build からデプロイがよいのではと思います。

Cloud Build と Github 連携をすることで、Cloud Build が最新ソースを読めるようになる。
ssh の鍵等を GCS なり Secret Manager なりにおいとておく。
それを Cloud Build から読めるようにしておくことで GCE 操作ができるようになる。
的な感じです。

最近 Cloud Deploy なるものが発表されましたが、それでもできるのかもしれません (使ったことはない)。

投稿2021/12/14 03:54

68user

総合スコア2005

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

DeepRoastBeans

2021/12/14 10:24

ありがとうございます! >Cloud Build と Github 連携をすることで、Cloud Build が最新ソースを読めるようになる。 そういうことができるんですね。。 自分もCloudBuildも試してみたところ、 cloudbuild.yamlでscpで転送すると、ファイル一枚づつ もしくは --recurse としても特定のフォルダのみのようなので、 リポジトリ全体をどうやったらデプロイできるか悩んでおりました。 steps: - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' entrypoint: gcloud args: ['compute', 'scp', '--recurse', 'index.html', 'instance-1:/var/www/html/index.html' , '--zone','asia-northeast1-a']
68user

2021/12/15 01:04

gcloud compute scp --recurse xxxx yyyy zzzz と複数書きましょう。 複数 step に分けてもいいです。 あるいは下記のように複数回実行してもいいです。  args:  - '-c'  - |   set -e   gcloud compute scp ...   gcloud compute scp ...   gcloud compute scp ... ただし cloudbuild.yaml が長くなるので、全資材は app/ 以下にまとめて置くといったポリシーを決めておくと転送漏れ防止になります。 git リポジトリとデプロイ時の構成に差異があるなら、  ・ビルド stepで資材を一箇所にまとめる (/workspace/build/ など)  ・デプロイ stepでそれを GCE に転送する という構成にしてもよいです。 以下、Web 系ならばという前提の注意点ですが、 転送途中でエラーになったりすると html は転送されたが他のファイルは古いままになり意図せぬ挙動をしてしまいます。対策として GCE に "app-YYYYMMDDHHMMSS/" とし転送し、それが成功したら  app/ -> app-YYYYMMDDHHMMSS/ などとシンボリックリンクを張り替えることで atomic にデプロイができます。 ただ現在処理中のスレッド/プロセスがあったりすると、途中でファイルが変わってしまいこれまた意図せぬ挙動が起こりえます。 例えば上位に LB がいるならまずはデプロイ対象の GCE を LB から外し、デプロイし、成功したら LB に復帰、というのが望ましいです (ブルーグリーンデプロイ)。 あるいは GCE は使いまわさず Cloud Build で新 GCE インスタンスを立て、古いものを消すのもよいでしょう。 とか言い出すと自前であれこれ頑張るより docker を使って GKE・Cloud Run 等が楽なんじゃ? GCE 使うにしても docker-compose でいいんじゃ? などとという話も出てくるかと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問