Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 14 additions & 6 deletions docs/usage/key-concepts/minimum-release-age.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,13 +91,21 @@ The recommendation is to set `internalChecksFilter=strict` when using `minimumRe

Depending on your manager, datasource and the given package(s), it may be that some updates provide a release timestamp that can have `minimumReleaseAge` enforced.

It's most likely the case that `major`, `minor`, and `patch` update types will have a corresponding `minimumReleaseAge`.

Generally, Renovate does not provide release timestamps for `digest` updates.

The `replacement` update type [does not currently](https://github.com/renovatebot/renovate/issues/39400) provide release timestamps.
<!-- markdownlint-disable MD060 -->

The `lockFileMaintenance` update type does not provide release timestamps, as the package manager performs the required changes to update package(s).
| Update Type | Supports `minimumReleaseAge`? | Notes |
| --------------------- | ----------------------------- | --------------------------------------------------------------------------------------------------------- |
| `major` | ✅ | Depends on the Manager, Datasource, and package(s) |
| `minor` | ✅ | Depends on the Manager, Datasource, and package(s) |
| `patch` | ✅ | Depends on the Manager, Datasource, and package(s) |
| `pin` | ❌ | [Not yet supported](https://github.com/renovatebot/renovate/issues/40288) |
| `digest` | 🟡 | Generally not supported. Depends on the Manager, Datasource, and package(s) |
| `pinDigest` | ❌ | [Not yet supported](https://github.com/renovatebot/renovate/issues/40288) |
| `lockFileMaintenance` | ❌ | Not possible, as we delegate to the package manager to perform the required changes to update package(s). |
| `lockFileUpdate` | ❌ | |
| `rollback` | ❌ | |
| `bump` | ❌ | |
| `replacement` | ❌ | [Not yet supported](https://github.com/renovatebot/renovate/issues/39400) |

You can validate which update types may have release timestamps by following something similar to how [verify if the registry you're using](#which-registries-support-release-timestamps).

Expand Down
26 changes: 26 additions & 0 deletions docs/usage/self-hosted-configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,32 @@ Please also see [Self-Hosted Experimental Options](./self-hosted-experimental.md

## allowShellExecutorForPostUpgradeCommands

Enabling this allows `postUpgradeTasks`' `commands` to execute as if they're in a shell.

This takes effect if you are using shell semantics, such as:

```json title="allowShellExecutorForPostUpgradeCommands=true will allow this to run as expected"
{
"postUpgradeTasks": {
"commands": ["echo '...' > go.mod", "go mod tidy || true"],
"fileFilters": ["**/*.go"],
"executionMode": "branch"
}
}
```

This will not affect calling a script like:

```json title="allowShellExecutorForPostUpgradeCommands=true will have not effect"
{
"postUpgradeTasks": {
"commands": ["bash .scripts/post-yarn-update.sh"],
"fileFilters": ["yarn.lock", "**/*.js"],
"executionMode": "update"
}
}
```

## allowedCommands

A list of regular expressions that decide which commands in `postUpgradeTasks` are allowed to run.
Expand Down
2 changes: 2 additions & 0 deletions lib/logger/index.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -478,6 +478,7 @@ describe('logger/index', () => {
secrets: {
foo: 'barsecret',
},
someDate: new Date('2021-04-05T06:07Z'),
someFn: () => 'secret"password',
someLuxonDate: DateTime.fromISO('2020-02-29'),
someLuxonDateTime: DateTime.fromISO('2020-02-29T01:40:21.345+00:00'),
Expand All @@ -495,6 +496,7 @@ describe('logger/index', () => {
expect(logged.content).toBe('[content]');
expect(logged.prBody).toBe(prBody);
expect(logged.secrets.foo).toBe('***********');
expect(logged.someDate).toBe('2021-04-05T06:07:00.000Z');
expect(logged.someFn).toBe('[function]');
expect(logged.someLuxonDate).toBe('2020-02-29T00:00:00.000+00:00');
expect(logged.someLuxonDateTime).toBe('2020-02-29T01:40:21.345+00:00');
Expand Down
Loading