ラベル renovate の投稿を表示しています。 すべての投稿を表示
ラベル renovate の投稿を表示しています。 すべての投稿を表示

2025年10月14日火曜日

Gitlab で renovate を使うときの基本設定

Gitlab で renovate を使うときの基本設定

概要

renovate-runner は使わずまずはローカルから実行する際の最低限の設定について紹介します

環境

  • Ubuntu 24.04.3
  • nodejs 22.14.0
  • renovate 41.144.1

renovate.json

このファイルは renovate を実行するターゲットのリポジトリ配下に配置します

{
  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
  "extends": [
    "config:recommended"
  ],
  "automergeStrategy": "squash",
  "ignorePaths": [
    "**/archive/**"
  ]
}

renovate コマンド

GITHUB_COM_TOKEN=ghp_xxx LOG_LEVEL=info renovate --platform=gitlab --endpoint=https://your-gitlab-com-url/api/v4 --username=oauth2 --token=glpat-xxx your/repo

トラブルシューティング

curl 'https://index.docker.io/v2/library/pthon/tags/list?n=10000'
{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"repository","Class":"","Name":"library/pthon","Action":"pull"}]}]}

リポジトリ名が間違っている場合に認証エラーになるようです

最後に

renovate を動かす場合には必ずターゲットのリポジトリに renovate.json を配置しましょう
配置しないでも動かすことはできますが Gitlab の場合などは MR などが作成されないので注意しましょう

2025年4月3日木曜日

Gitlab で renovate を試す

Gitlab で renovate を試す

概要

gitlab のリポジトリに対して renovate を実行してみました
CLI で直接実行する方法と CI を使う方法を紹介します

環境

  • Gitlab 17.8

CLI

  • LOG_LEVEL=debug renovate --platform=gitlab --endpoint=https://your-gitlab-endpoint/api/v4 --username=oauth2 --token=glpat-xxx user/repo

CI

renovate/renovate-runnerを自身の Gitlab にミラーして使います
fork なりミラーしたリポジトリ名を yaml に記載します
Gitlab.com であれば以下のままで OK です

スキャン対象のリポジトリを RENOVATE_EXTRA_FLAGS に追加することで管理するようです

stages:
  - test

include:
  - project: 'renovate/renovate-runner'
    file: '/templates/renovate.gitlab-ci.yml'

renovate:
  stage: test
  variables:
    RENOVATE_EXTRA_FLAGS: "--platform=gitlab --endpoint=https://your-gitlab-endpoint/api/v4 --username=oauth2 user/repo"
  rules:
    - if: '$CI_PIPELINE_SOURCE == "schedule"'
    - if: '$CI_PIPELINE_SOURCE == "push"'

CI 変数

RENOVATE_TOKEN は必須なので CI の変数に設定しましょう
設定する値は Gitlab の Personal Access Token で OK です

GITHUB_COM_TOKEN はあったほうがいいです
Github アカウントがある場合は Github の Personal Access Token を取得して設定しましょう

最後に

基本は CI を使って定期的に MR を作る感じになるかなと思います
ただ更新対象が自動で決まるのとデフォルトだと2MRしか作成してくれないのでそこは変数による調整が必要かもです

また当然ですがバージョンを固定しているケースは renovate でもバージョンを上げられないのでそこは手動によるバージョン管理になります

参考サイト

2025年4月1日火曜日

renovate を bitbucket で使ってみる

renovate を bitbucket で使ってみる

概要

前回ローカルで renovate を動かしてみました
今回は bitbucket と連携して使ってみます

bitbucket からアプリパスワードの作成

https://bitbucket.org/account/settings/app-passwords/ から作成できます
作成するパスワードに必要な権限は以下のとおりです

  • account -> Account: Read
  • team -> Workspace membership: Read
  • issue:write -> Issues: Write
  • pullrequest:write -> Pull requests: Write

renovate.json の修正

手動で実行するので schedule の部分はいつでも OK にします
特定の時間帯で renovate が PR を作成可能にする場合は時間を指定しましょう

{
  "extends": [
    "config:recommended"
  ],
  "enabledManagers": [
    "pipenv"
  ],
  "packageRules": [
    {
      "description": "Schedule all packages update on Sunday nights (9 PM - 12 AM)",
      "matchManagers": [
        "pipenv"
      ],
      "groupName": "pip dependencies",
      "schedule": ["* * * * *"],
      "automerge": true,
      "automergeType": "branch"
    }
  ],
  "pipenv": {
    "lockFileMaintenance": {
      "enabled": true,
      "schedule": ["* * * * *"]
    },
    "fileMatch": [
      "(^|/)Pipfile$"
    ]
  }
}

package.json の修正

bitbucket のユーザ名と先ほど発行したアプリパスワードを使って認証するように修正します
ユーザ名/パスワードは環境変数で渡せるようにしましょう

{
  "dependencies": {
    "renovate": "^39.222.1"
  },
  "scripts": {
    "renovate": "renovate --platform=bitbucket --username=$BITBUCKET_USERNAME --password=$BITBUCKET_TOKEN team-name/repo-name",
    "renovate_help": "renovate --help"
  }
}

team-name/repo-name の部分は自身の bitbucket 上で管理しているチーム名とリポジトリ名に変更してください
リポジトリ名を指定せずに --autodiscover=true にしても OK ですがリポジトリが大量にある場合は精査に時間がかかるのでリポジトリ名を指定したほうが速いです

トラブルシュート: PR が作成されない場合は

Renovate 用のアカウントを作成する必要があるので作成しましょう
そしてそのアカウントからアプリパスワードを取得し設定します

動作確認

とりあえずローカルで動くか試しましょう
認証情報の部分は適宜変更してください

  • BITBUCKET_USERNAME=name BITBUCKET_TOKEN=password LOG_LEVEL=debug npm run renovate

もしこれで master ブランチ上で更新するべきパッケージがあった場合には MR を作成してくれます

最後に

あとは renovate コマンドを定期的に実行する CI を設定するだけです
bitbucket の場合 Mend という専用のアプリがあるのでこれを使うのが一番簡単です

参考サイト

2025年3月31日月曜日

ローカルで renovate を実行し python のパッケージバージョンの管理をする

ローカルで renovate を実行し python のパッケージバージョンの管理をする

概要

renovate は nodejs で書かれた自動パッケージ更新ツールです
python の pipenv でも使えるのでローカルで試してみました
なおローカルで試す場合には実際にブランチやPRの作成はされません
本来は CI と組み合わせて使います

環境

  • macOS 15.3.2
  • node 20.18.2
    • renovate 39.222.1

インストール

  • nvm use 20.18.2 --save
  • npm i renovate

renovate.json の作成

{
  "extends": [
    "config:recommended"
  ],
  "enabledManagers": [
    "pipenv"
  ],
  "packageRules": [
    {
      "description": "Schedule all packages update on Sunday nights (9 PM - 12 AM)",
      "matchManagers": [
        "pipenv"
      ],
      "groupName": "pip dependencies",
      "schedule": [
        "* 21-23 * * 0"
      ],
      "automerge": true,
      "automergeType": "branch"
    }
  ],
  "pipenv": {
    "lockFileMaintenance": {
      "enabled": true,
      "schedule": [
        "monthly"
      ]
    },
    "fileMatch": [
      "(^|/)Pipfile$"
    ]
  }
}

package.json への追記

{
  "dependencies": {
    "renovate": "^39.222.1"
  },
  "scripts": {
    "renovate": "renovate --platform=local --dry-run=full",
    "renovate_help": "renovate --help"
  }
}

renovate 実行

  • RENOVATE_CONFIG_FILE=renovate.json npm run renovate

ローカルで実行する場合にはいろいろとオプションが必要です
コマンドの実体は以下です

  • RENOVATE_CONFIG_FILE=renovate.json renovate --platform=local --dry-run=full

これで Pipfile に書かれたパッケージが更新されるはずです

npx で直接実行もできます

  • RENOVATE_CONFIG_FILE=renovate.json npx renovate --platform=local --dry-run=full

local 動作では --dry-run=lookup になっており Pipfile.lock が作成されないので上書きします
LOG_LEVEL=debug を指定すると詳細なログが確認できます
またまだ renovate.json がない場合には --require-config=ignore を設定してください

エラーが出なければ OK です

動作確認

通常 renovate は更新があった場合にブランチからのPRが作成されます
ただ platform=local 実行の場合にはブランチの作成が許可されていないので platform=bitbucket などを指定して実際の挙動を確認しましょう

== の場合

当然ですがバージョンが固定されているので更新されません

isort = "==6.0.0"

で renovate を実行しても 6.0.1 には更新されない

~=の場合

この場合は 6.0.1 に更新されます

isort = "~=6.0.0"

で Pipfile.lock が更新され 6.0.1 がインストールされます

最後に

ローカルで renovate を試してみました
ローカルでは設定ファイルの確認くらいしかできないので実際はリモートリポジトリと組み合わせて使います
次回は bitbucket と組み合わせてみたいと思います

参考サイト