From f5c517a037badfbe2c7487148d010d26f768c46e Mon Sep 17 00:00:00 2001 From: Adam Jones Date: Thu, 18 Sep 2025 14:48:07 +0000 Subject: [PATCH] Fix create-release job condition to properly handle skipped publish jobs The previous condition had two issues: 1. `always()` was incorrectly placed after the changes_made check, making it ineffective 2. The condition was overly verbose with explicit OR checks for all combinations This fix: - Moves `always()` to the beginning so the condition evaluates even when publish jobs are skipped - Simplifies the logic to check if at least one publish job succeeded - Adds documentation explaining why always() is needed Without `always()` at the start, the job would never run when dependencies are skipped, and the result checks would never be evaluated. --- .github/workflows/release.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d1eba1dc..64a0c09e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -193,11 +193,13 @@ jobs: create-release: needs: [update-packages, create-metadata, publish-pypi, publish-npm] + # create release when we've published a new version to npm or pypi + # always() is needed to evaluate this condition even when dependency jobs are skipped + # See: https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idif if: | - (needs.update-packages.outputs.changes_made == 'true' && always()) && - ((needs.publish-pypi.result == 'success' && needs.publish-npm.result == 'skipped') || - (needs.publish-pypi.result == 'skipped' && needs.publish-npm.result == 'success') || - (needs.publish-pypi.result == 'success' && needs.publish-npm.result == 'success')) + always() && + needs.update-packages.outputs.changes_made == 'true' && + (needs.publish-pypi.result == 'success' || needs.publish-npm.result == 'success') runs-on: ubuntu-latest environment: release permissions: