Skip to content
Closed
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
17 changes: 17 additions & 0 deletions .github/prompts/renovate-pr.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
Review and fix this Renovate dependency update PR.

Hard requirements:

- Read and follow `AGENTS.md` and any project-specific `AGENTS.md` files.
- Treat this PR as a dependency maintenance PR only. Do not make unrelated
refactors or feature changes.
- Preserve public API and binary compatibility.
- Inspect the dependency/build-tool updates already made by Renovate.
- Run `make check-all`.
- If the build, formatting, compilation, or tests fail, fix the failures on
this PR branch.
- If no code changes are needed, leave the branch unchanged.
- Do not merge or close the PR.

When finished, summarize what you checked, what you fixed, and whether
`make check-all` passes.
46 changes: 46 additions & 0 deletions .github/renovate-config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
module.exports = {
platform: "github",
repositories: ["funfix/tasks"],
gitAuthor: "Renovate Bot <renovate@funfix.org>",
branchPrefix: "renovate/",
onboarding: false,
requireConfig: "optional",
recreateWhen: "always",
prHourlyLimit: 0,

extends: [":dependencyDashboard"],

enabledManagers: ["github-actions", "gradle", "gradle-wrapper", "sbt"],

ignorePaths: ["**/.gradle/**"],

packageRules: [
{
description: "Group all dependency updates into a single PR",
matchManagers: ["github-actions", "gradle", "gradle-wrapper", "sbt"],
groupName: "dependencies",
groupSlug: "all-dependencies",
group: {
commitMessageTopic: "dependencies",
commitMessageExtra: "",
},
},
{
description: "Only use stable dotted numeric JVM dependency versions",
matchManagers: ["gradle", "gradle-wrapper", "sbt"],
allowedVersions: "/^\\d+(?:\\.\\d+)+$/",
},
{
description: "Keep Scala on the 3.3.x line",
matchManagers: ["sbt"],
matchPackageNames: ["org.scala-lang:scala3-library_3"],
allowedVersions: "/^3\\.3\\.\\d+$/",
},
{
description: "Wait one week before proposing dependency updates",
matchManagers: ["github-actions", "gradle", "gradle-wrapper", "sbt"],
minimumReleaseAge: "7 days",
minimumReleaseAgeBehaviour: "timestamp-optional",
},
],
};
54 changes: 54 additions & 0 deletions .github/workflows/opencode-renovate.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
name: opencode-renovate

on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]

concurrency:
group: opencode-renovate-${{ github.event.pull_request.number }}
cancel-in-progress: true

jobs:
opencode:
if: |
github.event.pull_request.head.repo.full_name == github.repository &&
startsWith(github.event.pull_request.head.ref, 'renovate/') &&
github.actor != 'github-actions[bot]' &&
!github.event.pull_request.draft
runs-on: ubuntu-latest
permissions:
id-token: write
contents: write
pull-requests: write
issues: write
steps:
- name: Checkout Renovate PR branch
uses: actions/checkout@v6
with:
repository: ${{ github.event.pull_request.head.repo.full_name }}
ref: ${{ github.event.pull_request.head.ref }}
persist-credentials: false

- uses: actions/setup-java@v5
with:
java-version: "17"
distribution: temurin
- uses: sbt/setup-sbt@v1

- name: Load prompt file
id: load-prompt
run: |
echo "content<<EOF" >> $GITHUB_OUTPUT
cat .github/prompts/renovate-pr.md >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT

- name: Run opencode
uses: anomalyco/opencode/github@latest
env:
OPENCODE_API_KEY: ${{ secrets.OPENCODE_API_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
model: opencode-go/deepseek-v4-pro
use_github_token: true
prompt: ${{ steps.load-prompt.outputs.content }}
35 changes: 0 additions & 35 deletions .github/workflows/opencode-upgrades.yml

This file was deleted.

22 changes: 22 additions & 0 deletions .github/workflows/renovate.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: Renovate

on:
workflow_dispatch:
schedule:
# Runs every Monday at 09:00 UTC
- cron: "0 9 * * 1"

jobs:
renovate:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6

- name: Renovate
uses: renovatebot/github-action@v46.1.14
with:
configurationFile: .github/renovate-config.js
token: ${{ secrets.RENOVATE_TOKEN }}
# env:
# LOG_LEVEL: debug
22 changes: 3 additions & 19 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,26 +14,10 @@ Use the **jspecify-nullness** skill when working with JSpecify annotations, null

## Acceptance Criteria

For all work to be considered complete:
```sh
./gradlew check
```

## HOW-TOs
Work is not done until `make check-all` passes.

### Update project's dependencies

```bash
make dependency-updates-ci
```sh
make check-all
```

This will generate these reports:
- For the Gradle project(s):
- `./build/dependencyUpdates/report.html`
- `./tasks-jvm/build/dependencyUpdates/report.html`
- `./tasks-kotlin-coroutines/build/dependencyUpdates/report.html`

RULES:
- Never upgrade major versions (semver), instead ask the user or warn them!!!
- Never upgrade to SNAPSHOT, RC, or milestone versions.
- Fix breakage, but apply good judgement.
5 changes: 4 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
.PHONY: build
.PHONY: build check-all

build:
./gradlew build

check-all:
./gradlew check

dependency-updates:
./gradlew dependencyUpdates \
-Drevision=release \
Expand Down
4 changes: 2 additions & 2 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
arrow = "2.2.2.1"
binary-compatibility-validator = "0.18.1"
dokka = "2.2.0"
errorprone = "2.42.0" # DO NOT upgrade beyond 2.42.0 — it is the last version supporting JDK 17
errorprone = "2.49.0" # DO NOT upgrade beyond 2.42.0 — it is the last version supporting JDK 17
errorprone-plugin = "5.1.0"
jetbrains-annotations = "26.1.0"
jspecify = "1.0.0"
Expand All @@ -11,7 +11,7 @@ kover = "0.9.8"
nullaway = "0.13.4"
nullaway-plugin = "3.0.0"
publish-plugin = "0.36.0"
versions-plugin = "0.53.0"
versions-plugin = "0.54.0"
kotlinx-coroutines = "1.11.0"

[libraries]
Expand Down
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.5.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
2 changes: 1 addition & 1 deletion settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,5 @@ pluginManagement {
}

plugins {
id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0"
id("org.gradle.toolchains.foojay-resolver-convention") version "0.10.0"
}
Loading