diff --git a/.github/renovate.json5 b/.github/renovate.json5 new file mode 100644 index 0000000..df48a5b --- /dev/null +++ b/.github/renovate.json5 @@ -0,0 +1,97 @@ +// ******************************************************************************* +// Copyright (c) 2026 Contributors to the Eclipse Foundation +// +// See the NOTICE file(s) distributed with this work for additional +// information regarding copyright ownership. +// +// This program and the accompanying materials are made available under the +// terms of the Apache License Version 2.0 which is available at +// https://www.apache.org/licenses/LICENSE-2.0 +// +// SPDX-License-Identifier: Apache-2.0 +// ******************************************************************************* +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": [ + "config:base", + ":dependencyDashboard", + ":semanticCommits" + ], + "timezone": "UTC", + "schedule": [ + "at any time" + ], + "lockFileMaintenance": { + "enabled": true, + "schedule": [ + "at any time" + ] + }, + "semanticCommits": "enabled", + "commitMessagePrefix": "chore(deps):", + "prConcurrentLimit": 5, + "prCreation": "auto", + "automerge": false, + "customManagers": [ + { + "customType": "regex", + "fileMatch": [ + "^tools/lockfiles/apm\\.lock\\.json$" + ], + "matchStrings": [ + "\"version\":\\s*\"(?[^\"]+)\"", + "\"url\":\\s*\"https://github\\.com/microsoft/apm/releases/download/v(?[^/]+)/[^\"]+\",\\s*\"sha256\":\\s*\"(?[^\"]+)\"" + ], + "datasourceTemplate": "github-releases", + "depNameTemplate": "microsoft/apm", + "versioningTemplate": "semver" + }, + { + "customType": "regex", + "fileMatch": [ + "^tools/lockfiles/opencode\\.lock\\.json$" + ], + "matchStrings": [ + "\"version\":\\s*\"(?[^\"]+)\"", + "\"url\":\\s*\"https://github\\.com/anomalyco/opencode/releases/download/v(?[^/]+)/[^\"]+\",\\s*\"sha256\":\\s*\"(?[^\"]+)\"" + ], + "datasourceTemplate": "github-releases", + "depNameTemplate": "anomalyco/opencode", + "versioningTemplate": "semver" + }, + { + "customType": "regex", + "fileMatch": [ + "versions\\.yaml$" + ], + "matchStrings": [ + "apm:\\n\\s+version:\\s+(?\\d+\\.\\d+\\.\\d+)" + ], + "datasourceTemplate": "github-releases", + "depNameTemplate": "microsoft/apm", + "versioningTemplate": "semver" + }, + { + "customType": "regex", + "fileMatch": [ + "versions\\.yaml$" + ], + "matchStrings": [ + "opencode:\\n\\s+version:\\s+(?\\d+\\.\\d+\\.\\d+)" + ], + "datasourceTemplate": "github-releases", + "depNameTemplate": "anomalyco/opencode", + "versioningTemplate": "semver" + } + ], + "enabledManagers": [ + "custom.regex" + ], + "ignoreDeps": [], + "labels": [ + "type:dependencies" + ], + "reviewers": [ + "team:maintainers" + ] +} diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 2b6472e..63068b4 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -23,6 +23,23 @@ concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true jobs: + changes: + name: Detect changed files + runs-on: ubuntu-24.04 + permissions: + contents: read + outputs: + daily: ${{ steps.filter.outputs.daily }} + steps: + - name: Checkout (GitHub) + uses: actions/checkout@v7 + - uses: dorny/paths-filter@v4 + id: filter + with: + filters: | + daily: + - '.github/workflows/daily.yml' + - '.github/renovate.json5' build: strategy: matrix: @@ -95,10 +112,22 @@ jobs: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin ./scripts/publish.sh --${{ matrix.os }} "main" fi + daily: + secrets: inherit + needs: [changes] + if: needs.changes.outputs.daily == 'true' + uses: ./.github/workflows/daily.yml + permissions: + actions: write + contents: write + issues: write + pages: write + pull-requests: write + id-token: write overall-result: name: build/overall-result runs-on: ubuntu-24.04 - needs: [build] + needs: [build, daily] if: ${{ !cancelled() }} permissions: {} steps: diff --git a/.github/workflows/daily.yml b/.github/workflows/daily.yml new file mode 100644 index 0000000..966b46c --- /dev/null +++ b/.github/workflows/daily.yml @@ -0,0 +1,60 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* +name: Daily Maintenance +permissions: + contents: write + issues: write + pull-requests: write +on: + # Runs every day at midnight UTC + schedule: + - cron: '0 0 * * *' + # Manually trigger the workflow from the GitHub UI + workflow_dispatch: {} + workflow_call: +jobs: + maintenance: + uses: eclipse-score/cicd-workflows/.github/workflows/daily.yml@8d80e8df150cae21d53cbc8031d0f970648f7a67 # v0.0.3 + permissions: + contents: write + issues: write + pull-requests: write + pages: write + id-token: write + actions: write + renovate: + runs-on: ubuntu-latest + if: ${{ github.event_name == 'schedule' }} + permissions: + contents: read + steps: + - name: Checkout config file + uses: actions/checkout@v7 + - name: Run renovate + uses: renovatebot/github-action@5402b206248e5a8c8427a15102702eb9c1793efc # v46.2.4 + with: + # Pull requests from forks do not have access to secrets + token: ${{ secrets.RENOVATE_TOKEN }} + configurationFile: .github/renovate.json5 + env: + LOG_LEVEL: debug + validate-renovate-config: + name: Validate Renovate config + runs-on: ubuntu-latest + permissions: + contents: read + steps: + - name: Checkout config file + uses: actions/checkout@v7 + - name: Validate Renovate config + run: npx --yes --package renovate renovate-config-validator .github/renovate.json5 diff --git a/src/s-core-devcontainer/.devcontainer/s-core-local/versions.yaml b/src/s-core-devcontainer/.devcontainer/s-core-local/versions.yaml index 912e77a..95ea793 100644 --- a/src/s-core-devcontainer/.devcontainer/s-core-local/versions.yaml +++ b/src/s-core-devcontainer/.devcontainer/s-core-local/versions.yaml @@ -52,9 +52,9 @@ ripgrep: lcov: version: 2.0 apm: - version: 0.27.0 + version: 0.30.0 opencode: - version: 1.18.15 + version: 1.18.31 pkg_config: version: 1.8.1 libcairo2_dev: diff --git a/tools/README.md b/tools/README.md index 0642aff..e7b39aa 100644 --- a/tools/README.md +++ b/tools/README.md @@ -40,10 +40,10 @@ access while Bazel downloads and caches the executable. | Command | Version | Purpose | | --- | --- | --- | | `actionlint` | `1.7.7` | Check GitHub Actions workflow files | -| `apm` | `0.27.0` | Manage APM packages | +| `apm` | `0.30.0` | Manage APM packages | | `bazelisk` | `1.27.0` | Run the Bazel version selected by a repository | | `buildifier` | `8.2.1` | Format and lint Bazel files | -| `opencode` | `1.18.15` | Run the OpenCode CLI | +| `opencode` | `1.18.31` | Run the OpenCode CLI | | `pre-commit` | `4.5.1` | Run repository pre-commit hooks | | `ruff` | `0.11.13` | Check and format Python code | | `shellcheck` | `0.10.0` | Check shell scripts | diff --git a/tools/lockfiles/apm.lock.json b/tools/lockfiles/apm.lock.json index ad01b22..940fbee 100644 --- a/tools/lockfiles/apm.lock.json +++ b/tools/lockfiles/apm.lock.json @@ -1,7 +1,7 @@ { "$schema": "https://raw.githubusercontent.com/bazel-contrib/rules_multitool/main/lockfile.schema.json", "apm": { - "version": "0.27.0", + "version": "0.30.0", "description": "Manage APM packages", "binaries": [ { @@ -9,8 +9,8 @@ "type": "tar.gz", "dir": "apm-darwin-arm64", "file": "apm-darwin-arm64/apm", - "url": "https://github.com/microsoft/apm/releases/download/v0.27.0/apm-darwin-arm64.tar.gz", - "sha256": "4c68e5eaa3cfdb0b25734c316deb532835eaf3c3e2f7379a4c7c06918043a641", + "url": "https://github.com/microsoft/apm/releases/download/v0.30.0/apm-darwin-arm64.tar.gz", + "sha256": "1cbd8fefbb5f74fd0e05f196bb81cff3cec2876f8f8e1a2e45d4b78fa127a37c", "os": "macos", "cpu": "arm64" }, @@ -19,8 +19,8 @@ "type": "tar.gz", "dir": "apm-darwin-x86_64", "file": "apm-darwin-x86_64/apm", - "url": "https://github.com/microsoft/apm/releases/download/v0.27.0/apm-darwin-x86_64.tar.gz", - "sha256": "846b30055d96cbc6fa0fcf451f50d13f632b540ffdff344873a025bba607e25a", + "url": "https://github.com/microsoft/apm/releases/download/v0.30.0/apm-darwin-x86_64.tar.gz", + "sha256": "648ea29ef54d234c10495dc139d70a535e107b1e1e848c815197ca2b7b6f8515", "os": "macos", "cpu": "x86_64" }, @@ -29,8 +29,8 @@ "type": "tar.gz", "dir": "apm-linux-x86_64", "file": "apm-linux-x86_64/apm", - "url": "https://github.com/microsoft/apm/releases/download/v0.27.0/apm-linux-x86_64.tar.gz", - "sha256": "be2d8a97ca8816636117ec26da85482d647ae3353213ea022fb1130c2dd3d3b0", + "url": "https://github.com/microsoft/apm/releases/download/v0.30.0/apm-linux-x86_64.tar.gz", + "sha256": "8b84bebf19c350faf36d21aebb350dc656d04c0b7a1c2bf8ea35c0caa0e44bb9", "os": "linux", "cpu": "x86_64" }, @@ -39,8 +39,8 @@ "type": "tar.gz", "dir": "apm-linux-arm64", "file": "apm-linux-arm64/apm", - "url": "https://github.com/microsoft/apm/releases/download/v0.27.0/apm-linux-arm64.tar.gz", - "sha256": "7df6e64ca9540665367f07af0226077ba92820f6cc759c10a5ca37e038a500e4", + "url": "https://github.com/microsoft/apm/releases/download/v0.30.0/apm-linux-arm64.tar.gz", + "sha256": "5d40fce0bb4beb6f59d35949b6ce5dcb6eb1e8493f4a55fc5d91d764077f82df", "os": "linux", "cpu": "arm64" } diff --git a/tools/lockfiles/opencode.lock.json b/tools/lockfiles/opencode.lock.json index 811d21e..1eeb7ac 100644 --- a/tools/lockfiles/opencode.lock.json +++ b/tools/lockfiles/opencode.lock.json @@ -1,14 +1,14 @@ { "$schema": "https://raw.githubusercontent.com/bazel-contrib/rules_multitool/main/lockfile.schema.json", "opencode": { - "version": "1.18.15", + "version": "1.18.31", "description": "Run the OpenCode CLI", "binaries": [ { "kind": "archive", "file": "opencode", - "url": "https://github.com/anomalyco/opencode/releases/download/v1.18.15/opencode-darwin-arm64.zip", - "sha256": "bd60b57cb9fe0494a5352c807424d36d6d7853cf6dbddb97065c7ccd3c5d391c", + "url": "https://github.com/anomalyco/opencode/releases/download/v1.18.31/opencode-darwin-arm64.zip", + "sha256": "caf7f31fa1aec2353ea859d4ef9ab824c6273d941b016e88d51193fa3028d34e", "type": "zip", "os": "macos", "cpu": "arm64" @@ -16,8 +16,8 @@ { "kind": "archive", "file": "opencode", - "url": "https://github.com/anomalyco/opencode/releases/download/v1.18.15/opencode-darwin-x64.zip", - "sha256": "e97e8185e7b7942f6e14f51b8727dbe023b54772e075bc16fead813680455d17", + "url": "https://github.com/anomalyco/opencode/releases/download/v1.18.31/opencode-darwin-x64.zip", + "sha256": "f8510eaf400f07c3a2014e3a517e3650c705bcd6ac3e6740351b723ee685042f", "type": "zip", "os": "macos", "cpu": "x86_64" @@ -25,8 +25,8 @@ { "kind": "archive", "file": "opencode", - "url": "https://github.com/anomalyco/opencode/releases/download/v1.18.15/opencode-linux-x64.tar.gz", - "sha256": "d842e0e8c622c672a481b7dc6f0329009b64db96b2ba6041e56f4f93f0293b1c", + "url": "https://github.com/anomalyco/opencode/releases/download/v1.18.31/opencode-linux-x64.tar.gz", + "sha256": "e9312be75ed803b7415fc2aeabda1f4fe938912a39673762dc0c38c0e11ebde4", "type": "tar.gz", "os": "linux", "cpu": "x86_64" @@ -34,8 +34,8 @@ { "kind": "archive", "file": "opencode", - "url": "https://github.com/anomalyco/opencode/releases/download/v1.18.15/opencode-linux-arm64.tar.gz", - "sha256": "500611819ff88916b185649990505a9be76ad13ca5bb4b9323e5abdd39b1c6fb", + "url": "https://github.com/anomalyco/opencode/releases/download/v1.18.31/opencode-linux-arm64.tar.gz", + "sha256": "d4e332f46b227448582c0d9fc75f6f826dfe95c9f751bc2011fc4d937a042be6", "type": "tar.gz", "os": "linux", "cpu": "arm64"