Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add autofix reminder #17017

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
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
41 changes: 41 additions & 0 deletions .github/workflows/autofix-label-manager.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# This workflow ensures that if the "No Autofix Validation Required" label is
# added to a pull request, the "Autofix Validation Required" label is removed.
name: Autofix Label Manager

on:
pull_request_target:
types: [labeled]

# Allows manual triggering of the workflow for testing
workflow_dispatch:

jobs:
check-to-remove-autofix-label:
env:
GITHUB_REPOSITORY: ${{ github.repository }}
PR_NUMBER: ${{ github.event.number }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
REQUIRES_AUTOFIX_LABEL: "Autofix Validation Required"
DOES_NOT_REQUIRE_AUTOFIX_LABEL: "No Autofix Validation Required"
LABEL_ADDED: ${{ github.event.label.name }}

runs-on: ubuntu-latest
steps:
- name: Check if label "No Autofix Validation Required" is added
shell: bash
run: |
if [ "$LABEL_ADDED" != "$DOES_NOT_REQUIRE_AUTOFIX_LABEL" ]; then
echo "Label $DOES_NOT_REQUIRE_AUTOFIX_LABEL was not added."
exit 0
fi

echo "Label $DOES_NOT_REQUIRE_AUTOFIX_LABEL was added."

# Check if Label $REQUIRES_AUTOFIX_LABEL exists and remove it
REQUIRES_AUTOFIX_LABEL_EXISTS=$(gh api /repos/$GITHUB_REPOSITORY/issues/$PR_NUMBER/labels | jq --arg label "Autofix Validation Required" '.[] | select(.name==$label) | .name')
if [ "$REQUIRES_AUTOFIX_LABEL_EXISTS" == "$REQUIRES_AUTOFIX_LABEL" ]; then
gh api -X DELETE "/repos/$GITHUB_REPOSITORY/issues/$PR_NUMBER/labels/$REQUIRES_AUTOFIX_LABEL"
echo "$REQUIRES_AUTOFIX_LABEL Label removed."
else
echo "$REQUIRES_AUTOFIX_LABEL Label does not exist or was already removed."
fi
56 changes: 56 additions & 0 deletions .github/workflows/autofix-reminder.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# This workflow creates a reminder to query authors to test their queries
# in autofix.
name: Autofix reminder

permissions:
contents: read
pull-requests: write
issues: write

on:
pull_request:
branches:
- main
- "rc/*"
paths:
- "**/*.qhelp"
- "**/*.ql"
- "**/*.qll"
# This workflow
- ".github/workflows/autofix-reminder.yml"

workflow_dispatch:

jobs:
autofix-reminder:
env:
GITHUB_REPOSITORY: ${{ github.repository }}
PR_NUMBER: ${{ github.event.number }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
REQUIRES_AUTOFIX_LABEL: "Autofix Validation Required"
DOES_NOT_REQUIRE_AUTOFIX_LABEL: "No Autofix Validation Required"

runs-on: ubuntu-latest
steps:
- name: Check existing labels
id: label_check
shell: bash
run: |
gh api "repos/${GITHUB_REPOSITORY}/issues/${PR_NUMBER}/labels" | jq -r '.[].name' > labels.txt

if grep -q -x -e "${REQUIRES_AUTOFIX_LABEL}" labels.txt || grep -q -x -e "${DOES_NOT_REQUIRE_AUTOFIX_LABEL}" labels.txt; then
echo "Stopping workflow due to label presence."
echo "should_continue=false" >> $GITHUB_OUTPUT
else
echo "Add $REQUIRES_AUTOFIX_LABEL label."
echo "should_continue=true" >> $GITHUB_OUTPUT
fi

- name: Add label
if: steps.label_check.outputs.should_continue == 'true'
run: |
gh api "repos/${GITHUB_REPOSITORY}/issues/${PR_NUMBER}/labels" -X POST -f "labels[]=$REQUIRES_AUTOFIX_LABEL"

- name: Comment on PR
if: steps.label_check.outputs.should_continue == 'true'
run: gh api "repos/${GITHUB_REPOSITORY}/issues/${PR_NUMBER}/comments" -X POST --field body="This pull request updates '.ql', '.qll', or '.qhelp' files, Please validate that autofixes generated based on these changes are valid. See [the documentation](https://github.com/github/codeql-team/blob/main/docs/best-practices/validating-autofix-for-query-changes.md) (internal access required). If autofix validation is not required, please add the label '${DOES_NOT_REQUIRE_AUTOFIX_LABEL}' to this pull request."
Loading