Repository navigation
Use common-ci's release plan in place of this repository's copy - #47
Merged
Merged
Conversation
The functions that work out which packages a publish releases, and at which version, move to common-ci as steps/release-plan.ps1, so that every package repository can use the same ones. ci/packages.ps1 now dot-sources that step and keeps only what is particular to this repository: the tox.ini check and the products a pull request touches. The moved functions are the same code, so every script that dot-sources ci/packages.ps1 calls them as before. common-ci runs these scripts from its own root, with this repository checked out inside it, which is where ci/packages.ps1 looks first. It also finds a checkout of common-ci beside this repository, as ci/dispatch.Tests.ps1 does, or one named by COMMON_CI. The release plan's tests move to common-ci with it, and ci/packages.Tests.ps1 keeps the tests of what stays here.
This was referenced Nov 5, 2026
…ation, tests, examples and manifest metadata
…as common-ci's shared step does
A package's tox.ini sets up its test environments and is not part of what is published, so a change to it alone no longer releases the package. Each package with a tox.ini ignores it in packages.json, and the tests cover the real package list.
…d-release-plan # Conflicts: # ci/packages.Tests.ps1 # ci/packages.ps1
… also gives the build plan
# Conflicts: # AGENTS.md # ci/packages.ps1
jwrosewell
marked this pull request as ready for review
November 13, 2026 23:27
jwrosewell
added a commit
that referenced
this pull request
Nov 14, 2026
The scripts in `ci/` decide what a pull request builds and what a publish releases, and each has Pester tests beside it. `rc` holds five such files, being `ci/packages.Tests.ps1`, `ci/dispatch.Tests.ps1`, `ci/check-environment-variable-names.Tests.ps1`, `ci/get-next-package-version.Tests.ps1` from [#54](#54) and `ci/select-options.Tests.ps1` from [#33](#33). Only the environment variable name tests ran in a workflow. The rest ran only by hand or on a temporary branch, as [#47](#47), [#54](#54) and [#60](#60) each say under what remains, so a change to the release plan or the dispatcher could break them unseen.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Step 1 of common-ci#306. The release plan in
ci/packages.ps1, which works out which packages a publish releases and at which version, moved to common-ci assteps/release-plan.ps1in common-ci#307, and the rule that documentation, tests and examples do not count was added there by common-ci#310. Both reached common-ci'smain, which the workflows here use, in common-ci's release of 12 November. This repository then uses the shared step in place of its own copy, so that the rule is written once for every package repository.#60, which gave this repository's copy the same rule and adds the filter for manifest metadata that the shared step calls, merged into
rcas 5eb295c, and this draft follows it.Change
ci/packages.ps1dot-sources common-ci'ssteps/release-plan.ps1and keeps only what is particular to this repository, beingGet-ToxGaps,Resolve-AffectedProducts,Get-AffectedProductsandGet-BuildPlan. The functions it no longer holds,Get-Packages,Get-PackagePaths,Test-PathUnder,Get-PackageExcludes,Get-ChangedFiles,Select-CountedFiles,Get-DependentClosure,Sort-ByDependency,ConvertTo-VersionParts,Get-ReleasedVersionsandGet-ReleasePlan, are in common-ci's step onmain, so every script that dot-sourcesci/packages.ps1calls them as before. Compared function by function with Release a package only for a change that counts, leaving out documentation, tests, examples and manifest metadata #60's copy, they are the same apart from comments and one improvement in common-ci, which lists changed files withcore.quotePath=false, so a file name with a character outside ASCII is matched as written.ci/packages.ps1looks first. It also finds a checkout of common-ci beside this repository, asci/dispatch.Tests.ps1does, or one named byCOMMON_CI, and stops with a message when there is none.ci/release-plan-filter.ps1andci/release-plan-filter.pyfrom Release a package only for a change that counts, leaving out documentation, tests, examples and manifest metadata #60 stay, because the shared step callsci/release-plan-filter.ps1when a repository has one. TheIgnoreentries inci/packages.jsonstay too, as the shared step reads them.ci/packages.Tests.ps1loses the tests of the functions that moved, which common-ci'ssteps/release-plan.Tests.ps1holds, and keeps those ofResolve-AffectedProducts, of this repository's filter, ofGet-BuildPlanand of the realci/packages.json.ci/dispatch.Tests.ps1gives the stand-in common-ci folder it builds a copy of common-ci's wholestepsfolder, where it copiedsteps/run-script.ps1alone. Its test "fetches assets when called without a repository name" runsci/fetch-assets.ps1from inside that folder, as common-ci's prefetch action does, and failed with onlyrun-script.ps1there, with "common-ci's steps/release-plan.ps1 was not found" (run 43476219314). The whole folder is copied rather than the two files, because common-ci#314 makessteps/release-plan.ps1loadversion-tags.ps1from its own folder. A real common-ci checkout has every step, so only the test needed the change.AGENTS.mdsays the release plan is common-ci's step, loaded byci/packages.ps1.Checks
The runs below are temporary branches holding a workflow that checks out common-ci beside this repository, runs every
ci/*.Tests.ps1with Pester onubuntu-latestandwindows-latest, and then prints the release plan against the real tags, first of the head and then of four changes made on top of it, each on its own.Run 43520495899, this head bb56b0e7 with common-ci's
main, passed on both,Tests Passed: 144, Failed: 0, being every test in the fiveci/*.Tests.ps1filesrcholds with this draft.rcnow holds #107, which changedfiftyone_pipeline_cloudrequestengine'sconstants.py, so the plan of the head itself is that package and its 9 dependants. The plans, the same on both:fiftyone_pipeline_cloudrequestenginelocation/readme.mdonlyfiftyone_pipeline_cloudrequestenginefiftyone_pipeline_coreonlyfiftyone_pipeline_cloudrequestenginefiftyone_location's sourcefiftyone_pipeline_cloudrequestengine,fiftyone_locationfiftyone_pipeline_engines's sourcefiftyone_pipeline_engines,fiftyone_pipeline_cloudrequestengineSo a readme or a test releases nothing more, a package's source releases that package and its dependants, and nothing else, each one patch on, with the label
4.5.104, the highest version in the plan.Before
rcheld #107, run 43490213977 at the earlier head 742f256 with common-ci'smain, and run 43490225698 at the same head with common-ci checked out at the branch of common-ci#314 (feature/version-tag-readerat 4e27cde6) in place ofmain, each passedTests Passed: 131, Failed: 0on both and gave the same plans as each other. There a readme or a test change planned nothing,fiftyone_location's source plannedfiftyone_locationalone, andfiftyone_pipeline_engines's source planned it and its 11 dependants. So this repository keeps working when #314 reaches common-ci'smain.Python's release plan is common-ci's
steps/release-plan.ps1onmainat the time a publish runs, so the plan check is run again after common-ci's release.This draft changes only CI scripts, their tests and AGENTS.md, with no package code. James Rosewell decided at about 11:35 UTC on 12 November, for such a change, "rebuild and include, but the change doesn't impact the code so no need to run the full builds." Its quick checks passed on this head, being run 43520486141 (environment variable names), run 43520486619 (only rc into main) and run 43520486208 (link campaign tags).
Head bb56b0e was made in this order. The earlier head 1597838, then #60's head 766fe11 merged in (holding
rcat df0949d7), then the AGENTS.md sentence (642d492) and the first dispatch test change (d292d72), then #60's later head ec8b2fd merged in, then the dispatch test copying the wholestepsfolder (742f256), thenrcat 32ffdcf1 merged in.rcholds #60 since 5eb295c, so this draft's diff is its own four files again. The last merge keptrc'sGet-AffectedProducts, which takes the branch to measure from since #33, and this draft's shorterci/packages.ps1andci/packages.Tests.ps1.What remains
ci/*.Tests.ps1on a pull request that changesci/. Until it merges, these tests run only in the temporary workflow above.mainwhen they reach it, and each of those drafts says what, if anything, a language repository has to change.The last release into
mainwas #114, merged at 06:22 UTC on 13 November.