LoginSignup
7
3

More than 3 years have passed since last update.

GitHub ActionsでPRのマージ時に自動的にGAE versionを削除する

Last updated at Posted at 2019-12-15

GAE versionには210個制限がある!

HerokuにはReview Appsという便利な仕組みがあり、GitHubでPRが作成される事に検証用の環境を自動的にデプロイすることができます。
参考: https://qiita.com/kon_yu/items/6d2c0ae91d0176ceb167

GAEでもCI上でスクリプトを書けば自動デプロイが実現できるので(こちらは今回触れません)、PR毎にGAEのversionを分けてデプロイをしてReview Appsぽいことをやっています。

しばらく運用していると、↓の様なエラーが出てしまいました...どうやらversion作りすぎで210個制限を超えてしまった様です。

Error 400: --- begin server output ---
<ApiError 400, Message: "Your app may not have more than 210 versions. Please delete one of the existing versions before trying to create a new version.">
--- end server output ---

GitHub Actionで不要なversionを消してみる

ちょうどGitHub Actionsが使える様になった時期だったので、PRのclose時に自動的に不要になったversionを削除する様にしてみました。
↓インラインコメントで簡単な解説を書いておきます。

name: Delete GAE version from staging

on:
  pull_request: # PRのclose時のみ発動させます
    types: [closed]
jobs:

  build:

    runs-on: ubuntu-latest
    container: # GAE SDKの入ったDockerコンテナを使っています
      image: ubiregiinc/jdk8-scala-appengine:latest

    steps:
    - uses: actions/checkout@v1
    - name: delete_version
      run: $APPENGINE_SDK_HOME/bin/appcfg.sh -A YOUR_APPID -V pr${{ github.event.number }} --oauth2_refresh_token=YOUR_TOKEN delete_version src/main/webapp
    # ↑まだgcloudに移行していないので...appcfgを使っています...
    #  `-V`でversion指定ができるので、CIからデプロイしている命名規則と同じversionを指定して`delete_version`します

上記の様なymlで記述したworkflowを.github/workflows/delete_version_on_pr_close.ymlの様な場所に置いておくと該当レポジトリのPRなどのイベントに応じていろいろなことが自動化できて便利です。

実行状況を見る

PRのChecksタブから実行状況を確認することができます。
スクリーンショット

プランによっては使えない...

GitHub ActionsのGAに伴い、レポジトリ数課金の古いプランだと使えなくなってしまいました...

GitHub Actions is unavailable for per-repository plans, which are legacy billing plans.

こんなエラーが出る場合はプランを確認しましょう。

### ERRORED 11:20:00Z

- Workflows can't be executed on this repository. Please check your payment method or billing status.
7
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3