name: Track outdated dependencies on: schedule: - cron: '0 18 * * 1-4' workflow_dispatch: jobs: run: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v7 with: persist-credentials: false - name: Gather requirements id: check-outdated run: | python -m venv venv source venv/bin/activate python -m pip install --upgrade pip pip install --requirement scripts/make_release_requirements.txt outdated="$(pip list --outdated --format json | jq)" outdated_count="$(echo "$outdated" | jq 'length')" outdated="$(echo "${outdated}" | jq "[{\"outdated_count\":\"${outdated_count}\"}] + .")" outdated="$(echo "${outdated}" | jq 'map(if .latest_filetype == "wheel" then del(.latest_filetype) else . end)')" echo -e "${outdated}" | npx --yes prettier --parser jsonc --trailing-comma all > scripts/make_release_requirements.json git diff --color changes="$(git diff)" delimiter="$(openssl rand -hex 8)" echo "changes<<${delimiter}" >> "${GITHUB_OUTPUT}" echo "${changes}" >> "${GITHUB_OUTPUT}" echo "${delimiter}" >> "${GITHUB_OUTPUT}" - name: Create or update pull request id: cpr uses: peter-evans/create-pull-request@v8 with: commit-message: Update outdated dependencies list labels: cleanup-no-release-required, dependencies, github_actions title: ⬆ Update outdated dependencies list body: | ```diff ${{ steps.check-outdated.outputs.changes }} ``` author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> branch: create-pull-request/outdated committer: GitHub delete-branch: true token: ${{ secrets.PHP_CURL_CLASS_BOT_TOKEN }} push-to-fork: php-curl-class-helper/php-curl-class env: GITHUB_TOKEN: ${{ secrets.PHP_CURL_CLASS_BOT_TOKEN }} - name: Pull request created or updated if: ${{ steps.cpr.outputs.pull-request-number }} run: | echo "Pull request: ${{ steps.cpr.outputs.pull-request-url }}" - name: Approve outdated dependencies pull request if: ${{ steps.cpr.outputs.pull-request-number }} run: | review_status="$( gh pr view "${PR_URL}" \ --json="reviewDecision" \ --jq=".reviewDecision" )" echo "Pull request review status: ${review_status}" if [[ "${review_status}" != "APPROVED" ]]; then gh pr review --approve "${PR_URL}" fi env: PR_URL: ${{ steps.cpr.outputs.pull-request-url }} GITHUB_TOKEN: ${{ secrets.PHP_CURL_CLASS_TOKEN }} - name: Enable auto-merge for outdated dependencies pull request if: ${{ steps.cpr.outputs.pull-request-number }} run: | gh pr merge --auto --squash "${PR_URL}" env: PR_URL: ${{ steps.cpr.outputs.pull-request-url }} GITHUB_TOKEN: ${{ secrets.PHP_CURL_CLASS_TOKEN }}