Google Cloud にデプロイする
Google App Engine Deploy パイプを使用すると、アプリケーションを Google App Engine にデプロイできます。
始める前に
- Google サービス アカウント キーを作成する必要があります。詳細については、Google のサービス キーの作成ガイドを参照してください。
- gcloud を使用してアプリケーションのデプロイメントを行うための十分な権限が構成されている IAM ユーザー。
- アプリケーションに必要な適切な API とサービスが有効化されていること。
- すべてのクラウド コンポーネントがインストールされていること。
手順
- Google App Engine のサンプル リポジトリのクローンを作成します。
Google サービス アカウント キーを作成します。詳細については、Google のサービス キーの作成ガイドを参照してください。
キー ファイルを取得したら、ターミナルを開き、キー ファイルの場所を参照します。
ファイルを base64 形式でエンコードし (base64 -w 0 < your-key-file>)、コマンドの出力をコピーします。
注意
注: MacOS の一部のバージョンでは、
-w 0
は不要です。リポジトリで [設定] に移動し、[パイプライン] の [リポジトリ変数] を選択してから、KEY_FILE という名前の新しい変数を作成し、エンコードされたサービス アカウントの資格情報を貼り付けます。
パイプを構成し、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
。
(*) = required variable.
エンド ツー エンドの例
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'
高度な例
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 にデプロイ
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 の app.yaml
で Spring Boot ベースの Java アプリ ビルドを gcloud にデプロイ
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 の app.yaml
で Spring Boot ベースの Java アプリ ビルドを gcloud にデプロイ
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 の WEB-INF/appengine-web.xml
で Spring Boot ベースの Java アプリ ビルドを gcloud にデプロイ
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 の app.yaml
で標準 Java アプリ ビルドを gcloud にデプロイ
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 の WEB-INF/appengine-web.xml
で標準 Java アプリ ビルドを gcloud にデプロイ
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 の WEB-INF/appengine-web.xml
を使用して標準 Java アプリ ビルドを gcloud にデプロイ
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 の app.yaml
を使用して標準 Java アプリ ビルドを gcloud にデプロイ
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'