fix(netlify): trigger master deploys on actual source changes#3195
Merged
fix(netlify): trigger master deploys on actual source changes#3195
Conversation
The previous `ignore` rule across all three apps gated master deploys
on `apps/<app>/CHANGELOG.md` changes only. The release-PR convention
assumed every meaningful push to master would also bump CHANGELOG.md
— in practice it didn't, so the master backlog piled up silently:
- app.tangle.tools was stuck on the v0.1.7 release from August 2025.
Every PR since then (iframe feature, perf overhaul, design polish,
sandbox-ui bump, dead-code purges, ~25 PRs total) was deployed to
Netlify, then immediately cancelled with 'Canceled build due to no
content change' because no CHANGELOG line moved.
- leaderboard.tangle.tools never had a successful deploy at all.
- cloud.tangle.tools accidentally avoided the bug entirely because
in PR #3184 (iframe env var) the ignore rule got pulled INSIDE
the [context.branch-deploy.environment] table, where it parsed as
just an env var named 'ignore' instead of a build directive. So
cloud has been deploying on every master push regardless. Lucky
accident, but worth fixing.
This change:
1. tangle-cloud: moves `ignore` back to [build] (out of the env
block where my earlier PR misplaced it), and updates the rule to
the new pattern below.
2. tangle-dapp + leaderboard: replaces the CHANGELOG-only check with
a source-tree check.
The new rule for each app:
ignore = '[ "$BRANCH" != "master" ] && exit 1 || \
git diff --quiet $CACHED_COMMIT_REF $COMMIT_REF -- \
apps/<app>/ libs/ package.json yarn.lock tsconfig.base.json nx.json \
&& exit 0 || exit 1'
Builds master when ANY of those paths changed:
- apps/<app>/ → app's own source (CHANGELOG.md is inside this, so
release-PR convention still triggers a build)
- libs/ → shared libs that the app actually consumes
- package.json → workspace dependency manifest
- yarn.lock → resolved versions (catches lockfile-only fixes like
#3191 that production needs)
- tsconfig.base.json + nx.json → build-graph config changes
✅ Deploy Preview for tangle-cloud ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
✅ Deploy Preview for tangle-dapp ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
✅ Deploy Preview for tangle-leaderboard ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
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.
The previous
ignorerule across all three apps gated master deploys onapps/<app>/CHANGELOG.mdonly. Result: every meaningful push since the last release-PR was silently cancelled by Netlify with 'Canceled build due to no content change'.Damage report
ignorerule got pulled INTO the[context.branch-deploy.environment]table, parsing as just an env var namedignoreinstead of a build directive. So cloud deployed on every master push regardless. Lucky.What this PR ships
ignoreback to[build]where it belongs, and uses the new rule belowNew rule
Master builds when ANY of:
apps/<app>/→ own source (CHANGELOG.md inside, so release-PRs still trigger)libs/→ shared libs the app consumespackage.json→ dep changesyarn.lock→ catches lockfile-only fixes like fix(deps): re-sync yarn.lock with package.json #3191tsconfig.base.json+nx.json→ build-graph config changes