fix libpas assertion on windows #163
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Preview Build | |
| on: | |
| pull_request: | |
| types: [opened, synchronize, reopened] | |
| workflow_dispatch: | |
| inputs: | |
| pr_number: | |
| description: 'PR number to build' | |
| required: true | |
| type: number | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| concurrency: | |
| group: preview-build-pr-${{ github.event.pull_request.number || inputs.pr_number }} | |
| cancel-in-progress: true | |
| jobs: | |
| trigger: | |
| name: Trigger Preview Build | |
| runs-on: ubuntu-latest | |
| outputs: | |
| sha: ${{ steps.pr.outputs.sha }} | |
| release_tag: ${{ steps.pr.outputs.release_tag }} | |
| pr_number: ${{ steps.pr.outputs.pr_number }} | |
| steps: | |
| - name: Check permissions | |
| if: github.event_name == 'pull_request' | |
| uses: actions/github-script@v7 | |
| with: | |
| script: | | |
| const { data: permission } = await github.rest.repos.getCollaboratorPermissionLevel({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| username: context.actor | |
| }); | |
| if (!['admin', 'write'].includes(permission.permission)) { | |
| core.setFailed(`${context.actor} does not have write access. Preview builds must be triggered manually via workflow_dispatch.`); | |
| } | |
| - name: Get PR information | |
| id: pr | |
| uses: actions/github-script@v7 | |
| with: | |
| script: | | |
| let sha, prNumber; | |
| if (context.eventName === 'pull_request') { | |
| sha = context.payload.pull_request.head.sha; | |
| prNumber = context.payload.pull_request.number; | |
| } else { | |
| const { data: pr } = await github.rest.pulls.get({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| pull_number: ${{ inputs.pr_number || 0 }} | |
| }); | |
| sha = pr.head.sha; | |
| prNumber = ${{ inputs.pr_number || 0 }}; | |
| } | |
| const shortSha = sha.substring(0, 8); | |
| const releaseTag = `autobuild-preview-pr-${prNumber}-${shortSha}`; | |
| core.setOutput('sha', sha); | |
| core.setOutput('release_tag', releaseTag); | |
| core.setOutput('pr_number', prNumber); | |
| build: | |
| name: Build | |
| needs: trigger | |
| permissions: | |
| contents: write | |
| uses: ./.github/workflows/build-reusable.yml | |
| with: | |
| build_ref: ${{ needs.trigger.outputs.sha }} | |
| release_tag: ${{ needs.trigger.outputs.release_tag }} | |
| is_prerelease: true | |
| llvm_version: '19' | |
| notify: | |
| name: Update PR Comment | |
| needs: [trigger, build] | |
| runs-on: ubuntu-latest | |
| if: needs.build.result == 'success' | |
| permissions: | |
| pull-requests: write | |
| steps: | |
| - name: Update preview build comment | |
| uses: actions/github-script@v7 | |
| with: | |
| script: | | |
| const marker = '<!-- preview-build-comment -->'; | |
| const prNumber = ${{ needs.trigger.outputs.pr_number }}; | |
| const releaseTag = '${{ needs.trigger.outputs.release_tag }}'; | |
| const sha = '${{ needs.trigger.outputs.sha }}'; | |
| const shortSha = sha.substring(0, 8); | |
| const releaseUrl = `https://github.com/${context.repo.owner}/${context.repo.repo}/releases/tag/${releaseTag}`; | |
| const newEntry = `| \`${shortSha}\` | [\`${releaseTag}\`](${releaseUrl}) | ${new Date().toISOString().replace('T', ' ').substring(0, 19)} UTC |`; | |
| // Find existing comment | |
| const { data: comments } = await github.rest.issues.listComments({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: prNumber, | |
| per_page: 100 | |
| }); | |
| const existing = comments.find(c => c.body.includes(marker)); | |
| // Build table | |
| let previousRows = ''; | |
| if (existing) { | |
| const lines = existing.body.split('\n'); | |
| const tableLines = lines.filter(l => l.startsWith('| `')); | |
| previousRows = tableLines.length > 0 ? '\n' + tableLines.join('\n') : ''; | |
| } | |
| const body = [ | |
| marker, | |
| '## Preview Builds', | |
| '', | |
| '| Commit | Release | Date |', | |
| '|--------|---------|------|', | |
| newEntry + previousRows | |
| ].join('\n'); | |
| if (existing) { | |
| await github.rest.issues.updateComment({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| comment_id: existing.id, | |
| body: body | |
| }); | |
| } else { | |
| await github.rest.issues.createComment({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: prNumber, | |
| body: body | |
| }); | |
| } |