Other CI: the depdelta command
The same review from a pipeline on Gerrit, GitLab, Forgejo, Gitea, Bitbucket or Azure DevOps.
- Make an API key in Settings and store it in your CI as
DEPDELTA_API_KEY. - Add one job that runs
depdeltaon each change. Other CI has a ready file for Jenkins with Gerrit, GitLab CI, Forgejo Actions, Woodpecker, Bitbucket Pipelines and Azure Pipelines. - DepDelta posts its review: a Gerrit message, or one merge or pull request comment kept up to date.
docker pull ghcr.io/mbobiosio/depdelta-cli:latest
# or
pip install depdelta-cliIt needs Python 3.11 or later and git, or the Docker image. A shallow clone is fine. Changes that touch no manifest or lockfile finish at once.
What it posts
On GitLab, Forgejo, Gitea, Bitbucket and Azure DevOps: one comment, kept up to date. It is the same review the GitHub app posts.
--fail-on breaking met a Breaking updateFailed--fail-on. On Gerrit: a plain-text message on the patch set, with no vote.
Options
| Option | What it does |
|---|---|
--fail-on breaking | Exit 1 when an update is that risky or riskier, to fail the job. Riskiest first: breaking, unknown, review, safe. The default, never, never fails it. |
--wait 300 | Seconds to wait for release notes DepDelta hasn't read yet. After that the review posts as it stands. |
--print | Print the review instead of posting it. |
--base REV --head REV | Review any two commits, outside CI. The review is printed. |
--format text | text, markdown or commonmark. Each host gets the right one by default. |
Exit codes: 0 posted, or nothing to review; 1 the --fail-on verdict was met, or .depdelta.yml blocks new install-time code; 2 it couldn't review or post.
Try it on your machine
Run it in a checkout. Outside CI it prints the review instead of posting it:
DEPDELTA_API_KEY=dd_… depdelta --base origin/main --head HEADAdd --format text for plain text, and --fail-on to see the exit code your CI would get:
depdelta --base origin/main --head HEAD --format text --fail-on breakingdepdelta: Usage check: 1 use found.depdelta: 🔴 Breaking (1 update).DepDelta review: 🔴 Breaking Lockfile: 412 → 412 packages · 9 updated · no new install scripts eslint 8.57.0 → 9.0.0 · 🔴 Breaking 37 breaking changes and a platform requirement change. This repo appears to use: - tools/lint.js:12 · CLIEngine (removed: will break) Supply chain: dev dependency Must act: - Breaking · 9.0.0 · Moves AST traversal into SourceCode. - Breaking · 9.0.0 · Changes no-unused-vars default caughtErrors to 'all'. - Breaking · 9.0.0 · Adds stricter rule test validations. - and 34 more Migration guide: Migrate to ESLint 9 https://eslint.org/docs/latest/use/migrate-to-9.0.0 Every change in the range: https://depdelta.com/npm/eslint/compare/8.57.0...9.0.0echo $?1
--fail-on breaking, a Breaking update exits 1. What leaves your CI
DepDelta gets only the manifests and lockfiles that changed, and the file, line and name of each place your code uses a changed API. Your source code stays in CI, and your git host's token is only sent to your git host. Each key can run 240 reviews an hour.
DepDelta review: 🔴 Breaking
org.jetbrains.exposed:exposed-kotlin-datetime 0.40.1 → 0.61.0
2 breaking changes.
This repo appears to use
src/main/kotlin/db/Tables.kt:25·CurrentDateTime(changed: check this use)Must act
API changes (from published JVM bytecode)
method CurrentDateTime.invoke(): CurrentDateTimector CurrentTimestamp()final class CurrentDateTime extends Function → final class CurrentDateTime extends CurrentTimestampBasemethod KotlinInstantColumnType.notNullValueToDB(Object): Object → method KotlinInstantColumnType.notNullValueToDB(Instant): ObjectEvery change in the range on DepDelta