GitHub Actions の "actions/cache" で作成した cache を GitHub CLI で削除する


## はじめに

- GitHub Actions の "actions/cache" で作成した cache を GitHub CLI で削除する 方法についてまとめました

## 事前準備

- この方法は GitHub CLI が使える前提です。使えない場合は設定するか、 "curl" で実行したい人は docs を参照してください

https://docs.github.com/en/rest/actions/cache#delete-a-github-actions-cache-for-a-repository-using-a-cache-id

## cache を削除する

### Cache Key を取得する

GitHub Actions の実行結果を確認し、Cache Key を取得します

以下のような Log が出力されている箇所を探します
多く場合 `Run actions/cache@v2` や `Post Run actions/cache@v2` 等といった Job 内から探すことが出来ます

```sh:Run actions/cache@v2
Received XXXXXX of XXXXXX (100.0%), 156.5 MBs/sec
Cache Size: ~134 MB (140003694 B)
/bin/tar --use-compress-program zstd -d -xf /home/runner/work/_temp/xxxx-xxxx-xxxx-xxxx-xxxx/cache.tzst -P -C /home/runner/work/xxxx/xxxx
Cache restored successfully
Cache restored from key: Linux-xxxx-xxxx-xxxx-cache-all-2704376682
```

```sh:Post Run actions/cache@v2
Post job cleanup.
/bin/tar --posix --use-compress-program zstd -T0 -cf cache.tzst -P -C /home/runner/work/xxxx/xxxx --files-from manifest.txt
Cache Size: ~134 MB (140003694 B)
Cache saved successfully
Cache restored from key: Linux-xxxx-xxxx-xxxx-cache-all-2704376682
```

上記ログであれば、 Cache kye は `Linux-xxxx-xxxx-xxxx-cache-all-2704376682` が cache key となります

### Cache を削除する

直前のステップで取得した Cache key を用い Cache を削除します

```sh
gh api --method DELETE -H "Accept: application/vnd.github+json" "/repos/USER_OR_ORG/REPONAME/actions/caches?key=YOUR_CACHE_KEY"
```

`YOUR_CACHE_KEY` 部分を Cache key に置き換えて実行してください

#### 実行例

実際に Cache を削除してみます
今回は、`mziyut/test-github-actions` repository に作成した cahce を削除しました

```sh
 gh api --method DELETE -H "Accept: application/vnd.github+json" "/repos/mziyut/test-github-actions/actions/caches?key=Linux-xxxx-xxxx-xxxx-cache-all-2704376682"
{
  "total_count": 1,
  "actions_caches": [
    {
      "id": 22830,
      "ref": "refs/pull/xxxx/xxxx",
      "key": "Linux-xxxx-xxxx-xxxx-cache-all-2704376682",
      "version": "xxxxxxx",
      "last_accessed_at": "2022-xx-xxTxx:xx:xx.xxxxxxxxZ",
      "created_at": "2022-xx-xxTxx:xx:xx.xxxxxxxxZ",
      "size_in_bytes": 140003694
    }
  ]
}
```

削除出来ているか確認するため、同じ cache key に対して再度 cache の削除してみます

```sh
gh api --method DELETE -H "Accept: application/vnd.github+json" "/repos/mziyut/test-github-actions/actions/caches?key=Linux-xxxx-xxxx-xxxx-cache-all-2704376682"
{
  "message": "Not Found",
  "documentation_url": "https://docs.github.com/rest/actions/cache#delete-github-actions-caches-for-a-repository-using-a-cache-key"
}
gh: Not Found (HTTP 404)
```

Cache が存在しないため、 `Not Found (HTTP 404)` が返却されました

## Reference

https://github.blog/changelog/2022-03-17-view-cache-usage-in-your-action-workflows/

https://docs.github.com/en/rest/actions/cache#delete-a-github-actions-cache-for-a-repository-using-a-cache-id

- [Delete GitHub Actions caches for a repository (using a cache key) - GitHub Actions Cache - GitHub Docs](https://docs.github.com/en/rest/actions/cache#delete-github-actions-caches-for-a-repository-using-a-cache-key)
- [Delete a GitHub Actions cache for a repository (using a cache ID) - GitHub Actions Cache - GitHub Docs](https://docs.github.com/en/rest/actions/cache#delete-a-github-actions-cache-for-a-repository-using-a-cache-id)