LoginSignup
5
2

More than 1 year has passed since last update.

Google Cloud BuildをGitHubリポジトリで動かしてHello, World!

Last updated at Posted at 2021-04-08

Google Cloud BuildをGitHubリポジトリと連携させて、ビルドジョブを動かしてみました。

CI/CDの類を構築したことがなかったので、Hello, World!からです。

2021/05/07追記:AWSのCodeBuildも試しました → AWS CodeBuildをGitHubリポジトリで動かしてHello, World!

この記事にあるスクショは、白い背景はGoogle Cloud Platformのページで、黒い背景はGitHubのページです。

前提

  • Google Cloud Platformにプロジェクトが存在する
  • GitHubアカウントが存在する
  • GitHub上にGoogle Cloud Buildを試すためのリポジトリが存在する

手順

  1. Cloud BuildをGitHubリポジトリに接続
  2. pushしたらジョブを起動するためのTriggerをCloud Buildに設定
  3. ジョブの内容を記述するファイル cloudbuild.yaml を作成
  4. pushしてジョブを実行してみる

Cloud BuildをGitHubリポジトリに接続

Cloud Buildの画面に移動し、左のメニューのTriggersを選択します。

まずはCloud Buildをリポジトリに接続することが必要なので、「CONNECT REPOSITORY」のボタンをクリックします。次のような画面になります。

image.png

今回はGitHubのリポジトリで作成してみます。GitHub認証の設定では、ブラウザがGitHubのページに移動して承認を求められますので、承認します。すると次のような画面になります。

image.png

"GitHubにGoogle Cloud Buildをインストール" することが必要のようです。「INSTALL GOOGLE CLOUD BUILD」のボタンをクリックすると、再びGitHubの画面が開きます。

image.png

この画面になるので、インストールするリポジトリを選択します。

インストールが完了すると、Google Cloudの画面に戻り、接続するリポジトリが選択できるようになりますので、選択します。

image.png

「CONNECT」のボタンをクリックすると、接続完了です。

image.png

続いて、「CREATE A TRIGGER」のボタンをクリックすると、Trigger作成画面に移動します。

ちなみに、GitHubの画面では、自分のアカウントのページのSettingsのメニューにあるApplicationsのページを見ると、Installed GitHub AppsとしてGoogle Cloud Buildが登場しています。

image.png

pushしたらジョブを起動するためのTriggerをCloud Buildに設定

次は、GitHubにpushすると自動でジョブが走るようにTriggerを設定します。

「CREATE A TRIGGER」のボタンをクリックし、Trigger作成画面に移ります。

image.png

Nameだけ適当に入力します。

EventはPush to a branch、Sourceはすでに先ほど作成したリポジトリが選択されています。Branchはデフォルトで ^main$ となっています。正規表現のようです。

Configurationはデフォルトのままにします。

これで「CREATE」ボタンをクリック。

Triggers一覧の画面になり、Triggerが作成されていることが確認できます。

image.png

ジョブの内容を記述するファイル cloudbuild.yaml を作成

ジョブの内容を記述するファイルはYAMLでリポジトリの中に作成します。

cloudbuild.yaml という名前で以下の3行のみのYAMLを作成します。

steps:
  - name: "bash"
    args: ["echo", "Hello, World!"]

pushしてジョブを実行してみる

このYAMLファイルをgit commitし、git push でGitHubにpushすると、Cloud Buildのビルドが実行されます。

Cloud Buildの画面の左のメニューのHistoryを選択すると、実行履歴が残されてます。

image.png

Hello, World!ができました。

おまけ

cloudbuild.yaml を以下のようにすると、ビルドがどういう環境で実行されるのかがイメージできました。

steps:
  - name: "bash"
    args: ["echo", "Hello, World!"]
  - name: "bash"
    args: ["pwd"]
  - name: "bash"
    args: ["ls", "-al"]
  - name: "bash"
    args: ["touch", "building.txt"]
  - name: "bash"
    args: ["ls", "-al"]

pwdコマンドでは/workspaceと出力されました。

touchコマンドのあとのlsコマンドではtouchしたファイルが増えます。ジョブを再実行すると、touchしたファイルがない状態から始まります。

リポジトリに含まれているファイルのタイムスタンプは、ジョブを開始する時刻になっているので、ジョブ実行ごとに環境が作られているようです。

5
2
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
5
2