Renovateとは
DependaBotのようなライブラリのバージョンのアップデートをしてくれるサービス・ツールです。
https://www.whitesourcesoftware.com/free-developer-tools/renovate/
https://github.com/renovatebot/renovate
configのvalidateとは(やりたいこと)
Renovateの設定は、yamlファイルに書くのですが、実際動かしてみるまでその記述があっているのかなどの確認ができないと設定ファイル書くのが大変なので、CIでチェックできるようにしたいところです。
※ configファイルがvalidかどうかなので、設定が意図通り動くかのチェックはできないです。
この記事では、それをcircleCIで動かす方法についてです。ですが、他のCIツールやローカルで動かすときにも参考になると思います。
要約
- 公式Documentでは、CircleCIのOrbを使う方法が書かれている。
- しかし、3rdPartyのOrbなので、利用しづらい
- npmなどでvalidatorが公開されているので、それをCIで動かせば良い
公式で書かれてる Orb を使う
version: '2.1'
orbs:
renovate: daniel-shuy/renovate@2.1
workflows:
lint:
jobs:
- renovate/validate-config
CircleCIのorb(共通で利用できる設定みたいなもの)があって、Renovateのdocumentでもそれを利用するように書かれてるので、基本的にはそれを参考にすれば動かすことができます。
しかし、3rd-party(非公式)なOrbのため、3rd-patyのorbを許可していないとと以下のようにエラーになってしまいます。
# !/bin/sh -eo pipefail
# Orb daniel-shuy/renovate@2.1 not loaded. To use this orb, an organization admin must opt-in to using third party orbs in Organization Security settings.
#
# -------
# Warning: This configuration was auto-generated to show you the message above.
# Don't rerun this job. Rerunning will have no effect.
false
Exited with code exit status 1
CircleCI received exit code 1
3rd-party orbを許可するには
CircleCIの設定で、3rd-partyのorbを許可する設定があるので、そこで許可することができます。
注意
3rd-partyのorbを許可していいかは、各自責任を持って判断をしてください!(デフォルトは許可しない設定になっています)
3rd-partyのorbを許可するのはRepository個別の設定ではなく、Organizationの設定です。
しかも、特定のorbを許可するような設定ではなく、3rd-partyのorbすべてを利用可能になってしまいます。
個人開発ならあまり問題ないと思いますが、チーム・会社でのorganizationの場合、これを有効化するというのはあまり好ましい状態ではないと思います。
Note: In order to use uncertified orbs, your organization’s administrator must opt-in to allow 3rd-party uncertified orb usage on the Organization Settings > Security page for your org.
Orbを使わずに動かす
Orbを使わず validator を自前で動かすことができます。
ありがたいことに、npm package, docker image, GitHub actionsなどでvalidatorが公開されています。
https://docs.renovatebot.com/#renovate-development-and-use
たとえば、
npm packageを利用してvalidateを動かそうとすると
$ npm i -g renovate # yarn global add renovate
$ renovate-config-validator
という感じです。
ので、これらを CircleCI で動くように書いてしまえばOKとなります。
CircleCI で Renovate の config の validator を動かす
version: 2.1
executors:
default:
working_directory: ~/repo
docker:
- image: cimg/node:lts
jobs:
lint:
executor: default
steps:
- checkout
# renovate-config-validator を install したりなどはよしなに書く必要があります。
- run: yarn renovate-config-validator
workflows:
build:
jobs:
- lint
最終的にはこのような感じです。
(renovate-config-validatorのinstallやnodeのversionとかは調整してください)