diff --git a/.github/workflows/check-changeset.yml b/.github/workflows/check-changeset.yml index bd1de9b3cb8..a851bb4793f 100644 --- a/.github/workflows/check-changeset.yml +++ b/.github/workflows/check-changeset.yml @@ -47,7 +47,10 @@ jobs: yarn ts-node-script scripts/ci/check_changeset.ts id: check-changeset - name: Print changeset checker output - run: echo "${{steps.check-changeset.outputs.CHANGESET_ERROR_MESSAGE}}" + run: | + cat << 'eof_delimiter_that_will_never_occur_in_CHANGESET_ERROR_MESSAGE' + ${{steps.check-changeset.outputs.CHANGESET_ERROR_MESSAGE}} + eof_delimiter_that_will_never_occur_in_CHANGESET_ERROR_MESSAGE - name: Print blocking failure status run: echo "${{steps.check-changeset.outputs.BLOCKING_FAILURE}}" - name: Find Comment diff --git a/scripts/ci/check_changeset.ts b/scripts/ci/check_changeset.ts index 0c514af0a89..da6d62f0c1b 100644 --- a/scripts/ci/check_changeset.ts +++ b/scripts/ci/check_changeset.ts @@ -17,6 +17,7 @@ import { resolve } from 'path'; import { existsSync } from 'fs'; +import { writeFile } from 'fs/promises'; import { exec } from 'child-process-promise'; import chalk from 'chalk'; import simpleGit from 'simple-git'; @@ -28,6 +29,14 @@ const git = simpleGit(root); const baseRef = process.env.GITHUB_PULL_REQUEST_BASE_SHA || 'master'; const headRef = process.env.GITHUB_PULL_REQUEST_HEAD_SHA || 'HEAD'; +const githubOutputFile = (function (): string { + const value = process.env.GITHUB_OUTPUT; + if (!value) { + throw new Error('GITHUB_OUTPUT environment variable must be set'); + } + return value; +})(); + // Version bump text converted to rankable numbers. const bumpRank: Record = { 'patch': 0, @@ -205,10 +214,13 @@ async function main() { * step. See: * https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#setting-an-output-parameter */ - if (errors.length > 0) - await exec( - `echo "CHANGESET_ERROR_MESSAGE=${errors.join('%0A')}" >> $GITHUB_OUTPUT` + if (errors.length > 0) { + await writeFile( + githubOutputFile, + `CHANGESET_ERROR_MESSAGE=${errors.join('%0A')}\n`, + { flag: 'a' } ); + } process.exit(); }