Skip to content

CI: Add test that checks that old releases can verify#1575

Merged
woodruffw merged 6 commits into
sigstore:mainfrom
jku:add-cross-version-test
Oct 20, 2025
Merged

CI: Add test that checks that old releases can verify#1575
woodruffw merged 6 commits into
sigstore:mainfrom
jku:add-cross-version-test

Conversation

@jku

@jku jku commented Oct 11, 2025

Copy link
Copy Markdown
Member

Making sure that old clients can verify bundles created by current code (and current public good infrastructure) is not too difficult and would be very useful.

This is an initial attempt, keeping it draft for now:

  • I don't like that the tested versions are hard coded... but I don't think there is much alternative here, testing all tags is silly. It could be easy to forget to add releases here but I don't have better solutions
  • I think we only want to test last patch release of every minor release that we still care about
  • I would like to say we still care about v3.5.3 (released Nov 2024) but that release no longer handles current trusted root correctly and we did not patch that in 3.5.x: Backport trust root fixes to 3.5.x #1578 is a potential fix for that
  • It might be useful to run this on cron as well (since trust root changes affect the results) ... but then this would need a file-an-issue job as well. Filed Improve testing on schedule #1583 to follow up

Example run: https://github.com/jku/sigstore-python/actions/runs/18432104146

Fixes #1573

Signed-off-by: Jussi Kukkonen <jkukkonen@google.com>
@di

di commented Oct 13, 2025

Copy link
Copy Markdown
Member

Overall seems reasonable to me!

I don't like that the tested versions are hard coded... but I don't think there is much alternative here, testing all tags is silly. Still, this feels like it will get forgotten and then after a few releases this test is useless

We could make it parse all the tags but just test the latest from each of the major releases instead of all tags? I also think we could just hard-code the 1.x, 2.x, 3.x latest releases and test those against the latest tag (and only need to update this when we make a new major release).

I think we only want to test last patch release of every minor release that we still care about

Why not just every major release?

I would like to say we still care about v3.5.3 (released Nov 2024) but that release no longer handles current trusted root correctly and we did not patch that in 3.5.x

Should we patch it, at least for the sake of these tests?

@jku

jku commented Oct 14, 2025

Copy link
Copy Markdown
Member Author

We could make it parse all the tags but just test the latest from each of the major releases instead of all tags? I also think we could just hard-code the 1.x, 2.x, 3.x latest releases and test those against the latest tag (and only need to update this when we make a new major release).

I think it's a little more nuanced:

  • 1.x, 2.x are old: I don't think we should give the impression that we have the resources to support them
  • 3.5.3 feels like an edge case -- only a year old but there is a 3.6.x series in the same major release... I think we could at least make a final release to get it included here if it's not too difficult (Backport trust root fixes to 3.5.x #1578)
  • I don't see an issue testing multiple minor versions like 4.0 and 4.1 -- we can always drop the older one if it becomes problematic: the point is to know when we do become "incompatible"

I'll see if I can come up with something that doesn't require remembering to update the workflow, but still tests only a reasonable number of releases.

@jku

jku commented Oct 14, 2025

Copy link
Copy Markdown
Member Author

I'll see if I can come up with something that doesn't require remembering to update the workflow, but still tests only a reasonable number of releases.

I think this is not worth the trouble:

  • the workflow becomes much more complicated if the version list is built dynamically as the workflow matrix can't be used anymore
  • while it's possible to build the version list with shell, it's not pretty: git tag | grep '^v[0-9]\+\.[0-9]\+\.[0-9]\+$' | awk -F'[.v]' '$2 > 3 || ($2 == 3 && $3 >= 5)' | sort -V -r | awk -F'[.v]' '!seen[$2"."$3]++'. So we'd likely want to do this with python instead... meaning more code to maintain

I think hard coding might be fine: it is after all the oldest versions (that we are adding now) that are likeliest to break when changes are done in future

@di

di commented Oct 14, 2025

Copy link
Copy Markdown
Member

That makes sense to me, thanks for looking into it!

@jku jku marked this pull request as ready for review October 15, 2025 16:06
@jku

jku commented Oct 15, 2025

Copy link
Copy Markdown
Member Author

I'm marking this ready for review: If #1578 happens, we can add 3.5.3 to the test matrix

@jku jku changed the title CI: Add test that checks that old version can verify CI: Add test that checks that old releases can verify Oct 15, 2025
Comment thread .github/workflows/cross-version-verify.yaml
Comment thread .github/workflows/cross-version-verify.yaml Outdated
Comment thread .github/workflows/cross-version-verify.yaml Outdated
@jku jku requested a review from woodruffw October 17, 2025 07:56

@woodruffw woodruffw left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @jku!

@woodruffw woodruffw enabled auto-merge (squash) October 20, 2025 14:24
@woodruffw woodruffw merged commit 52bfcfa into sigstore:main Oct 20, 2025
41 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

test verifying new bundles with old clients

3 participants