アプリ開発備忘録

PlayStationMobile、Android、UWPの開発備忘録。

semantic versioningなDocker ImageをRenovateでdigestとバージョンのコメントを更新する

Renovateでは標準で対応してなさそうなのでカスタムマネージャを書きます。

こんな感じで更新されます。

docker:pinDigestsが無いとnewDigestが入ってこなくて更新できません。
github-actionsとDockerfileについて書きました。

{
  "extends": [
    "config:recommended",
    "docker:pinDigests",
  ],
  "customManagers": [
    {
      "customType": "regex",
      "fileMatch": ["\\.github/workflows/.*\\.ya?ml$"],
      "matchStrings": [
        "uses:\\s*docker://(?<depName>[^@\\s]+)@sha256:(?<digest>[0-9a-f]{64})(?:\\s*#\\s*(?<currentValue>\\S+))?"
      ],
      "datasourceTemplate": "docker",
      "depNameTemplate": "{{{depName}}}",
      "autoReplaceStringTemplate": "uses: docker://{{{depName}}}@{{{newDigest}}} # {{{newValue}}}",
    },
    {
      "customType": "regex",
      "fileMatch": ["Dockerfile"],
      "matchStrings": [
        "FROM\\s* (?<depName>[^@\\s]+)@sha256:(?<digest>[0-9a-f]{64})(?:\\s*#\\s*(?<currentValue>\\S+))?"
      ],
      "datasourceTemplate": "docker",
      "depNameTemplate": "{{{depName}}}",
      "autoReplaceStringTemplate": "FROM {{{depName}}}@{{{newDigest}}} # {{{newValue}}}",
    }
  ]
}