Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 26 additions & 7 deletions .github/workflows/tools.yml
Original file line number Diff line number Diff line change
Expand Up @@ -318,35 +318,54 @@ jobs:
cat temp-output
tail -n1 temp-output | grep "NEW_VERSION=" >> "$GITHUB_ENV" || true
rm temp-output
env:
BRANCH_NAME: actions/${{ github.ref_name != 'main' && format('{0}/', github.ref_name) || '' }}tools-update-${{ matrix.id }}
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Check for non-bot commits on the existing pull request
id: check-pr
if: github.event_name == 'schedule' || inputs.id == 'all' || inputs.id == matrix.id

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IMO it would make sense to only run that check on schedule, if someone ran a manual update, they likely meant to override the existing PR

Suggested change
if: github.event_name == 'schedule' || inputs.id == 'all' || inputs.id == matrix.id
# When 'inputs.id == matrix.id', non-bot commits are being overwritten
if: github.event_name == 'schedule' || inputs.id == 'all'

# Updating the Action's PR force-pushes its branch, so skip the update
# if someone pushed their own commits to it to avoid discarding them.
env:
GH_TOKEN: ${{ secrets.GH_USER_TOKEN }}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You'd need to add pull-requests permission

Suggested change
GH_TOKEN: ${{ secrets.GH_USER_TOKEN }}
GH_TOKEN: ${{ github.token }}

run: |
PR_URL=$(gh pr list --repo "$GITHUB_REPOSITORY" --head "$BRANCH_NAME" --state open \
--json url,commits,isCrossRepository \
--jq '[.[] | select(.isCrossRepository | not) | select(any(.commits[].authors[]; .email != "github-bot@iojs.org")) | .url] | join(" ")')
if [ -n "$PR_URL" ]; then
echo "::notice::Skipping update, $PR_URL has commits not authored by the bot"
echo "update=false" >> "$GITHUB_OUTPUT"
else
echo "update=true" >> "$GITHUB_OUTPUT"
fi
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
if: steps.check-pr.outputs.update == 'true'
Comment on lines +337 to +342

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
echo "update=false" >> "$GITHUB_OUTPUT"
else
echo "update=true" >> "$GITHUB_OUTPUT"
fi
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
if: steps.check-pr.outputs.update == 'true'
echo "hasNonBotCommits=true" >> "$GITHUB_OUTPUT"
fi
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
if: steps.check-pr.outputs.hasNonBotCommits != 'true'

with:
persist-credentials: false
- name: Set up Python ${{ env.PYTHON_VERSION }}
if: matrix.requires-python && (github.event_name == 'schedule' || inputs.id == 'all' || inputs.id == matrix.id)
if: matrix.requires-python && steps.check-pr.outputs.update == 'true'
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: ${{ env.PYTHON_VERSION }}
allow-prereleases: true
- name: Set up Nix
if: matrix.id == 'nixpkgs-unstable' && (github.event_name == 'schedule' || inputs.id == 'all' || inputs.id == matrix.id)
if: matrix.id == 'nixpkgs-unstable' && steps.check-pr.outputs.update == 'true'
uses: cachix/install-nix-action@13d8dd58da0234aa297dedd986986ccb8e7f3e24 # v31.11.1
- run: ${{ matrix.run }}
if: github.event_name == 'schedule' || inputs.id == 'all' || inputs.id == matrix.id
if: steps.check-pr.outputs.update == 'true'
env:
GITHUB_TOKEN: ${{ secrets.GH_USER_TOKEN }}
- name: Generate commit message if not set
if: env.COMMIT_MSG == '' && (github.event_name == 'schedule' || inputs.id == 'all' || inputs.id == matrix.id)
if: env.COMMIT_MSG == '' && steps.check-pr.outputs.update == 'true'
run: |
echo "COMMIT_MSG=${{ matrix.subsystem }}: update ${{ matrix.id }} to $NEW_VERSION" >> "$GITHUB_ENV"
- uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8.1.1
if: github.event_name == 'schedule' || inputs.id == 'all' || inputs.id == matrix.id
if: steps.check-pr.outputs.update == 'true'
# Creates a PR or update the Action's existing PR, or
# no-op if the base branch is already up-to-date.
with:
token: ${{ secrets.GH_USER_TOKEN }}
branch: actions/${{ github.ref_name != 'main' && format('{0}/', github.ref_name) || '' }}tools-update-${{ matrix.id }} # Custom branch *just* for this Action.
branch: ${{ env.BRANCH_NAME }} # Custom branch *just* for this Action.
delete-branch: true
commit-message: ${{ env.COMMIT_MSG }}
labels: ${{ matrix.label }}
Expand Down
Loading