Renovateが動くリポジトリにて、途中からRenovate対象外になったライブラリがありました。
「Renovate対象外になる前に作られたセキュリティアップデートのプルリクはそのままになるだろう」と考えていたところ、対象外になった途端にCloseされてしまいました。
「セキュリティアップデートのプルリクは、そのまま残したり、Renovateが作るようにしてほしい」と感じました。そこで、状況の再現と対応策を調査してみたことから、メモを残します。
目次
環境
- renovatebot/github-action v43.0.4
- axios 1.7.3
- セキュリティアップデートを作りやすい、マイナーバージョンで脆弱性があるライブラリ
- synk情報よりaxiosのこのバージョンが適切そう
なお、Organizationの設定は、以前の記事と同様とします。
GitHub App installation access token + GitHub ActionsによるSelf-Hosted Renovateで、プライベートリポジトリのgemやnpmパッケージが含まれるGemfileを更新する - メモ的な思考的な
また、Renovateも、以前の記事同様に GitHub Actionsによる Self-Hosted Renovateとします。
状況を再現する
リポジトリの準備
Renovateでセキュリティアップデートのプルリクを作れるようにするため、以下の設定を行います。
- 以前作ったGitHub Appを、今回のリポジトリに追加する
- Secrets and variables > Actions > Repository secrets に、以前同様のキーと値を、Renovateが使う環境変数を追加する
- RENOVATE_APP_ID
- RENOVATE_APP_PRIVATE_KEY
- GitHubのAdvanced Security > Dependency graph を
Enableにする
最初は「Renovate対象がある」という設定を行う
各ファイルの準備
renovate.json5
マイナー・パッチバージョンアップのみ、Renovateの対象とします。
{ // Renovateの基本設定 $schema: "https://docs.renovatebot.com/renovate-schema.json", // すべて実行する mode: "full", // ベース設定を継承 extends: [ "config:recommended" ], // automergeを無効化 automerge: false, // 作成するプルリクは、いったん無制限 prConcurrentLimit: 0, prHourlyLimit: 0, // タイムゾーン設定(日本時間) timezone: "Asia/Tokyo", // パッケージルール packageRules: [ { // すべてのパッケージに対して matchPackageNames: ["*"], // メジャーアップデートを無効化 matchUpdateTypes: ["major"], enabled: false }, { // すべてのパッケージに対して matchPackageNames: ["*"], // マイナー・パッチアップデートのみ有効 matchUpdateTypes: ["minor", "patch"], enabled: false } ] }
.github/workflows/renovate.yml
Self-Hosted Renovate とするためのGitHub Actionsを設定します。
name: Renovate on: # 手動実行 workflow_dispatch: inputs: logLevel: description: 'Log Level' type: choice required: false default: 'debug' options: - debug - info - warn - error jobs: renovate: runs-on: ubuntu-24.04 steps: - name: Checkout uses: actions/checkout@v4 - name: Generate token id: generate-token # https://github.com/actions/create-github-app-token uses: actions/create-github-app-token@v2.0.6 with: app-id: ${{ secrets.RENOVATE_APP_ID }} private-key: ${{ secrets.RENOVATE_APP_PRIVATE_KEY }} owner: ${{ github.repository_owner }} - name: Self-hosted Renovate # https://github.com/renovatebot/github-action uses: renovatebot/github-action@v43.0.4 env: LOG_LEVEL: ${{ github.event.inputs.logLevel || 'info' }} RENOVATE_REPOSITORIES: ${{ github.repository }} with: token: ${{ steps.generate-token.outputs.token }}
package.json
npm install axios@1.7.3 してできたpackage.json (と package-lock.json) を用意します。
{ "dependencies": { "axios": "^1.7.3" } }
プルリクの作成とマージ
上記を含むこちらのプルリクを作成・マージします。
https://github.com/thinkami-renovate-sandbox/security-update-for-disabled-package/pull/1
GitHub Actionsの実行
リポジトリのActionsタブから Renovate を選択し、 Run workflow で実行します。
正常に終了すると、新しくプルリクが2つ作成されます。セキュリティアップデートと、普通のアップデートです。
「パッケージをRenovate対象外とする」へと設定変更する
マイナー・パッチアップデートも対象外とするよう、設定を変更します。
{ matchPackageNames: ["*"], matchUpdateTypes: ["minor", "patch"], enabled: false // 変更箇所 }
この内容でプルリクを作り、マージします。
https://github.com/thinkami-renovate-sandbox/security-update-for-disabled-package/pull/5/files
マージ後、GitHub ActionsでRenovateを動かすと、プルリクがすべてcloseされました。再現できたようです。
「Renovate対象外でも、セキュリティアップデートのプルリクは作成する」設定へと変更する
RenovateのGitHubを調べたところ、discussionに情報がありました。
Perform only security updates? · renovatebot/renovate · Discussion #15490
Renovateのドキュメントには true という値を設定できるとは書かれていないのですが、試してみます。
https://docs.renovatebot.com/configuration-options/#vulnerabilityalerts
vulnerabilityAlerts をルート直下に追加しました。
{ // ... // セキュリティアップデートのプルリクは作成する <= 追加 vulnerabilityAlerts: { "enabled": true }, // パッケージルールは同じ packageRules: [ // ... ] }
その設定のプルリクを作成・マージしました。
https://github.com/thinkami-renovate-sandbox/security-update-for-disabled-package/pull/6
マージ後にGitHub Actionsを実行したところ、セキュリティアップデートのプルリクがOpenされていました。
https://github.com/thinkami-renovate-sandbox/security-update-for-disabled-package/pulls
ブランチ名やプルリクのタイトル、lockfileの更新から考えると、 true にしたときは公式ドキュメントの default に書かれた設定のプルリクが作られるようです。
https://docs.renovatebot.com/configuration-options/#vulnerabilityalerts
また、プルリクの詳細を確認すると、一度Closeされたものが再Openされたようでした。
再度 GitHub Actions を実行しましたが、OpenされたセキュリティアップデートのプルリクはCloseされることもありませんでした。
以上で、やりたかったことが実現できました。
ソースコード
GitHubに上げました。
https://github.com/thinkami-renovate-sandbox/security-update-for-disabled-package



