Google Cloud にデプロイする

始める前に

  • Google サービス アカウント キーを作成する必要があります。詳細については、Google のサービス キーの作成ガイドを参照してください。

  • gcloud を使用してアプリケーションのデプロイメントを行うための十分な権限が構成されている IAM ユーザー。

  • アプリケーションの必要性に応じて、適切な API とサービスが有効化されていること。

  • すべてのクラウド コンポーネントがインストールされていること。 

手順

  1. Google App Engine のサンプル リポジトリのクローンを作成します。

  2. Google サービス アカウント キーを作成します。詳細については、Google のサービス キーの作成ガイドを参照してください。

  3. キー ファイルを取得したら、ターミナルを開き、キー ファイルの場所を参照します。

  4. ファイルを base64 形式でエンコードし (base64 -w 0 < your-key-file>)、コマンドの出力をコピーします。
    注: MacOS の一部のバージョンでは、-w 0 は不要です。

  5. リポジトリで [リポジトリの設定] に移動し、[パイプライン] の [リポジトリ変数] を選択してから、KEY_FILE という名前の新しい変数を作成し、エンコードされたサービス アカウントの資格情報を貼り付けます。

  6. パイプを構成し、PROJECT および KEY_FILE の変数を追加します。

変数の一覧

PROJECT (*): デプロイするアプリケーションを所有するプロジェクト。 

KEY_FILE (*): Google サービス アカウントの base64 形式でエンコードされたキー ファイル。

DEPLOYABLES: gcloud に渡される空白で区切られた yaml ファイルの一覧。初期設定では次のとおりです。""空のままにすると、現在のディレクトリの app.yaml が使用されます。

VERSION: 作成 / 置換されるアプリのバージョン。

BUCKET: デプロイメントに関連付けられたファイルを保存する Google クラウド ストレージ バケット。

IMAGE: 特定の GCR docker イメージでデプロイします。

PROMOTE: true の場合、デプロイされたバージョンはすべてのトラフィックを受信し、false の場合はトラフィックを受信しません。

STOP_PREVIOUS_VERSION: true の場合、トラフィックを受信している以前のバージョンは停止し、false の場合は以前のバージョンは停止しません。

EXTRA_ARGS: CLI に渡される追加の引数 (詳細については Google アプリのデプロイメント ドキュメントを参照してください)。

DEBUG: 追加のデバッグ情報を有効化します。初期設定では次のとおりです。false

(*) = 必須の変数。

エンド ツー エンドの例

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 image: node:10.15.1 pipelines: default: - step: name: Build and Test script: - npm install - npm test - step: name: Deploy script: - pipe: atlassian/google-app-engine-deploy:0.2.1 variables: KEY_FILE: $KEY_FILE PROJECT: 'my-project'

高度な例

複数の deployable をデプロイ

1 2 3 4 5 6 7 8 9 10 11 12 script: - pipe: atlassian/google-app-engine-deploy:0.4.1 variables: KEY_FILE: $KEY_FILE PROJECT: 'my-project' DEPLOYABLES: 'app-1.yaml app-2.yaml' VERSION: 'alpha' BUCKET: 'gs://my-bucket' IMAGE: 'gcr.io/my/image' PROMOTE: 'true' STOP_PREVIOUS_VERSION: 'true' EXTRA_ARGS: '--verbosity=debug'

Python アプリを gcloud にデプロイ

1 2 3 4 5 6 7 8 9 10 script: - pipe: atlassian/google-app-engine-deploy:0.4.1 variables: KEY_FILE: $KEY_FILE_PYTHON_APP PROJECT: 'pipes-example-python3-app' DEPLOYABLES: 'hello_world/app.yaml' VERSION: '${BITBUCKET_BUILD_NUMBER}' PROMOTE: 'true' STOP_PREVIOUS_VERSION: 'true' EXTRA_ARGS: '--verbosity=debug --quiet'

Maven で Spring Boot ベースの Java アプリ ビルドをデプロイ app.yaml gcloud にデプロイ

1 2 3 4 5 6 7 8 script: - pipe: atlassian/google-app-engine-deploy:0.4.1 variables: KEY_FILE: $KEY_FILE PROJECT: 'pipes-java-maven-spring-boot' DEPLOYABLES: 'target/appengine-staging/app.yaml' VERSION: '${BITBUCKET_BUILD_NUMBER}' EXTRA_ARGS: '--verbosity=debug'

Gradle で Spring Boot ベースの Java アプリ ビルドをデプロイ app.yaml gcloud にデプロイ

1 2 3 4 5 6 7 8 9 script: - pipe: atlassian/google-app-engine-deploy:0.4.1 variables: KEY_FILE: $KEY_FILE PROJECT: 'pipes-java-gradle-spring-boot' DEPLOYABLES: 'build/staged-app/app.yaml' # DEPLOYABLES: 'src/main/WEB-INF/appengine-web.xml' # or you can provide web.xml VERSION: '${BITBUCKET_BUILD_NUMBER}' EXTRA_ARGS: '--verbosity=debug'

Gradle で Spring Boot ベースの Java アプリ ビルドをデプロイ WEB-INF/appengine-web.xml gcloud にデプロイ

1 2 3 4 5 6 7 8 script: - pipe: atlassian/google-app-engine-deploy:0.4.1 variables: KEY_FILE: $KEY_FILE PROJECT: 'pipes-java-gradle-spring-boot' DEPLOYABLES: 'src/main/WEB-INF/appengine-web.xml' VERSION: '${BITBUCKET_BUILD_NUMBER}' EXTRA_ARGS: '--verbosity=debug'

Maven で標準 Java アプリ ビルドをデプロイ app.yaml gcloud にデプロイ

1 2 3 4 5 6 7 8 9 10 script: - pipe: atlassian/google-app-engine-deploy:0.4.1 variables: KEY_FILE: $KEY_FILE PROJECT: 'pipes-example-java-app-maven' DEPLOYABLES: 'target/appengine-staging/app.yaml' VERSION: '${BITBUCKET_BUILD_NUMBER}' PROMOTE: 'true' STOP_PREVIOUS_VERSION: 'true' EXTRA_ARGS: '--verbosity=debug'

Maven で標準 Java アプリ ビルドをデプロイ WEB-INF/appengine-web.xml gcloud にデプロイ

1 2 3 4 5 6 7 8 9 10 script: - pipe: atlassian/google-app-engine-deploy:0.4.1 variables: KEY_FILE: $KEY_FILE PROJECT: 'pipes-example-java-app-maven' DEPLOYABLES: 'target/appengine-staging/WEB-INF/appengine-web.xml' VERSION: '${BITBUCKET_BUILD_NUMBER}' PROMOTE: 'true' STOP_PREVIOUS_VERSION: 'true' EXTRA_ARGS: '--verbosity=debug'

Gradle で標準 Java アプリ ビルドをデプロイ WEB-INF/appengine-web.xml gcloud にデプロイ

1 2 3 4 5 6 7 8 9 10 script: - pipe: atlassian/google-app-engine-deploy:0.4.1 variables: KEY_FILE: $KEY_FILE PROJECT: 'pipes-example-java-app-gradle' DEPLOYABLES: 'build/exploded-helloworld/WEB-INF/appengine-web.xml' VERSION: '${BITBUCKET_BUILD_NUMBER}' PROMOTE: 'true' STOP_PREVIOUS_VERSION: 'true' EXTRA_ARGS: '--verbosity=debug'

Gradle で標準 Java アプリ ビルドをデプロイ app.yaml gcloud にデプロイ

1 2 3 4 5 6 7 8 9 10 script: - pipe: atlassian/google-app-engine-deploy:0.4.1 variables: KEY_FILE: $KEY_FILE PROJECT: 'pipes-example-java-app-gradle' DEPLOYABLES: 'build/staged-app/app.yaml' VERSION: '${BITBUCKET_BUILD_NUMBER}' PROMOTE: 'true' STOP_PREVIOUS_VERSION: 'true' EXTRA_ARGS: '--verbosity=debug'

 

その他のヘルプ