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

このページは 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の画面ではテストが失敗したことを確認でき、必要に応じてリトライさせることも出来る。

pipelines_test_failed.png

また、設定によってはメールでもビルド画面と同じ結果を受信してるかもしれない。

mail_test_failed.png

手動デプロイと旧バージョンへのロールバック

本番環境へのデプロイは前の説明の通り、 GitLab のPipelinesにあるBuildsから行える。 .gitla.yml でテストステージは when:on_success としているが、次の本番環境へのデプロイが手動なので今回はあまり有効に機能していない。

テストが充実してきたら、本番環境へのデプロイも自動にしてテストが通らない場合だけ弾くという感じが良いかもしれない。

ここまでのコミットは ここ で確認できる。