Skip to content

Commit

Permalink
security: set-output cmd deprecated. Use $GITHUB_OUTPUT env file (#…
Browse files Browse the repository at this point in the history
…9287)

* security: `set-output` cmd deprecated. Use `$GITHUB_OUTPUT` env file

To avoid untrusted logged data to use `save-state` and `set-output` workflow commands without the intention of the workflow author we have introduced a new set of environment files to manage state and output.

Starting 1st June 2023 workflows using `save-state` or `set-output` commands via stdout will fail with an error.

https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/

* chore: apply fix found at actions/stale#859

* test: fixing report escapes

* test: fixing report escapes

* test: fixing report escapes

* test: fixing report escapes

* test: fixing report escapes
  • Loading branch information
davorpa committed Feb 23, 2023
1 parent bcd9818 commit 44dd203
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 20 deletions.
13 changes: 7 additions & 6 deletions .github/actions/awesomebot-gh-summary-action/action.yml
Expand Up @@ -86,12 +86,13 @@ runs:
}
}
# HACK to single line strings (https://trstringer.com/github-actions-multiline-strings/)
$text = $text -replace "`%","%25"
$text = $text -replace "`n","%0A"
$text = $text -replace "`r","%25"
# set output
echo "::set-output name=text::$text"
# set multiline output (the way of prevent script injection is with random delimiters)
# https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#multiline-strings
# https://github.com/orgs/community/discussions/26288#discussioncomment-3876281
$delimiter = (openssl rand -hex 8) | Out-String
echo "text<<$delimiter" >> $env:GITHUB_OUTPUT
echo "$text" >> $env:GITHUB_OUTPUT
echo "$delimiter" >> $env:GITHUB_OUTPUT
- name: Write output
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/check-urls.yml
Expand Up @@ -29,9 +29,9 @@ jobs:
- name: Determine workflow parameters
id: init-params
run: |
echo "::set-output name=fetch_depth::0";
echo "fetch_depth=0" >> $GITHUB_OUTPUT
if [ "${{ github.event_name }}" == "pull_request" ]; then
echo "::set-output name=fetch_depth::0";
echo "fetch_depth=0" >> $GITHUB_OUTPUT
fi
- uses: actions/checkout@v3
Expand Down
6 changes: 4 additions & 2 deletions .github/workflows/detect-conflicting-prs.yml
Expand Up @@ -51,10 +51,12 @@ jobs:
run: |
echo "$INPUT_PRS" \
| jq --compact-output --raw-output 'to_entries | map({number: .key, dirty: .value})' \
| sed -e 's/^/::set-output name=prs::/'
| sed -e 's/^/prs=/' \
>> $GITHUB_OUTPUT
echo "$INPUT_PRS" \
| jq --raw-output 'to_entries | length' \
| sed -e 's/^/::set-output name=prs-len::/'
| sed -e 's/^/prs-len=/' \
>> $GITHUB_OUTPUT
env:
INPUT_PRS: ${{ steps.pr-labeler.outputs.prDirtyStatuses }}

Expand Down
28 changes: 18 additions & 10 deletions .github/workflows/stale.yml
Expand Up @@ -81,7 +81,7 @@ jobs:
stale-pr-label: " "

- name: Print outputs for issues
run: echo ${{ join(steps.stale-issues.outputs.*, ',') }}
run: echo ${{ format('{0},{1}', toJSON(steps.stale-issues.outputs.staled-issues-prs), toJSON(steps.stale-issues.outputs.closed-issues-prs)) }}

- name: Stale Pull Requests
uses: actions/stale@v7
Expand Down Expand Up @@ -120,7 +120,7 @@ jobs:
stale-issue-label: " "

- name: Print outputs for PRs
run: echo ${{ join(steps.stale-prs.outputs.*, ',') }}
run: echo ${{ format('{0},{1}', toJSON(steps.stale-prs.outputs.staled-issues-prs), toJSON(steps.stale-prs.outputs.closed-issues-prs)) }}

## Removing private properties from each JSON object and compute array length
## TODO: Delete these set-* workarounds when resolve actions/stale#806 ?
Expand All @@ -129,17 +129,21 @@ jobs:
run: |
echo $INPUT_ISSUES \
| jq --compact-output --raw-output 'del(.[] | .[to_entries[] | .key | select(startswith("_"))])' \
| sed -e 's/^/::set-output name=issues::/'
| sed -e 's/^/issues=/' \
>> $GITHUB_OUTPUT
echo $INPUT_ISSUES \
| jq --raw-output '. | length' \
| sed -e 's/^/::set-output name=issues-len::/'
| sed -e 's/^/issues-len=/' \
>> $GITHUB_OUTPUT
echo $INPUT_PRS \
| jq --compact-output --raw-output 'del(.[] | .[to_entries[] | .key | select(startswith("_"))])' \
| sed -e 's/^/::set-output name=prs::/'
| sed -e 's/^/prs=/' \
>> $GITHUB_OUTPUT
echo $INPUT_PRS \
| jq --raw-output '. | length' \
| sed -e 's/^/::set-output name=prs-len::/'
| sed -e 's/^/prs-len=/' \
>> $GITHUB_OUTPUT
env:
INPUT_ISSUES: ${{ steps.stale-issues.outputs.staled-issues-prs }}
INPUT_PRS: ${{ steps.stale-prs.outputs.staled-issues-prs }}
Expand All @@ -148,17 +152,21 @@ jobs:
run: |
echo $INPUT_ISSUES \
| jq --compact-output --raw-output 'del(.[] | .[to_entries[] | .key | select(startswith("_"))])' \
| sed -e 's/^/::set-output name=issues::/'
| sed -e 's/^/issues=/' \
>> $GITHUB_OUTPUT
echo $INPUT_ISSUES \
| jq --raw-output '. | length' \
| sed -e 's/^/::set-output name=issues-len::/'
| sed -e 's/^/issues-len=/' \
>> $GITHUB_OUTPUT
echo $INPUT_PRS \
| jq --compact-output --raw-output 'del(.[] | .[to_entries[] | .key | select(startswith("_"))])' \
| sed -e 's/^/::set-output name=prs::/'
| sed -e 's/^/prs=/' \
>> $GITHUB_OUTPUT
echo $INPUT_PRS \
| jq --raw-output '. | length' \
| sed -e 's/^/::set-output name=prs-len::/'
| sed -e 's/^/prs-len=/' \
>> $GITHUB_OUTPUT
env:
INPUT_ISSUES: ${{ steps.stale-issues.outputs.closed-issues-prs }}
INPUT_PRS: ${{ steps.stale-prs.outputs.closed-issues-prs }}
Expand Down

0 comments on commit 44dd203

Please sign in to comment.