Skip to content

Match custom extension files to analysed paths by realpath so symlinked packages are not reported as outside analysed paths #20842

Match custom extension files to analysed paths by realpath so symlinked packages are not reported as outside analysed paths

Match custom extension files to analysed paths by realpath so symlinked packages are not reported as outside analysed paths #20842

Workflow file for this run

# https://help.github.com/en/categories/automating-your-workflow-with-github-actions
name: "Issue bot"
on:
workflow_dispatch:
pull_request:
paths-ignore:
- 'compiler/**'
- 'apigen/**'
- 'changelog-generator/**'
push:
branches:
- "2.2.x"
paths-ignore:
- 'compiler/**'
- 'apigen/**'
- 'changelog-generator/**'
concurrency:
group: run-issue-bot-${{ github.head_ref || github.run_id }} # will be canceled on subsequent pushes in pull requests but not branches
cancel-in-progress: true
jobs:
download:
name: "Download data"
runs-on: "ubuntu-latest"
outputs:
matrix: ${{ steps.shards.outputs.shards }}
steps:
- name: Harden the runner (Audit all outbound calls)
uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
with:
egress-policy: audit
- name: "Checkout"
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: "Install PHP"
uses: "shivammathur/setup-php@7c071dfe9dc99bdf297fa79cb49ea005b9fcadbc" # v2.37.1
with:
coverage: "none"
php-version: "8.5"
- name: "Install issue-bot dependencies"
uses: "ramsey/composer-install@65e4f84970763564f46a70b8a54b90d033b3bdda" # v4.0.0
with:
working-directory: "issue-bot"
- name: "Cache downloads"
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
with:
path: ./issue-bot/tmp
key: "issue-bot-download-v8-${{ github.run_id }}"
restore-keys: |
issue-bot-download-v8-
- name: "Download data"
working-directory: "issue-bot"
env:
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
run: ./console.php download > matrix.json
- name: "Output shards"
id: shards
working-directory: "issue-bot"
run: |
echo "shards=$(jq -c '{include: [range(length) | {shard: .}]}' matrix.json)" >> "$GITHUB_OUTPUT"
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: playground-cache
path: issue-bot/tmp/playgroundCache.tmp
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: issue-cache
path: issue-bot/tmp/issueCache.tmp
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: matrix
path: issue-bot/matrix.json
analyse:
name: "Analyse"
needs: download
runs-on: "ubuntu-latest"
strategy:
fail-fast: false
matrix: ${{ fromJSON(needs.download.outputs.matrix) }}
steps:
- name: Harden the runner (Audit all outbound calls)
uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
with:
egress-policy: audit
- name: "Checkout"
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: "Install PHP"
uses: "shivammathur/setup-php@7c071dfe9dc99bdf297fa79cb49ea005b9fcadbc" # v2.37.1
with:
coverage: "none"
php-version: "8.5"
- uses: "ramsey/composer-install@65e4f84970763564f46a70b8a54b90d033b3bdda" # v4.0.0
with:
composer-options: "--no-dev"
- name: "Install issue-bot dependencies"
uses: "ramsey/composer-install@65e4f84970763564f46a70b8a54b90d033b3bdda" # v4.0.0
with:
working-directory: "issue-bot"
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: playground-cache
path: issue-bot/tmp
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: matrix
path: issue-bot
- name: "Extract shard"
working-directory: "issue-bot"
id: chunk
run: |
echo "phpVersion=$(jq -r '.[${{ matrix.shard }}].phpVersion' matrix.json)" >> "$GITHUB_OUTPUT"
echo "playgroundExamples=$(jq -r '.[${{ matrix.shard }}].playgroundExamples' matrix.json)" >> "$GITHUB_OUTPUT"
echo "chunkNumber=$(jq -r '.[${{ matrix.shard }}].chunkNumber' matrix.json)" >> "$GITHUB_OUTPUT"
- name: "Run PHPStan"
working-directory: "issue-bot"
timeout-minutes: 5
run: ./console.php run ${{ steps.chunk.outputs.phpVersion }} ${{ steps.chunk.outputs.playgroundExamples }}
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: results-${{ steps.chunk.outputs.phpVersion }}-${{ steps.chunk.outputs.chunkNumber }}
path: issue-bot/tmp/results-${{ steps.chunk.outputs.phpVersion }}-*.tmp
evaluate:
name: "Evaluate results"
needs: analyse
runs-on: "ubuntu-latest"
steps:
- name: Harden the runner (Audit all outbound calls)
uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
with:
egress-policy: audit
- name: "Checkout"
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: "Install PHP"
uses: "shivammathur/setup-php@7c071dfe9dc99bdf297fa79cb49ea005b9fcadbc" # v2.37.1
with:
coverage: "none"
php-version: "8.5"
- name: "Install issue-bot dependencies"
uses: "ramsey/composer-install@65e4f84970763564f46a70b8a54b90d033b3bdda" # v4.0.0
with:
working-directory: "issue-bot"
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: playground-cache
path: issue-bot/tmp
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: issue-cache
path: issue-bot/tmp
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
pattern: results-*
merge-multiple: true
path: issue-bot/tmp
- name: "List tmp"
run: "ls -lA issue-bot/tmp"
- name: "Evaluate results - pull request"
working-directory: "issue-bot"
if: github.event_name == 'pull_request'
env:
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
run: |
set +e
./console.php evaluate > tmp/step-summary.md
exit_code="$?"
cat tmp/step-summary.md >> "$GITHUB_STEP_SUMMARY"
if [[ "$exit_code" == "2" ]]; then
echo "::notice file=.github/workflows/issue-bot.yml,line=3 ::Issue bot detected open issues which are affected by this pull request - see https://github.com/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID"
exit 0
fi
exit $exit_code
- name: "Upload step summary"
if: github.event_name == 'pull_request'
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: step-summary
path: issue-bot/tmp/step-summary.md
- name: "Evaluate results - push"
working-directory: "issue-bot"
if: "github.repository_owner == 'phpstan' && github.ref == 'refs/heads/2.2.x'"
env:
GITHUB_PAT: ${{ secrets.PHPSTAN_BOT_TOKEN }}
PHPSTAN_SRC_COMMIT_BEFORE: ${{ github.event.before }}
PHPSTAN_SRC_COMMIT_AFTER: ${{ github.event.after }}
run: |
set +e
./console.php evaluate --post-comments >> "$GITHUB_STEP_SUMMARY"
exit_code="$?"
# its fine when issue-bot found affected issues
if [[ "$exit_code" == "2" ]]; then
exit 0
fi
exit $exit_code