私はRパッケージに取り組んでおり、継続的インテグレーション(CI)プロバイダーとしてGitHub Action(GHA)を使用しています。私はRパッケージ(依存関係)をキャッシュするためにactions/cache
. そして、すべてのキャッシュをクリアしたいのですが、どうすればいいでしょうか?
on: push
name: R-CMD-check
jobs:
R-CMD-check:
runs-on: ${{ matrix.config.os }}
name: ${{ matrix.config.os }} (${{ matrix.config.r }})
strategy:
fail-fast: false
matrix:
config:
# - {os: windows-latest, r: 'devel'}
- {os: macOS-latest, r: 'release'}
env:
R_REMOTES_NO_ERRORS_FROM_WARNINGS: true
RSPM: ${{ matrix.config.rspm }}
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v2
- uses: r-lib/actions/setup-r@master
- name: Query dependencies
run: |
repos <- c("https://r-hyperspec.github.io/hySpc.pkgs/", getOption("repos"))
saveRDS("remotes::dev_package_deps(dependencies = TRUE)", ".github/depends.Rds", version = 2)
writeLines(sprintf("R-%i.%i", getRversion()$major, getRversion()$minor), ".github/R-version")
shell: Rscript {0}
- name: Cache R packages
if: runner.os != 'Windows'
uses: actions/cache@v1
with:
path: ${{ env.R_LIBS_USER }}
key: ${{ runner.os }}-${{ hashFiles('.github/R-version') }}-1-${{ hashFiles('.github/depends.Rds') }}
restore-keys: ${{ runner.os }}-${{ hashFiles('.github/R-version') }}-1-
- name: Install dependencies
run: remotes::install_deps(dependencies = TRUE)
shell: Rscript {0}
- name: Session info
run: |
options(width = 100)
pkgs <- installed.packages()[, "Package"]
sessioninfo::session_info(pkgs, include_base = TRUE)
shell: Rscript {0}
ベストアンサー1
更新(2023年7月11日)
すでに説明したようにVonCのコメント、GitHub CLI専用のcache
トップレベルコマンド:
現在のリポジトリのキャッシュのリスト:
$ gh cache list
キャッシュ ID で現在のリポジトリのキャッシュを削除します。
$ gh cache delete <CACHE_ID>
更新(2022年10月20日)
いまなら可能ですUI経由でキャッシュを管理する:
https://github.com/<OWNER>/<REPO>/actions/caches
更新(2022年6月27日)
いまなら可能ですGitHub Actions Cache API 経由でキャッシュを管理する:
GET
リポジトリのキャッシュのリスト:$ curl \ -H "Accept: application/vnd.github.v3+json" \ -H "Authorization: token <TOKEN>" \ https://api.github.com/repos/<OWNER>/<REPO>/actions/caches
DELETE
キャッシュ ID によるリポジトリのキャッシュ:$ curl \ -X DELETE \ -H "Accept: application/vnd.github.v3+json" \ -H "Authorization: token <TOKEN>" \ https://api.github.com/repos/<OWNER>/<REPO>/actions/caches/<CACHE_ID>
あるいは、GitHub CLIを使用してAPIを操作することもできます。gh-actions-cache 拡張機能。
オリジナル投稿 (2020 年 11 月 13 日)
で指摘したように、対応する問題、2つの実用的な回避策を使用して、新しいキャッシュを強制的に使用できます。これは、現在のキャッシュをクリアすることとまったく同じではありません(キャッシュ使用制限) ですが、目的は果たせます。
そのためには、キャッシュkey
(およびrestore-keys
) を変更する必要があります。キーが異なる場合、これはキャッシュ ミスとみなされ、新しいキーから開始されます。
ワークフロー ファイルを直接変更して、たとえばバージョン番号を追加することで、キャッシュ キーを変更できます。
key: ${{ runner.os }}-mycache-v1-${{ hashFiles(...) }}
新しいキャッシュを使用する場合は、異なるバージョン番号をコミットするだけです。
key: ${{ runner.os }}-mycache-v2-${{ hashFiles(...) }}
ワークフローファイルを変更せず、UIを使いたい場合は、秘密:
key: ${{ runner.os }}-mycache-${{ secrets.CACHE_VERSION }}-${{ hashFiles(...) }}
シークレットが変更されるたびに、新しいキャッシュが使用されます。
⚠️警告:キャッシュキーに使用されるシークレットはUIで「明らかに」。