From e17650a203bb594f8e92c300879c71e1aebba33d Mon Sep 17 00:00:00 2001 From: kevin Heifner Date: Mon, 7 Sep 2026 13:19:47 -0500 Subject: [PATCH] ci: report real job results in the build notification MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The `notification` job passed `job-results` as a comma-separated list. Wire-Network/notification-action word-splits that input on whitespace and matches each word against `^([^:]+):([^:]+)$`, so a comma-separated list arrives as a single multi-colon word, matches nothing, and parses to `{}`. Every status probe against `{}` is false, so the action fell through to its `else` branch and posted `✅ SUCCESS` to Mattermost regardless of what the jobs did — the status in the message was never derived from the inputs at all. Switch to the space-separated form the action actually parses. JSON is not a usable alternative here: the action interpolates the input unquoted into a double-quoted shell assignment, which strips the inner quotes and yields invalid JSON that fails the same way. The reported set and the skipped-to-success mapping for `build-platforms` are unchanged, as is the `all-passing` gate — only the delimiter was wrong. --- .github/workflows/build.yaml | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index c49198950..3ee9bf954 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -292,6 +292,13 @@ jobs: webhook-url: ${{ secrets.WEBHOOK_URL }} notification-type: 1 workflow-name: "CDT Build & Test" - # Comma-separated, matching wire-sysio's all-passing notification. - job-results: "discover:${{ needs.discover.result }},build-platforms:${{ needs.build-platforms.result == 'skipped' && 'success' || needs.build-platforms.result }},build:${{ needs.build.result }},verify-packages:${{ needs.verify-packages.result }},all-passing:${{ needs.all-passing.result }}" + # SPACE-separated `job:status` pairs. The action word-splits this input; a + # comma-separated list arrives as one multi-colon word, parses to {}, and + # is reported as SUCCESS whatever the jobs actually did. + job-results: >- + discover:${{ needs.discover.result }} + build-platforms:${{ needs.build-platforms.result == 'skipped' && 'success' || needs.build-platforms.result }} + build:${{ needs.build.result }} + verify-packages:${{ needs.verify-packages.result }} + all-passing:${{ needs.all-passing.result }} github-context: ${{ toJSON(github) }}