最近 dependabot でライブラリ更新を自動化している repository の dependabot.yml
を手入れしていたのでそのメモ。
Gradle: settings.gradle
で依存取得先を設定している場合に更新検知できないライブラリがある
2024-02-19 追記
以下の修正によって dependencyResulutionManagement
の設定は読まれるようになった:
github.com
追記おわり
Project の依存解決の設定を settings.gradle
の dependencyResolutionManagement
や pluginManagement
で記述している場合、一部のライブラリの更新検知ができないということが起こる。 Log を見てみると maven-metadata.xml
の取得先として Maven Central (plugin の場合はこれに加えて Gradle plugin portal) しか参照しておらず、たとえば Android の Jetpack library など Google Maven Repository に配置されているライブラリはバージョン情報の取得に失敗していることがわかる。
# e.g. AndroidX Core
updater | YYYY/MM/DD hh:mm:ss INFO <job_xxxxx> Checking if androidx.core:core-ktx 1.12.0 needs updating
proxy | YYYY/MM/DD hh:mm:ss [xxxx] GET https://repo.maven.apache.org:443/maven2/androidx/core/core-ktx/maven-metadata.xml
proxy | YYYY/MM/DD hh:mm:ss [xxxx] 404 https://repo.maven.apache.org:443/maven2/androidx/core/core-ktx/maven-metadata.xml
updater | YYYY/MM/DD hh:mm:ss INFO <job_xxxxx> Latest version is
updater | YYYY/MM/DD hh:mm:ss INFO <job_xxxxx> Requirements to unlock update_not_possible
updater | YYYY/MM/DD hh:mm:ss INFO <job_xxxxx> Requirements update strategy
updater | YYYY/MM/DD hh:mm:ss INFO <job_xxxxx> No update possible for androidx.core:core-ktx 1.12.0
build.gradle
で依存解決の設定を記述している場合は設定した repository が maven-metadata.xml
の取得先に追加されていて期待通りにバージョン情報を取得できているので参照先の取得のために settings.gradle
を読んでいないのだと思われる。 Dependabot のコードを何となく眺めた感じでもそうっぽい気がする。根拠にしてるのは以下のファイル:
github.com
これに関する issue はすでに報告されている:
github.com
以下の issue のコメントに workaround が示されており、 private package へアクセスするための設定に使われる registries
にアクセスしたい maven repository について追記してそれを参照するようにすれば metadata の取得先に追加される。
github.com
docs.github.com
version: 2
registries:
maven-google:
type: maven-repository
url: "https://dl.google.com/dl/android/maven2/"
updates:
- package-ecosystem: "gradle"
directory: "/"
registries:
- maven-google
設定を追記した後の実行ログは以下のような感じ。 maven-metadata.xml
の取得時のアクセス先に https://dl.google.com:443/dl/android/maven2/
が増えて、そちらで取得成功しておりバージョン情報の評価ができていることがわかる。
updater | YYYY/MM/DD hh:mm:ss INFO <job_xxxxx> Checking if androidx.core:core-ktx 1.12.0 needs updating
proxy | YYYY/MM/DD hh:mm:ss [xxxx] GET https://repo.maven.apache.org:443/maven2/androidx/core/core-ktx/maven-metadata.xml
proxy | YYYY/MM/DD hh:mm:ss [xxxx] 404 https://repo.maven.apache.org:443/maven2/androidx/core/core-ktx/maven-metadata.xml
proxy | YYYY/MM/DD hh:mm:ss [xxxx] GET https://dl.google.com:443/dl/android/maven2/androidx/core/core-ktx/maven-metadata.xml
proxy | YYYY/MM/DD hh:mm:ss [xxxx] 200 https://dl.google.com:443/dl/android/maven2/androidx/core/core-ktx/maven-metadata.xml
updater | YYYY/MM/DD hh:mm:ss INFO <job_xxxxx> Latest version is 1.12.0
updater | YYYY/MM/DD hh:mm:ss INFO <job_xxxxx> No update needed for androidx.core:core-ktx 1.12.0
GitHub Actions: repository local な composite action 内で使用している action の更新検知をしたい
Repository 内で composite action を定義している場合、その中で使われている action の更新を検知するには /
で設定しているのとは別にそれぞれの composite action に対して設定を書く必要がある。
参考:
qiita.com
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
- package-ecosystem: "github-actions"
directory: "/.github/actions/my-action1"
- package-ecosystem: "github-actions"
directory: "/.github/actions/my-action2"
directory
の指定にワイルドカードを使えるようにする feature request はあるにはあるけど何年も動いてないのであまり期待できなそう:
github.com
おわりに
セットアップまで含めて Renovate 使うのとどっちが楽なんだろ