1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

zxを使いApp engineの古いバージョンを都度削除しつつデプロイする

Last updated at Posted at 2021-05-15

背景

App engineでデプロイしまくると、古いバージョンのサービスが乱立して料金がかかる。なのでデプロイするたびに古いバージョンを削除すると理想的だ。

手法

shellで書いたりpythonクライアントを書いたりすればかけるが、shellは柔軟性に乏しく配列とかが書きづらい。pythonは柔軟だが、shellほど簡単にはかけない。
そこで、2021年5月にリリースされたzxを用いて書く。これによりjavascriptのPromise等を使い、柔軟にshellが書ける。

コード

deploy.mjs

#!/usr/bin/env zx

// 最初にデプロイする
await $`gcloud app deploy --quiet --project=XXX`

// 次に最新のデプロイ以外をすべて削除する
let versions = await $`gcloud app versions list --project=XXX | sed 's/  */:/g' | cut -f 2 -d : | tail -n +2 | ghead -n -1`
console.log("---")

versions = versions.toString().split("\n") // makes array
versions.pop() // removes last blank element created by new line
console.log(versions)

await Promise.all(versions.map(version =>
    $`gcloud app versions delete ${version} --project=XXX`
))
console.log("done!")

実行方法(Mac)

chmod +x deploy.mjs
./deploy.mjs
1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?