Skip to content

Conversation

@sellout
Copy link
Contributor

@sellout sellout commented Oct 14, 2025

Overview

There are two issues fixed here:

  1. The manual workflow_dispatch trigger didn’t work because the workflow was trying to look up the PR number, which doesn’t exist for workflow_dispatch and
  2. The cache key wasn’t precise enough – there would be a cache hit, but we’d still have to rebuild everything.

Implementation notes

This also makes the workflow behave a bit better under workflow_dispatch than it would have – with a PR, we let the job pass on failure, and add a comment to the PR. Since workflow_dispatch doesn’t give us a place to comment, we let the job fail on failure.

Test coverage

The modified workflow won’t run on this repo until it’s merged, so I’ve run the updated workflow on my fork. This at least lets us know that there are no syntax errors, and we get a successful run after triggering with workflow_dispatch.

Unfortunately, my fork doesn’t have a cache for this, so there’s a cache miss – but the keys look correct in the output, and once run on this repo, we should expect to see a cache miss, with the cache restored from the freeze-file-hashed prefix, and then the cache updated with the new dependency builds.

The changes to support commenting on a PR broke the ability to manually
run the workflow. This condionalizes the parts required for
`pull_request_target` so that running on a branch explicitly will work.

It also conditionalizes the `continue-on-error` value so that runs
triggered by `workflow_dispatch` will fail (if something goes wrong)
rather than hiding the failure as we do when we add a comment to the PR.
It was previously only based on the cabal.project.freeze file, which
changes very rarely. However, a change to build flags (as happened
in unisonweb#5856) can cause dependencies to need to be rebuilt. But if the cache
key was a perfect match, we wouldn’t cache the updated dependency
builds.

This adds a hash for all Cabal files to the key, so any change that
would affect dependencies causes a cache miss. It also adds the old key
(which is a prefix of the new one) as a restore key, so even when cabal
files change, we load a cache for the correct LTS (GHC version, etc.)
which can prevent cache churn in the period after LTS updates.
@sellout sellout requested a review from a team as a code owner October 14, 2025 21:01
@sellout sellout requested a review from aryairani October 14, 2025 21:01
Copy link
Contributor

@aryairani aryairani left a comment

Choose a reason for hiding this comment

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

looks good!

@aryairani aryairani merged commit 87f034b into unisonweb:trunk Oct 15, 2025
17 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.

2 participants