renovate/lib/modules/manager/gomod
2023-03-14 05:09:15 +00:00
..
__fixtures__ refactor: lib/modules (#14488) 2022-03-04 09:04:02 +01:00
__snapshots__ fix(manager/gomod): resolve multi-line indirect dependencies (#19442) 2022-12-16 11:40:36 +00:00
artifacts.spec.ts fix(gomod): skip updating import path for incompatible versions (#20812) 2023-03-14 05:09:15 +00:00
artifacts.ts fix(gomod): skip updating import path for incompatible versions (#20812) 2023-03-14 05:09:15 +00:00
extract.spec.ts feat(config)!: default to rangeStrategy=auto, prefer update-lockfile (#19942) 2023-03-10 09:25:45 +01:00
extract.ts feat(config)!: default to rangeStrategy=auto, prefer update-lockfile (#19942) 2023-03-10 09:25:45 +01:00
index.ts refactor: convert ProgrammingLanguage to union type (#18748) 2022-11-05 08:49:57 +00:00
readme.md docs: gomod artifacts hostRules (#20222) 2023-03-04 07:38:17 +01:00
types.ts refactor(manager/go): make multiline parsing a function (#17074) 2022-08-09 19:51:43 +00:00
update.spec.ts fix(gomod): skip updating import path for incompatible versions (#20812) 2023-03-14 05:09:15 +00:00
update.ts fix(gomod): skip updating import path for incompatible versions (#20812) 2023-03-14 05:09:15 +00:00

Post-Update Options

You might be interested in the following postUpdateOptions:

  1. gomodTidy - if you'd like Renovate to run go mod tidy after every update before raising the PR
    1. This is implicitly enabled for major updates if the user has enabled the option gomodUpdateImportPaths
  2. gomodTidy1.17 - if you'd like Renovate to run go mod tidy -compat=1.17 after every update before raising the PR
  3. gomodTidyE - if you'd like Renovate to run go mod tidy -e after every update before raising the PR
  4. gomodUpdateImportPaths - if you'd like Renovate to update your source import paths on major updates before raising the PR
  5. gomodMassage - to enable massaging of all replace statements prior to running go so that they will be ignored

When Renovate is running using binarySource=docker (such as in the hosted Mend Renovate app) then it will pick the latest compatible version of Go to run, i.e. the latest 1.x release. Even if the go.mod has a version like go 1.14, Renovate will treat it as a ^1.14 constraint and not =1.14.

Indirect updates are disabled by default. To enable them, add a package rule such as:

{
  "packageRules": [
    {
      "matchManagers": ["gomod"],
      "matchDepTypes": ["indirect"],
      "enabled": true
    }
  ]
}

Private Modules Authentication

Before running the go commands to update the go.sum, Renovate exports git insteadOf directives in environment variables.

The following logic is executed prior to "artifacts" updating:

The token from the hostRules entry matching hostType=github and matchHost=api.github.com is added as the default authentication for github.com. For those running against github.com, this token will be the default platform token.

Next, all hostRules with both a token and matchHost will be fetched, except for any github.com one from above.

Rules from this list are converted to environment variable directives if they match any of the following characteristics:

  • No hostType is defined, or
  • hostType is go, or
  • hostType is a platform (github, gitlab, azure, etc.)