From 1d77dd73bd4c0cdcbc1c0c978916d2ecfa8db344 Mon Sep 17 00:00:00 2001 From: vivodi <103735539+vivodi@users.noreply.github.com> Date: Wed, 15 Jan 2025 14:58:17 +0800 Subject: [PATCH] Autofix --- .github/workflows/autofix.yml | 106 ++++++++++++++++++++++++++++++++++ .github/workflows/test.yml | 14 ----- 2 files changed, 106 insertions(+), 14 deletions(-) create mode 100644 .github/workflows/autofix.yml diff --git a/.github/workflows/autofix.yml b/.github/workflows/autofix.yml new file mode 100644 index 0000000000..9f9c88aeed --- /dev/null +++ b/.github/workflows/autofix.yml @@ -0,0 +1,106 @@ +name: Autofix +on: [ push, pull_request_target] +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref || github.run_id }} + cancel-in-progress: true +env: + PYTHON_VERSION: '3.13' # renovate: datasource=python-version depName=python + UV_VERSION: 0.5.18 # renovate: datasource=pypi depName=uv +jobs: + uv-lock: + name: uv lock + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 + with: + repository: ${{ github.event.pull_request.head.repo.full_name }} + ref: ${{ github.head_ref }} + token: ${{ secrets.FLEXGETBOT_PAT }} + - name: check for mergeability + if: github.event_name == 'pull_request_target' + env: + GH_TOKEN: ${{ github.token }} + run: | + retryCount=3 + retryInterval=5 + while true; do + echo "Checking whether the pull request can be merged" + prInfo=$(gh api \ + -H "Accept: application/vnd.github+json" \ + -H "X-GitHub-Api-Version: 2022-11-28" \ + /repos/"$GITHUB_REPOSITORY"/pulls/${{ github.event.pull_request.number }}) + mergeable=$(jq -r .mergeable <<< "$prInfo") + mergedSha=$(jq -r .merge_commit_sha <<< "$prInfo") + if [[ "$mergeable" == "null" ]]; then + if (( retryCount == 0 )); then + echo "Not retrying anymore, probably GitHub is having internal issues" + exit 1 + else + (( retryCount -= 1 )) || true + echo "GitHub is still computing whether this PR can be merged, waiting $retryInterval seconds before trying again ($retryCount retries left)" + sleep "$retryInterval" + (( retryInterval *= 2 )) || true + fi + else + break + fi + done + if [[ "$mergeable" == "true" ]]; then + echo "The PR can be merged, checking the merge commit $mergedSha" + else + echo "The PR cannot be merged, it has a merge conflict, cancelling the workflow..." + gh api \ + --method POST \ + -H "Accept: application/vnd.github+json" \ + -H "X-GitHub-Api-Version: 2022-11-28" \ + /repos/"$GITHUB_REPOSITORY"/actions/runs/"$GITHUB_RUN_ID"/cancel + sleep 60 + # If it's still not canceled after a minute, something probably went wrong, just exit + exit 1 + fi + echo "mergedSha=$mergedSha" >> "$GITHUB_ENV" + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 + if: github.event_name == 'pull_request_target' + with: + ref: ${{ env.mergedSha }} + path: merge + - name: Install uv + uses: astral-sh/setup-uv@887a942a15af3a7626099df99e897a18d9e5ab3a # v5 + with: + enable-cache: true + python-version: ${{ env.PYTHON_VERSION }} + version: ${{ env.UV_VERSION }} + - run: | + if [[ ${{github.event_name}} == "push" ]] + then + uv lock + else + uv lock --directory merge + mv merge/uv.lock uv.lock + fi + if ! git diff --exit-code + then + git config user.email github-actions[bot]@users.noreply.github.com + git config user.name github-actions[bot] + git add uv.lock + git commit -m "Autofix: update uv.lock" + if ! git push + then + echo "failed=1" >> "$GITHUB_ENV" + fi + fi + - uses: actions/github-script@v7 + if: env.failed == 1 + with: + script: | + github.rest.issues.createComment({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + body: `The \`uv.lock\` file is missing or needs to be updated and we can't automatically fix it for you because you didn't check the 'Allow edits by maintainers' box. + + Please check the box and push again or manually run + \`\`\` + uv lock + \`\`\`` + }) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 664fa082a6..410c2666ab 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -15,20 +15,6 @@ concurrency: env: UV_VERSION: 0.5.18 # renovate: datasource=pypi depName=uv jobs: - check-lockfile-status: - name: Check Lockfile Status - runs-on: ubuntu-latest - env: - PYTHON_VERSION: '3.13' # renovate: datasource=python-version depName=python - steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 - - name: Install uv - uses: astral-sh/setup-uv@887a942a15af3a7626099df99e897a18d9e5ab3a # v5 - with: - enable-cache: true - python-version: ${{ env.PYTHON_VERSION }} - version: ${{ env.UV_VERSION }} - - run: uv lock --locked tests: name: Run Tests runs-on: ${{ matrix.operating-system }}