Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

任意のパスをビルドキャッシュの対象外とする #2

Closed
t2y opened this issue Dec 4, 2021 · 14 comments · Fixed by #3
Closed

任意のパスをビルドキャッシュの対象外とする #2

t2y opened this issue Dec 4, 2021 · 14 comments · Fixed by #3
Assignees
Labels
enhancement New feature or request

Comments

@t2y
Copy link
Contributor

t2y commented Dec 4, 2021

java (maven?) では -SNAPSHOT という接尾辞を使って開発中の jar のバージョンを表す。キャッシュを使うと SNAPSHOT の扱いでトラブルがあったため、SNAPSHOT を取り除いてビルドキャッシュを扱えないかを調査する。

@t2y t2y self-assigned this Dec 4, 2021
@t2y t2y added the enhancement New feature or request label Dec 4, 2021
@t2y
Copy link
Contributor Author

t2y commented Dec 4, 2021

github actions のドキュメントには exclude 設定についてなにも書いていない。

@t2y
Copy link
Contributor Author

t2y commented Dec 4, 2021

一方で cache の github actions の readme には ! を付けると exclude されるような記述がある。

- name: Cache multiple paths
  uses: actions/cache@v2
  with:
    path: |
      ~/cache
      !~/cache/exclude
    key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }}

https://github.com/actions/cache

@t2y
Copy link
Contributor Author

t2y commented Dec 4, 2021

v2 で exclude パターンが定義できるようになったとあるので github actions のドキュメントにはまだ書かれてないだけっぽいな。

Depending on the environment, huge packages might be pre-installed in the global cache folder. With actions/cache@v2 you can now exclude unwanted packages with exclude pattern

https://github.com/actions/cache/blob/main/examples.md#c---nuget

@t2y
Copy link
Contributor Author

t2y commented Dec 4, 2021

glob パターンでパスを渡せるなら1つだけ exclude したいパスを渡せるようにできるかどうか。デフォルトで空のパスを設定して actions/cache が無視してくれるかどうか。

@t2y
Copy link
Contributor Author

t2y commented Dec 4, 2021

inputs の空の文字列を無視してそう!

export function getInputAsArray(
    name: string,
    options?: core.InputOptions
): string[] {
    return core
        .getInput(name, options)
        .split("\n")
        .map(s => s.trim())
        .filter(x => x !== "");
}

https://github.com/actions/cache/blob/main/src/utils/actionUtils.ts#L56

@t2y
Copy link
Contributor Author

t2y commented Dec 4, 2021

なんか actions/cache がそもそも意図したディレクトリをキャッシュしてないような気がする。

@t2y
Copy link
Contributor Author

t2y commented Dec 4, 2021

path への複数の値の渡し方を typo してて、それがエラーにならず動いてて意図したパスが設定されてなかった (´・ω・`)

@t2y
Copy link
Contributor Author

t2y commented Dec 4, 2021

生成されたキャッシュをクリアする仕組みがないのでクリーンな環境でのテストが難しい。

@t2y
Copy link
Contributor Author

t2y commented Dec 4, 2021

この設定だと com 配下のものをキャッシュから除外してくれないようにみえる。

actions/cache@v2
  with:
    path:
      ~/.m2/repository
      !~/.m2/repository/com

@t2y
Copy link
Contributor Author

t2y commented Dec 4, 2021

なんかディレクトリのマッチングはバグってみるみたい。えーって感じやな。

@t2y
Copy link
Contributor Author

t2y commented Dec 4, 2021

actions/cache#494 (comment) でワークアラウンドが書いてあった。次の設定なら意図した振る舞いになった。まったく意味不明。

actions/cache@v2
  with:
    path:
      ~/.m2/repository/*
      !~/.m2/repository/com

@t2y
Copy link
Contributor Author

t2y commented Dec 4, 2021

ワイルドカードの階層があってないとダメっぽいな。この除外設定だと com/subdomain が除外されない。

 path:
   ~/.m2/repository/*
   !~/.m2/repository/com/subdomain

@t2y
Copy link
Contributor Author

t2y commented Dec 4, 2021

ここに書いてあったことの意味をようやく理解できた。

          path: |
            ~/.m2/repository/*/*/*
            !~/.m2/repository/org/apache/pulsar

actions/toolkit#713 (comment)

t2y added a commit that referenced this issue Dec 6, 2021
refs #2 任意のパスをビルドキャッシュから除外する custom-cache-path を追加する
@t2y
Copy link
Contributor Author

t2y commented Dec 6, 2021

マージした。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
1 participant