iPhoneで Grafanaの グラフを 参照できる アプリ Grafanizer 作ってます。 詳しくは こちらへ

デプロイ - GolangアプリをGitLabCI経由でAppEngineに公開する -

Feb 10, 2017  
#golang #gitlab #appengine #dev #env

このページは GolangアプリをGitLabCI経由でAppEngineに公開する シリーズの一部です。
全体の目次は こちら でどうぞ。

デプロイ

デプロイ作業は GitLabCI を利用するので、CIの設定と GitLab 上のプロジェクトを作成する。

.gitlab-ci.yaml

GitLab のCI機能を使ってデプロイするのでその設定。

Golang 用のSDKを入れているので goapp を使いたくなるところだが、goaap はまだ?OAuth2のRefreshTokenの指定がサポートされていないので、同梱されているPython版で実行させる。

また、Dockerイメージは aslafy-z/gae-go-alpine から パクって フォークして AppEngine の最新版に差し替えた自作を利用している。

image: nobuhito/gae-go-alpine

stages:
 - production

deploy_for_production:
 stage: production
 script: python /google_appengine/appcfg.py update . --oauth2_refresh_token=$REFRESH_TOKEN -A $PROJECT_ID

GitLabでプロジェクトを作成

GitLab でプロジェクトを作成して、設定の Variable 以下の変数を登録する。

  • PROJECT_ID : AppEngineを作成したときに控えておいた project_id
  • REFRESH_TOKEN : ブラウザで認証した時に控えておいた refresh_token

単純なデプロイ

単純にデプロイするだけであれば、作成した .gitlab-ci.yml , app.yaml , main.goGitLab のリポジトリへプッシュするだけで AppEngine へデプロイされる。

Running with gitlab-ci-multi-runner 1.10.4 (b32125f)
Using Docker executor with image nobuhito/gae-go-alpine ...
Pulling docker image nobuhito/gae-go-alpine ...
Running on runner-72989761-project-2617622-concurrent-0 via runner-72989761-machine-1486026574-ad66a9dd-gce...
Cloning repository...
Cloning into '/builds/nobuhito/HelloAppEngine'...
Checking out 43654c97 as master...
Skipping Git submodules setup
$ python /google_appengine/appcfg.py update . --oauth2_refresh_token=$REFRESH_TOKEN -A $PROJECT_ID
09:11 AM Application: atomic-wall-157508 (was: None); version: 1
09:11 AM Host: appengine.google.com
****************************************************************
09:11 AM Starting update of app: atomic-wall-157508, version: 1
09:11 AM Getting current resource limits.
09:11 AM Scanning files on local disk.
09:11 AM Cloning 4 application files.
09:11 AM Uploading 2 files and blobs.
09:11 AM Uploaded 2 files and blobs.
09:11 AM Compilation starting.
09:11 AM Compilation: 1 files left.
09:11 AM Compilation completed.
09:11 AM Starting deployment.
09:11 AM Checking if deployment succeeded.
09:11 AM Deployment successful.
09:11 AM Checking if updated app version is serving.
09:11 AM Completed update of app: atomic-wall-157508, version: 1

もしうまくデプロイされない場合は、下記を確認するといいかも。

  • GitLabのビルドが問題なく完了しているか
  • AppEngineで別のサービスが立ち上がってないか
  • AppEngineで別のバージョンにトラフィックが偏ってないか

ここまでのコミットは ここ を参照。