このページは GolangアプリをGitLabCI経由でAppEngineに公開する シリーズの一部です。
全体の目次は こちら でどうぞ。
テストを追加
開発環境でバグを見過ごさないようにテストを追加してみる。
Golangソース
サンプルなので確実にエラーが発生するテストを追加する。
package main
import (
"testing"
)
func TestMain(t *testing.T) {
t.Errorf("abort")
}
.gitlab-ci.ymlの調整
testステージを追加してある。
テストが通らなくてもUIなどは開発環境で試せるようにしておきながら、テストが通らないと自動的には次のステージにすすめないように when:on_success
を指定してある
image: nobuhito/gae-go-alpine
stages:
- staging
- test
- production
deploy_for_staging:
stage: staging
script: python /google_appengine/appcfg.py update . --oauth2_refresh_token=$REFRESH_TOKEN -A $PROJECT_ID_DEV
test:
stage: test
script: /google_appengine/goapp test ./
when: on_success
deploy_for_production:
stage: production
script: python /google_appengine/appcfg.py update . --oauth2_refresh_token=$REFRESH_TOKEN -A $PROJECT_ID
when: manual
environment: production
プッシュ後のテスト失敗確認
Pipelinesの画面ではテストが失敗したことを確認でき、必要に応じてリトライさせることも出来る。
また、設定によってはメールでもビルド画面と同じ結果を受信してるかもしれない。
手動デプロイと旧バージョンへのロールバック
本番環境へのデプロイは前の説明の通り、 GitLab のPipelinesにあるBuildsから行える。
.gitla.yml
でテストステージは when:on_success
としているが、次の本番環境へのデプロイが手動なので今回はあまり有効に機能していない。
テストが充実してきたら、本番環境へのデプロイも自動にしてテストが通らない場合だけ弾くという感じが良いかもしれない。
ここまでのコミットは ここ で確認できる。