From 12a5578df5df266c451dab17bb70c60e522ebf63 Mon Sep 17 00:00:00 2001 From: jcant0n Date: Sun, 2 Aug 2026 19:47:41 +0200 Subject: [PATCH] feat: track renderdoc_app.h and regenerate when it moves Moves CD from binding-simple-cd, which builds and publishes whatever is already committed, to binding-tracked-cd, which reads binding.yml, fetches the header from baldurk/renderdoc, regenerates, and publishes only when the generated API changed. Adds the monthly schedule the other tracked bindings use. This is the first binding generated from a C header to work this way, and the first exercise of the git-tree adapter -- until now only http-file had ever run, in the three XML repositories. The header is currently byte-identical to upstream, so the first run should report nothing changed and publish nothing. That is the intended result and the cheapest possible test of the adapter: a noop that costs one HTTP call. --- .github/workflows/CD.yml | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/.github/workflows/CD.yml b/.github/workflows/CD.yml index 08ac25b..2dce007 100644 --- a/.github/workflows/CD.yml +++ b/.github/workflows/CD.yml @@ -1,6 +1,8 @@ -# Binding Simple CD - Template +# Binding Tracked CD - Template -# This template is for pure .NET bindings (no XML update) to publish NuGets to Nuget.org. +# This template is for bindings that follow an upstream specification declared in +# binding.yml: the workflow fetches it, regenerates, and publishes only when the +# generated API changed. # Copy this file to your repository as `.github/workflows/CD.yml` and customize the inputs below. name: CD @@ -13,11 +15,18 @@ on: required: false type: boolean default: false + force-publish: + description: 'Publish even if the generated API did not change (for shipping a reviewed regeneration)' + required: false + type: boolean + default: false + schedule: + - cron: '30 1 1 * *' # Monthly update on day 1 at 01:30 jobs: cd: if: github.event_name != 'schedule' || github.ref_name == github.event.repository.default_branch - uses: EvergineTeam/Evergine.Bindings/.github/workflows/binding-simple-cd.yml@v1 + uses: EvergineTeam/Evergine.Bindings/.github/workflows/binding-tracked-cd.yml@v1 with: generator-project: "RenderDocGen/RenderDocGen/RenderDocGen.csproj" # Path to your generator .csproj generator-name: "RenderDoc" # Name of your generator executable @@ -28,6 +37,7 @@ jobs: runtime-identifier: "win-x64" # Runtime identifier (win-x64, linux-x64, etc.) build-configuration: "Release" # Build configuration (Release, Debug, etc.) revision: ${{ github.run_number }} # Revision for date-based version (bindings style). Use with bindings. + force-publish: ${{ inputs.force-publish || false }} publish-enabled: ${{ !inputs.skip-assets-publishing }} # Publish NuGets to Nuget.org enable-email-notifications: true # Enable email notifications on failure runner-os: windows-latest # OS for the runner (windows-latest, ubuntu-latest, etc.)