このページは GolangアプリをGitLabCI経由でAppEngineに公開する シリーズの一部です。
全体の目次は こちら でどうぞ。
環境構築
Golang 製のプログラムをデプロイする前に、AppEngine , LocalPC, GitLab で環境を整える。
GoogleCloudConsoleにプロジェクトを作成
Google Cloud Console にて新しいプロジェクトを作成し、 project_id
を控えておき Cloud Shell で AppEngine アプリケーションを作成する。
natural-apricot-157505:~$ gcloud beta app create
You are creating an app for project [natural-apricot-157505].
WARNING: Creating an app for a project is irreversible.
Please choose a region for your application. After choosing a region,
you cannot change it. Which region would you like to choose?
[1] us-central (supports standard and flexible)
[2] europe-west (supports standard)
[3] us-east1 (supports standard and flexible)
[4] asia-northeast1 (supports standard and flexible)
[5] cancel
Please enter your numeric choice: 4
Creating App Engine application in project [natural-apricot-157505] and region [asia-northeast1]....done.
Success! The app is now created. Please use `gcloud app deploy` to deploy your first app.
今だったら日本の asia-northeast1 が選べる。
リポジトリの準備
適当な場所にリポジトリとなるフォルダを作成して 下記内容で app.yaml
として保存する。
module: default
version: 1
runtime: go
api_version: go1
handlers:
- url: /.*
script: _go_app
内容は AppEngine 用アプリケーションの設定ファイルとなっていて、 Golang のWAFでルーティングさせる前に AppEngine ルーティングする設定を行ってる。
サンプルによっては project_id
を必須にしているものもあるが、後からコマンドのオプションで指定するので必要なし。
最低限のGolangソース準備
Hello World
を表示させるだけの最低限の main.go
はこんな感じ。
普通の Golang ソースにある main
関数は不要で AppEngine が自動的に実行してくれる。
package main
import (
"fmt"
"net/http"
)
func init() {
http.HandleFunc("/", handler)
}
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "%s", "Hello World")
}
SDKの準備
ここ から App Engine SDK
ダウンロードして適当な場所にコピーする(素直に c:\go_appengine
にしておいたほうが楽かと)。
コピーした後はRefreshTokeを取得するために、作成したリポジトリで下記コマンドを打ち込む。
> c:\go_appengine\goapp.bat deploy -application long-advice-XXXXXX
> cat %HOME%\.appcfg_oauth2_tokens
ブラウザで認証が済むと作成された %HOME%\.appcfg_oauth2_tokens
が開くので、 refresh_token
を控えておく。
GoogleCloudSDKについては必要なし。