GitHub Actionsのキャッシュをクリアする 質問する

GitHub Actionsのキャッシュをクリアする 質問する

私は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で「明らかに」

おすすめ記事