aqua をより導入しやすくする最近の update (2021-12-29)
CLI ツールを YAML でバージョン管理できるツール aqua を開発しています。
ここ数日の update で aqua がより導入しやすくなったので紹介します。
例として、 tfcmt と github-comment を aqua で install する手順も紹介します。
執筆時点のバージョンは以下のとおりです。
- aqua: v0.8.8
- aqua-installer: v0.4.0
- aqua-renovate-config: 0.1.2
Update
-
aqua init
コマンドの導入 - aqua-renovate-config と aqua-installer を改善し、より簡潔に使えるようにした
- aqua-renovate-config の version を固定できるようにした
aqua init
コマンドの導入
aqua.yaml の雛形を生成する aqua init
コマンドを追加しました。
今までは適当なところから設定ファイルをコピペしたりしてましたが、コマンドで完結するようになりました。
$ aqua init
aqua-renovate-config と aqua-installer の改善
- aqua-installer で install する aqua のバージョンを aqua-renovate-config で追加設定なしに update できるようにした
- aqua-renovate-config の version を固定できるようにした
- aqua-installer で
PATH
の設定とaqua i
の実行まで行うようにした
より簡潔に記述できるようになり、 Renovate の Regex Manager の設定を書かなくてもよくなったので、 Renovate をよく知らない人でも導入しやすくなりました。
AS IS
GitHub Actions
- uses: aquaproj/aqua-installer@v0.3.0
with:
version: v0.8.8 # renovate: depName=aquaproj/aqua
- run: echo "${AQUA_ROOT_DIR:-$HOME/.aqua}/bin" >> $GITHUB_PATH
- run: aqua i -l
renovate.json
{
"extends": [
"github>aquaproj/aqua-renovate-config"
],
"regexManagers": [
{
"fileMatch": ["^\\.github/.*\\.ya?ml$"],
"matchStrings": [
"version: (?<currentValue>.*?) # renovate: depName=(?<depName>.*)"
],
"datasourceTemplate": "github-releases"
}
]
}
TO BE
- uses: aquaproj/aqua-installer@v0.4.0
with:
aqua_version: v0.8.8
{
"extends": [
"github>aquaproj/aqua-renovate-config#0.1.2"
]
}
aqua-renovate-config の version を固定できるようにした
これは利便性というより信頼性の改善ですが、 aqua-renovate-config の version を固定できるようにしました。
元々 Renovate Preset Config はバージョンを固定する方法がなく、
default branch のものを使うしかありませんでした。
それが今年の 11 月に version を固定できるようになっていることに気づきました。
そこで aqua-renovate-config でも tag を打って versioning することにしました。
現状 Renovate Preset 用の Renovate Manager がないのがネックですが、
突如 Preset の内容が変わって壊れることがなくなりました(元々そんなに変わるものでもないですが)。
aqua で tfcmt, github-comment を install する
GitHub Actions で tfcmt, github-comment を実行したいとします。
まず local に aqua を install します。
$ brew install aquaproj/aqua/aqua
$ echo 'export PATH=$HOME/.aqua/bin:$PATH' >> .bash_profile
次に対象のリポジトリにファイルを追加していきます。
- aqua.yaml
- renovate.json
- GitHub Actions
$ aqua init
$ aqua g suzuki-shunsuke/tfcmt suzuki-shunsuke/github-comment >> aqua.yaml
ちなみに Terraform や tfenv を aqua で install することも出来ます。
renovate.json
{
"extends": [
"github>aquaproj/aqua-renovate-config#0.1.2"
]
}
GitHub Actions (一部抜粋)
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: aquaproj/aqua-installer@v0.4.0
with:
aqua_version: v0.8.8
- run: github-comment -v
- run: tfcmt -v
以上、 github-comment と tfcmt を GitHub Actions で実行できました。加えて、 Renovate によって継続的に update されます。
よくシェルスクリプトや setup 用の Action でツールを install している場合、バージョンが古いままなのを見かけますが、 aqua だとそういうことがなくなります。
今回の update で aqua 自体も特別な設定無しで update されるようになり、とても便利になりました(人にも勧めやすくなりました)。
Dependabot と干渉しないように Renovate を導入する
今回の update とは無関係ですが、ついでに書いておきます。
aqua で継続的に自動 update をするには Renovate が必要ですが、既に Dependabot などを導入しているため、 Renovate を導入しづらいというケースもあるでしょう。
なにも考えずに導入すると、同じ package が Dependabot と Renovate 両方で update される(PR が作られる) ことになりかねません。
そういう場合、 Renovate の includePaths などで対象を aqua.yaml や .github 配下などに制限すれば干渉を避けられるでしょう。
Discussion