Use hand-written change detection for PR/push job trimming - #19045
Conversation
4b77f91 to
3f04618
Compare
|
Just for my own understanding, this is all a bit of a workaround, right? Ideally "the cache" would just make doc only changes go pretty quickly. That's what we see our build at $work. The challenge is getting the cache to be warm/hot enough. |
|
Potentially? I'm just changing implementation details and aren't across the historical context. Relevant changes from the git history:
I think relying on remote caching isn't feasible, in the short term:
|
Yes, in an ideal world the cache (or relying on But this is just replacing like with like, to fix the issue you pointed out a few days ago. |
|
And yeah, this is primarily to not build rust or wheels when we don't need to. |
|
Yeah, I'm using this as an opportunity to educate myself. Certainly not meant as a challenge or blocker 😄 |
|
(Looks like you have reviewers, but just stopping by to say: thank you for working on the CI infrastructure!) |
Internal changes: * Fix TypedDict construction ([pantsbuild#19166](pantsbuild#19166)) * Have package_dists.InvalidEntryPoint subclass InvalidFieldException ([pantsbuild#19149](pantsbuild#19149)) * Check for `CI=true`, not `CI=1` for cherry-picking ([pantsbuild#19141](pantsbuild#19141)) * Set up remote caching in CI ([pantsbuild#19144](pantsbuild#19144)) * refactor(internal): adjust pants_venv venv_dir calculation ([pantsbuild#19140](pantsbuild#19140)) * Prepare `2.16.0rc4`. ([pantsbuild#19146](pantsbuild#19146)) * Warn about `files()` in PEXes in one place ([pantsbuild#19027](pantsbuild#19027)) * Drop our explicit dep on `syn` ([pantsbuild#19134](pantsbuild#19134)) * Fix auto-cherry-picker's merge-conflicts ([pantsbuild#19125](pantsbuild#19125)) * Use explicit depths on fetches when running cherry-picks in CI ([pantsbuild#19127](pantsbuild#19127)) * Make determine_python() pin to 3.9 ([pantsbuild#19116](pantsbuild#19116)) * Upgrade to `actions/checkout@v3` ([pantsbuild#19112](pantsbuild#19112)) * Run the cherry pick script with `-x` for debugging ([pantsbuild#19095](pantsbuild#19095)) * Add more linux x86 test CI shards ([pantsbuild#19099](pantsbuild#19099)) * Use a trait for remote ByteStore network implementation ([pantsbuild#19050](pantsbuild#19050)) * Increase the logging of release version file publishing. ([pantsbuild#19092](pantsbuild#19092)) * Remove the Toolchain plugin ([pantsbuild#18978](pantsbuild#18978)) * Fix bad merge of pantsbuild#18829. ([pantsbuild#19080](pantsbuild#19080)) * Revert "Implement layout="zip" for Lambda/GCF, skipping lambdex" ([pantsbuild#19071](pantsbuild#19071)) * Remove unnecessary interpreter constraint config. ([pantsbuild#19065](pantsbuild#19065)) * Use hand-written change detection for PR/push job trimming ([pantsbuild#19045](pantsbuild#19045)) * Do not build wheels on push, since that is now accomplished by the release job. ([pantsbuild#19063](pantsbuild#19063)) * Additional release job publishing fixes ([pantsbuild#19058](pantsbuild#19058)) * Change CI trigger to includelist `main` and `2.*.x` ([pantsbuild#19059](pantsbuild#19059)) * Release doc and script fixes ([pantsbuild#19043](pantsbuild#19043)) * Update cherry-picker to use `pull_request_target` ([pantsbuild#19048](pantsbuild#19048)) * Prepare `2.16.0rc3`. ([pantsbuild#19044](pantsbuild#19044)) * Prepare `2.15.1`. ([pantsbuild#19042](pantsbuild#19042)) * Fixup welcome-newcomers.yaml ([pantsbuild#19039](pantsbuild#19039))
Internal changes: * Fix TypedDict construction ([pantsbuild#19166](pantsbuild#19166)) * Have package_dists.InvalidEntryPoint subclass InvalidFieldException ([pantsbuild#19149](pantsbuild#19149)) * Check for `CI=true`, not `CI=1` for cherry-picking ([pantsbuild#19141](pantsbuild#19141)) * Set up remote caching in CI ([pantsbuild#19144](pantsbuild#19144)) * refactor(internal): adjust pants_venv venv_dir calculation ([pantsbuild#19140](pantsbuild#19140)) * Prepare `2.16.0rc4`. ([pantsbuild#19146](pantsbuild#19146)) * Warn about `files()` in PEXes in one place ([pantsbuild#19027](pantsbuild#19027)) * Drop our explicit dep on `syn` ([pantsbuild#19134](pantsbuild#19134)) * Fix auto-cherry-picker's merge-conflicts ([pantsbuild#19125](pantsbuild#19125)) * Use explicit depths on fetches when running cherry-picks in CI ([pantsbuild#19127](pantsbuild#19127)) * Make determine_python() pin to 3.9 ([pantsbuild#19116](pantsbuild#19116)) * Upgrade to `actions/checkout@v3` ([pantsbuild#19112](pantsbuild#19112)) * Run the cherry pick script with `-x` for debugging ([pantsbuild#19095](pantsbuild#19095)) * Add more linux x86 test CI shards ([pantsbuild#19099](pantsbuild#19099)) * Use a trait for remote ByteStore network implementation ([pantsbuild#19050](pantsbuild#19050)) * Increase the logging of release version file publishing. ([pantsbuild#19092](pantsbuild#19092)) * Remove the Toolchain plugin ([pantsbuild#18978](pantsbuild#18978)) * Fix bad merge of pantsbuild#18829. ([pantsbuild#19080](pantsbuild#19080)) * Revert "Implement layout="zip" for Lambda/GCF, skipping lambdex" ([pantsbuild#19071](pantsbuild#19071)) * Remove unnecessary interpreter constraint config. ([pantsbuild#19065](pantsbuild#19065)) * Use hand-written change detection for PR/push job trimming ([pantsbuild#19045](pantsbuild#19045)) * Do not build wheels on push, since that is now accomplished by the release job. ([pantsbuild#19063](pantsbuild#19063)) * Additional release job publishing fixes ([pantsbuild#19058](pantsbuild#19058)) * Change CI trigger to includelist `main` and `2.*.x` ([pantsbuild#19059](pantsbuild#19059)) * Release doc and script fixes ([pantsbuild#19043](pantsbuild#19043)) * Update cherry-picker to use `pull_request_target` ([pantsbuild#19048](pantsbuild#19048)) * Prepare `2.16.0rc3`. ([pantsbuild#19044](pantsbuild#19044)) * Prepare `2.15.1`. ([pantsbuild#19042](pantsbuild#19042)) * Fixup welcome-newcomers.yaml ([pantsbuild#19039](pantsbuild#19039))
Internal changes: * Fix TypedDict construction ([pantsbuild#19166](pantsbuild#19166)) * Have package_dists.InvalidEntryPoint subclass InvalidFieldException ([pantsbuild#19149](pantsbuild#19149)) * Check for `CI=true`, not `CI=1` for cherry-picking ([pantsbuild#19141](pantsbuild#19141)) * Set up remote caching in CI ([pantsbuild#19144](pantsbuild#19144)) * refactor(internal): adjust pants_venv venv_dir calculation ([pantsbuild#19140](pantsbuild#19140)) * Prepare `2.16.0rc4`. ([pantsbuild#19146](pantsbuild#19146)) * Warn about `files()` in PEXes in one place ([pantsbuild#19027](pantsbuild#19027)) * Drop our explicit dep on `syn` ([pantsbuild#19134](pantsbuild#19134)) * Fix auto-cherry-picker's merge-conflicts ([pantsbuild#19125](pantsbuild#19125)) * Use explicit depths on fetches when running cherry-picks in CI ([pantsbuild#19127](pantsbuild#19127)) * Make determine_python() pin to 3.9 ([pantsbuild#19116](pantsbuild#19116)) * Upgrade to `actions/checkout@v3` ([pantsbuild#19112](pantsbuild#19112)) * Run the cherry pick script with `-x` for debugging ([pantsbuild#19095](pantsbuild#19095)) * Add more linux x86 test CI shards ([pantsbuild#19099](pantsbuild#19099)) * Use a trait for remote ByteStore network implementation ([pantsbuild#19050](pantsbuild#19050)) * Increase the logging of release version file publishing. ([pantsbuild#19092](pantsbuild#19092)) * Remove the Toolchain plugin ([pantsbuild#18978](pantsbuild#18978)) * Fix bad merge of pantsbuild#18829. ([pantsbuild#19080](pantsbuild#19080)) * Revert "Implement layout="zip" for Lambda/GCF, skipping lambdex" ([pantsbuild#19071](pantsbuild#19071)) * Remove unnecessary interpreter constraint config. ([pantsbuild#19065](pantsbuild#19065)) * Use hand-written change detection for PR/push job trimming ([pantsbuild#19045](pantsbuild#19045)) * Do not build wheels on push, since that is now accomplished by the release job. ([pantsbuild#19063](pantsbuild#19063)) * Additional release job publishing fixes ([pantsbuild#19058](pantsbuild#19058)) * Change CI trigger to includelist `main` and `2.*.x` ([pantsbuild#19059](pantsbuild#19059)) * Release doc and script fixes ([pantsbuild#19043](pantsbuild#19043)) * Update cherry-picker to use `pull_request_target` ([pantsbuild#19048](pantsbuild#19048)) * Prepare `2.16.0rc3`. ([pantsbuild#19044](pantsbuild#19044)) * Prepare `2.15.1`. ([pantsbuild#19042](pantsbuild#19042)) * Fixup welcome-newcomers.yaml ([pantsbuild#19039](pantsbuild#19039))
Internal changes: * Fix TypedDict construction ([pantsbuild#19166](pantsbuild#19166)) * Have package_dists.InvalidEntryPoint subclass InvalidFieldException ([pantsbuild#19149](pantsbuild#19149)) * Check for `CI=true`, not `CI=1` for cherry-picking ([pantsbuild#19141](pantsbuild#19141)) * Set up remote caching in CI ([pantsbuild#19144](pantsbuild#19144)) * refactor(internal): adjust pants_venv venv_dir calculation ([pantsbuild#19140](pantsbuild#19140)) * Prepare `2.16.0rc4`. ([pantsbuild#19146](pantsbuild#19146)) * Warn about `files()` in PEXes in one place ([pantsbuild#19027](pantsbuild#19027)) * Drop our explicit dep on `syn` ([pantsbuild#19134](pantsbuild#19134)) * Fix auto-cherry-picker's merge-conflicts ([pantsbuild#19125](pantsbuild#19125)) * Use explicit depths on fetches when running cherry-picks in CI ([pantsbuild#19127](pantsbuild#19127)) * Make determine_python() pin to 3.9 ([pantsbuild#19116](pantsbuild#19116)) * Upgrade to `actions/checkout@v3` ([pantsbuild#19112](pantsbuild#19112)) * Run the cherry pick script with `-x` for debugging ([pantsbuild#19095](pantsbuild#19095)) * Add more linux x86 test CI shards ([pantsbuild#19099](pantsbuild#19099)) * Use a trait for remote ByteStore network implementation ([pantsbuild#19050](pantsbuild#19050)) * Increase the logging of release version file publishing. ([pantsbuild#19092](pantsbuild#19092)) * Remove the Toolchain plugin ([pantsbuild#18978](pantsbuild#18978)) * Fix bad merge of pantsbuild#18829. ([pantsbuild#19080](pantsbuild#19080)) * Revert "Implement layout="zip" for Lambda/GCF, skipping lambdex" ([pantsbuild#19071](pantsbuild#19071)) * Remove unnecessary interpreter constraint config. ([pantsbuild#19065](pantsbuild#19065)) * Use hand-written change detection for PR/push job trimming ([pantsbuild#19045](pantsbuild#19045)) * Do not build wheels on push, since that is now accomplished by the release job. ([pantsbuild#19063](pantsbuild#19063)) * Additional release job publishing fixes ([pantsbuild#19058](pantsbuild#19058)) * Change CI trigger to includelist `main` and `2.*.x` ([pantsbuild#19059](pantsbuild#19059)) * Release doc and script fixes ([pantsbuild#19043](pantsbuild#19043)) * Update cherry-picker to use `pull_request_target` ([pantsbuild#19048](pantsbuild#19048)) * Prepare `2.16.0rc3`. ([pantsbuild#19044](pantsbuild#19044)) * Prepare `2.15.1`. ([pantsbuild#19042](pantsbuild#19042)) * Fixup welcome-newcomers.yaml ([pantsbuild#19039](pantsbuild#19039))
Internal changes: * Fix TypedDict construction ([pantsbuild#19166](pantsbuild#19166)) * Have package_dists.InvalidEntryPoint subclass InvalidFieldException ([pantsbuild#19149](pantsbuild#19149)) * Check for `CI=true`, not `CI=1` for cherry-picking ([pantsbuild#19141](pantsbuild#19141)) * Set up remote caching in CI ([pantsbuild#19144](pantsbuild#19144)) * refactor(internal): adjust pants_venv venv_dir calculation ([pantsbuild#19140](pantsbuild#19140)) * Prepare `2.16.0rc4`. ([pantsbuild#19146](pantsbuild#19146)) * Warn about `files()` in PEXes in one place ([pantsbuild#19027](pantsbuild#19027)) * Drop our explicit dep on `syn` ([pantsbuild#19134](pantsbuild#19134)) * Fix auto-cherry-picker's merge-conflicts ([pantsbuild#19125](pantsbuild#19125)) * Use explicit depths on fetches when running cherry-picks in CI ([pantsbuild#19127](pantsbuild#19127)) * Make determine_python() pin to 3.9 ([pantsbuild#19116](pantsbuild#19116)) * Upgrade to `actions/checkout@v3` ([pantsbuild#19112](pantsbuild#19112)) * Run the cherry pick script with `-x` for debugging ([pantsbuild#19095](pantsbuild#19095)) * Add more linux x86 test CI shards ([pantsbuild#19099](pantsbuild#19099)) * Use a trait for remote ByteStore network implementation ([pantsbuild#19050](pantsbuild#19050)) * Increase the logging of release version file publishing. ([pantsbuild#19092](pantsbuild#19092)) * Remove the Toolchain plugin ([pantsbuild#18978](pantsbuild#18978)) * Fix bad merge of pantsbuild#18829. ([pantsbuild#19080](pantsbuild#19080)) * Revert "Implement layout="zip" for Lambda/GCF, skipping lambdex" ([pantsbuild#19071](pantsbuild#19071)) * Remove unnecessary interpreter constraint config. ([pantsbuild#19065](pantsbuild#19065)) * Use hand-written change detection for PR/push job trimming ([pantsbuild#19045](pantsbuild#19045)) * Do not build wheels on push, since that is now accomplished by the release job. ([pantsbuild#19063](pantsbuild#19063)) * Additional release job publishing fixes ([pantsbuild#19058](pantsbuild#19058)) * Change CI trigger to includelist `main` and `2.*.x` ([pantsbuild#19059](pantsbuild#19059)) * Release doc and script fixes ([pantsbuild#19043](pantsbuild#19043)) * Update cherry-picker to use `pull_request_target` ([pantsbuild#19048](pantsbuild#19048)) * Prepare `2.16.0rc3`. ([pantsbuild#19044](pantsbuild#19044)) * Prepare `2.15.1`. ([pantsbuild#19042](pantsbuild#19042)) * Fixup welcome-newcomers.yaml ([pantsbuild#19039](pantsbuild#19039))
Internal changes: * Fix TypedDict construction ([pantsbuild#19166](pantsbuild#19166)) * Have package_dists.InvalidEntryPoint subclass InvalidFieldException ([pantsbuild#19149](pantsbuild#19149)) * Check for `CI=true`, not `CI=1` for cherry-picking ([pantsbuild#19141](pantsbuild#19141)) * Set up remote caching in CI ([pantsbuild#19144](pantsbuild#19144)) * refactor(internal): adjust pants_venv venv_dir calculation ([pantsbuild#19140](pantsbuild#19140)) * Prepare `2.16.0rc4`. ([pantsbuild#19146](pantsbuild#19146)) * Warn about `files()` in PEXes in one place ([pantsbuild#19027](pantsbuild#19027)) * Drop our explicit dep on `syn` ([pantsbuild#19134](pantsbuild#19134)) * Fix auto-cherry-picker's merge-conflicts ([pantsbuild#19125](pantsbuild#19125)) * Use explicit depths on fetches when running cherry-picks in CI ([pantsbuild#19127](pantsbuild#19127)) * Make determine_python() pin to 3.9 ([pantsbuild#19116](pantsbuild#19116)) * Upgrade to `actions/checkout@v3` ([pantsbuild#19112](pantsbuild#19112)) * Run the cherry pick script with `-x` for debugging ([pantsbuild#19095](pantsbuild#19095)) * Add more linux x86 test CI shards ([pantsbuild#19099](pantsbuild#19099)) * Use a trait for remote ByteStore network implementation ([pantsbuild#19050](pantsbuild#19050)) * Increase the logging of release version file publishing. ([pantsbuild#19092](pantsbuild#19092)) * Remove the Toolchain plugin ([pantsbuild#18978](pantsbuild#18978)) * Fix bad merge of pantsbuild#18829. ([pantsbuild#19080](pantsbuild#19080)) * Revert "Implement layout="zip" for Lambda/GCF, skipping lambdex" ([pantsbuild#19071](pantsbuild#19071)) * Remove unnecessary interpreter constraint config. ([pantsbuild#19065](pantsbuild#19065)) * Use hand-written change detection for PR/push job trimming ([pantsbuild#19045](pantsbuild#19045)) * Do not build wheels on push, since that is now accomplished by the release job. ([pantsbuild#19063](pantsbuild#19063)) * Additional release job publishing fixes ([pantsbuild#19058](pantsbuild#19058)) * Change CI trigger to includelist `main` and `2.*.x` ([pantsbuild#19059](pantsbuild#19059)) * Release doc and script fixes ([pantsbuild#19043](pantsbuild#19043)) * Update cherry-picker to use `pull_request_target` ([pantsbuild#19048](pantsbuild#19048)) * Prepare `2.16.0rc3`. ([pantsbuild#19044](pantsbuild#19044)) * Prepare `2.15.1`. ([pantsbuild#19042](pantsbuild#19042)) * Fixup welcome-newcomers.yaml ([pantsbuild#19039](pantsbuild#19039))
Internal changes: * Fix TypedDict construction ([pantsbuild#19166](pantsbuild#19166)) * Have package_dists.InvalidEntryPoint subclass InvalidFieldException ([pantsbuild#19149](pantsbuild#19149)) * Check for `CI=true`, not `CI=1` for cherry-picking ([pantsbuild#19141](pantsbuild#19141)) * Set up remote caching in CI ([pantsbuild#19144](pantsbuild#19144)) * refactor(internal): adjust pants_venv venv_dir calculation ([pantsbuild#19140](pantsbuild#19140)) * Prepare `2.16.0rc4`. ([pantsbuild#19146](pantsbuild#19146)) * Warn about `files()` in PEXes in one place ([pantsbuild#19027](pantsbuild#19027)) * Drop our explicit dep on `syn` ([pantsbuild#19134](pantsbuild#19134)) * Fix auto-cherry-picker's merge-conflicts ([pantsbuild#19125](pantsbuild#19125)) * Use explicit depths on fetches when running cherry-picks in CI ([pantsbuild#19127](pantsbuild#19127)) * Make determine_python() pin to 3.9 ([pantsbuild#19116](pantsbuild#19116)) * Upgrade to `actions/checkout@v3` ([pantsbuild#19112](pantsbuild#19112)) * Run the cherry pick script with `-x` for debugging ([pantsbuild#19095](pantsbuild#19095)) * Add more linux x86 test CI shards ([pantsbuild#19099](pantsbuild#19099)) * Use a trait for remote ByteStore network implementation ([pantsbuild#19050](pantsbuild#19050)) * Increase the logging of release version file publishing. ([pantsbuild#19092](pantsbuild#19092)) * Remove the Toolchain plugin ([pantsbuild#18978](pantsbuild#18978)) * Fix bad merge of pantsbuild#18829. ([pantsbuild#19080](pantsbuild#19080)) * Revert "Implement layout="zip" for Lambda/GCF, skipping lambdex" ([pantsbuild#19071](pantsbuild#19071)) * Remove unnecessary interpreter constraint config. ([pantsbuild#19065](pantsbuild#19065)) * Use hand-written change detection for PR/push job trimming ([pantsbuild#19045](pantsbuild#19045)) * Do not build wheels on push, since that is now accomplished by the release job. ([pantsbuild#19063](pantsbuild#19063)) * Additional release job publishing fixes ([pantsbuild#19058](pantsbuild#19058)) * Change CI trigger to includelist `main` and `2.*.x` ([pantsbuild#19059](pantsbuild#19059)) * Release doc and script fixes ([pantsbuild#19043](pantsbuild#19043)) * Update cherry-picker to use `pull_request_target` ([pantsbuild#19048](pantsbuild#19048)) * Prepare `2.16.0rc3`. ([pantsbuild#19044](pantsbuild#19044)) * Prepare `2.15.1`. ([pantsbuild#19042](pantsbuild#19042)) * Fixup welcome-newcomers.yaml ([pantsbuild#19039](pantsbuild#19039))
Internal changes: * Fix TypedDict construction ([pantsbuild#19166](pantsbuild#19166)) * Have package_dists.InvalidEntryPoint subclass InvalidFieldException ([pantsbuild#19149](pantsbuild#19149)) * Check for `CI=true`, not `CI=1` for cherry-picking ([pantsbuild#19141](pantsbuild#19141)) * Set up remote caching in CI ([pantsbuild#19144](pantsbuild#19144)) * refactor(internal): adjust pants_venv venv_dir calculation ([pantsbuild#19140](pantsbuild#19140)) * Prepare `2.16.0rc4`. ([pantsbuild#19146](pantsbuild#19146)) * Warn about `files()` in PEXes in one place ([pantsbuild#19027](pantsbuild#19027)) * Drop our explicit dep on `syn` ([pantsbuild#19134](pantsbuild#19134)) * Fix auto-cherry-picker's merge-conflicts ([pantsbuild#19125](pantsbuild#19125)) * Use explicit depths on fetches when running cherry-picks in CI ([pantsbuild#19127](pantsbuild#19127)) * Make determine_python() pin to 3.9 ([pantsbuild#19116](pantsbuild#19116)) * Upgrade to `actions/checkout@v3` ([pantsbuild#19112](pantsbuild#19112)) * Run the cherry pick script with `-x` for debugging ([pantsbuild#19095](pantsbuild#19095)) * Add more linux x86 test CI shards ([pantsbuild#19099](pantsbuild#19099)) * Use a trait for remote ByteStore network implementation ([pantsbuild#19050](pantsbuild#19050)) * Increase the logging of release version file publishing. ([pantsbuild#19092](pantsbuild#19092)) * Remove the Toolchain plugin ([pantsbuild#18978](pantsbuild#18978)) * Fix bad merge of pantsbuild#18829. ([pantsbuild#19080](pantsbuild#19080)) * Revert "Implement layout="zip" for Lambda/GCF, skipping lambdex" ([pantsbuild#19071](pantsbuild#19071)) * Remove unnecessary interpreter constraint config. ([pantsbuild#19065](pantsbuild#19065)) * Use hand-written change detection for PR/push job trimming ([pantsbuild#19045](pantsbuild#19045)) * Do not build wheels on push, since that is now accomplished by the release job. ([pantsbuild#19063](pantsbuild#19063)) * Additional release job publishing fixes ([pantsbuild#19058](pantsbuild#19058)) * Change CI trigger to includelist `main` and `2.*.x` ([pantsbuild#19059](pantsbuild#19059)) * Release doc and script fixes ([pantsbuild#19043](pantsbuild#19043)) * Update cherry-picker to use `pull_request_target` ([pantsbuild#19048](pantsbuild#19048)) * Prepare `2.16.0rc3`. ([pantsbuild#19044](pantsbuild#19044)) * Prepare `2.15.1`. ([pantsbuild#19042](pantsbuild#19042)) * Fixup welcome-newcomers.yaml ([pantsbuild#19039](pantsbuild#19039))
Internal changes: * Fix TypedDict construction ([#19166](#19166)) * Have package_dists.InvalidEntryPoint subclass InvalidFieldException ([#19149](#19149)) * Check for `CI=true`, not `CI=1` for cherry-picking ([#19141](#19141)) * Set up remote caching in CI ([#19144](#19144)) * refactor(internal): adjust pants_venv venv_dir calculation ([#19140](#19140)) * Prepare `2.16.0rc4`. ([#19146](#19146)) * Warn about `files()` in PEXes in one place ([#19027](#19027)) * Drop our explicit dep on `syn` ([#19134](#19134)) * Fix auto-cherry-picker's merge-conflicts ([#19125](#19125)) * Use explicit depths on fetches when running cherry-picks in CI ([#19127](#19127)) * Make determine_python() pin to 3.9 ([#19116](#19116)) * Upgrade to `actions/checkout@v3` ([#19112](#19112)) * Run the cherry pick script with `-x` for debugging ([#19095](#19095)) * Add more linux x86 test CI shards ([#19099](#19099)) * Use a trait for remote ByteStore network implementation ([#19050](#19050)) * Increase the logging of release version file publishing. ([#19092](#19092)) * Remove the Toolchain plugin ([#18978](#18978)) * Fix bad merge of #18829. ([#19080](#19080)) * Revert "Implement layout="zip" for Lambda/GCF, skipping lambdex" ([#19071](#19071)) * Remove unnecessary interpreter constraint config. ([#19065](#19065)) * Use hand-written change detection for PR/push job trimming ([#19045](#19045)) * Do not build wheels on push, since that is now accomplished by the release job. ([#19063](#19063)) * Additional release job publishing fixes ([#19058](#19058)) * Change CI trigger to includelist `main` and `2.*.x` ([#19059](#19059)) * Release doc and script fixes ([#19043](#19043)) * Update cherry-picker to use `pull_request_target` ([#19048](#19048)) * Prepare `2.16.0rc3`. ([#19044](#19044)) * Prepare `2.15.1`. ([#19042](#19042)) * Fixup welcome-newcomers.yaml ([#19039](#19039))
This replaces the use of https://github.com/tj-actions/changed-files with a much simpler hand-written version:
HEAD^)HEADof the base branchgit diff --name-only $comparison_sha HEADThis is basically what the action does, except it needs to handle a lot more edge cases/functionality that don't matter to pants: categorising the changes in detail (e.g. which files are specifically added vs. modified vs. renamed etc.), submodules, and various other forms of customisation. Pants just cares which files have any changes at all, which is much simpler.
Handling PRs is a bit subtle, but the 'simple' implementation (just diff Actions'
HEADvs base branchHEADin isolation) is correct, without needing to deal with commit ranges or finding a merge base, I think:HEADand PRHEADby default: this is why actions don't run if there's merge conflictsHEADHEADincludes the base branchHEADand any changes there. Diffing the base branchHEADand GHAHEADwill identify only the changes from the PR that were merged in.For instance, this PR branches off af8004a from last week, which is 30 commits older than the current
mainHEADa267fef. Here's the results of variousgit diff --name-only $sha1 $sha2 | pants run build-support/bin/classify_changed_files.pycalls:mainci_config docs other release rustmainci_config docs other release rustci_config othermainci_config otherThis approach ensures we're diffing the actual changes that would get merged (if nothing else merged, cf. a merge queue), meaning the contents of the eventual squash-and-merge commit, which can be slightly different to what's shown in the PR UI. It also means we don't need to worry about PRs getting too far from
mainfor change detection to work, because it's literally diffing commits and their file trees in isolation, rather than needing to traverse far into history.This PR tests the PR logic, and I've tested the push logic on my fork.