Do not attempt to send screenshots to Pixel Eagle without a token (#16655)

# Objective
Running Github Actions on forks helps users to reduce the amount of CI
errors they get before submitting a PR. However, due to how workflows
are set up on the Bevy repository, this can result in errors occurring
for jobs that may not be related to their PR - in this case, uploading
screenshots to Pixel Eagle.

## Solution
The Pixel Eagle workflow is skipped if we aren't running on the Bevy
repository.

If we are on the Bevy repository, or the user has set it to run
elsewhere, we check if the `PIXELEAGLE_TOKEN` secret is set. If it
isn't, we skip uploading screenshots to Pixel Eagle.

* Artifacts still continue to generate, in case the user needs them.
* In the event that the Pixel Eagle workflow runs, but the
`PIXELEAGLE_TOKEN` secret isn't set, we generate a step summary that
notifies the user of why it was skipped.
https://github.com/LikeLakers2/bevy/actions/runs/12173329006/attempts/1#summary-33953502068
for an example.

## Testing
Lots. And lots. Of trying to get Github Actions to work with me.
This commit is contained in:
MichiRecRoom 2024-12-05 16:00:01 -05:00 committed by GitHub
parent 76d610d465
commit ec39f6b904
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -16,18 +16,33 @@ on:
required: true
type: string
env:
# Unfortunately, we can't check secrets in `if:` conditionals. However, Github's own documentation
# suggests a workaround: Putting the secret in an environment variable, and checking that instead.
PIXELEAGLE_TOKEN_EXISTS: ${{ secrets.PIXELEAGLE_TOKEN != '' }}
jobs:
send-to-pixel-eagle:
name: Send screenshots to Pixel Eagle
runs-on: ubuntu-24.04
# Pixel Eagle is irrelevant for most forks, even of those that allow workflows to run. Thus, we
# disable this job for any forks. Any forks where Pixel Eagle is relevant can comment out the
# `if:` conditional below.
if: ${{ github.repository == 'bevyengine/bevy' }}
steps:
- name: Notify user on non-existent token
if: ${{ ! fromJSON(env.PIXELEAGLE_TOKEN_EXISTS) }}
run: |
echo "The PIXELEAGLE_TOKEN secret does not exist, so uploading screenshots to Pixel Eagle was skipped." >> $GITHUB_STEP_SUMMARY
- name: Download artifact
if: ${{ fromJSON(env.PIXELEAGLE_TOKEN_EXISTS) }}
uses: actions/download-artifact@v4
with:
pattern: ${{ inputs.artifact }}
- name: Send to Pixel Eagle
if: ${{ fromJSON(env.PIXELEAGLE_TOKEN_EXISTS) }}
env:
project: B04F67C0-C054-4A6F-92EC-F599FEC2FD1D
run: |