Nvtx tracer #15
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: Slash Commands | |
| on: | |
| issue_comment: | |
| types: [created] | |
| permissions: | |
| contents: read | |
| pull-requests: write | |
| jobs: | |
| handle-merge: | |
| if: >- | |
| github.event.issue.pull_request != null | |
| && startsWith(github.event.comment.body, '/merge') | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Check write permission | |
| id: perm | |
| uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 | |
| with: | |
| script: | | |
| const { data: perm } = await github.rest.repos.getCollaboratorPermissionLevel({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| username: context.payload.comment.user.login, | |
| }); | |
| const hasWrite = ['admin', 'write'].includes(perm.permission); | |
| if (!hasWrite) { | |
| core.setFailed(`User ${context.payload.comment.user.login} lacks write permission (has: ${perm.permission}).`); | |
| } | |
| core.setOutput('has_write', String(hasWrite)); | |
| - name: Add ready label and react | |
| if: steps.perm.outputs.has_write == 'true' | |
| uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 | |
| with: | |
| script: | | |
| await github.rest.issues.addLabels({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: context.payload.issue.number, | |
| labels: ['ready'], | |
| }); | |
| await github.rest.reactions.createForIssueComment({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| comment_id: context.payload.comment.id, | |
| content: 'rocket', | |
| }); | |
| parse-command: | |
| if: >- | |
| github.event.issue.pull_request != null | |
| && startsWith(github.event.comment.body, '/test') | |
| runs-on: ubuntu-latest | |
| outputs: | |
| test_type: ${{ steps.parse.outputs.test_type }} | |
| full_suite: ${{ steps.parse.outputs.full_suite }} | |
| pr_sha: ${{ steps.pr.outputs.sha }} | |
| pr_branch: ${{ steps.pr.outputs.branch }} | |
| has_write: ${{ steps.perm.outputs.has_write }} | |
| steps: | |
| - name: Check write permission | |
| id: perm | |
| uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 | |
| with: | |
| script: | | |
| const { data: perm } = await github.rest.repos.getCollaboratorPermissionLevel({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| username: context.payload.comment.user.login, | |
| }); | |
| const hasWrite = ['admin', 'write'].includes(perm.permission); | |
| core.setOutput('has_write', String(hasWrite)); | |
| if (!hasWrite) { | |
| core.info(`User ${context.payload.comment.user.login} lacks write permission — ignoring.`); | |
| } | |
| - name: Parse /test command | |
| id: parse | |
| if: steps.perm.outputs.has_write == 'true' | |
| shell: bash | |
| env: | |
| COMMENT: ${{ github.event.comment.body }} | |
| run: | | |
| set -euo pipefail | |
| TEST_NAME=$(echo "$COMMENT" | grep -oP '(?<=/test\s)\S+' | head -1 || true) | |
| VALID="encoder vae transformer kernel unit ssim training lora-inference lora-training distillation self-forcing vsa vmoba performance api full fastcheck" | |
| if [ -z "$TEST_NAME" ] || ! echo "$VALID" | grep -qw "$TEST_NAME"; then | |
| echo "Unknown test: '$TEST_NAME'. Valid: $VALID" | |
| exit 1 | |
| fi | |
| declare -A MAP=( | |
| [encoder]=encoder [vae]=vae [transformer]=transformer | |
| [kernel]=kernel_tests [unit]=unit_test | |
| [ssim]=ssim [training]=training | |
| [lora-inference]=inference_lora [lora-training]=training_lora | |
| [distillation]=distillation_dmd [self-forcing]=self_forcing | |
| [vsa]=training_vsa [vmoba]=inference_vmoba | |
| [performance]=performance [api]=api_server | |
| ) | |
| if [ "$TEST_NAME" = "full" ]; then | |
| echo "test_type=all" >> "$GITHUB_OUTPUT" | |
| echo "full_suite=true" >> "$GITHUB_OUTPUT" | |
| elif [ "$TEST_NAME" = "fastcheck" ]; then | |
| echo "test_type=fastcheck" >> "$GITHUB_OUTPUT" | |
| echo "full_suite=false" >> "$GITHUB_OUTPUT" | |
| else | |
| echo "test_type=${MAP[$TEST_NAME]}" >> "$GITHUB_OUTPUT" | |
| echo "full_suite=true" >> "$GITHUB_OUTPUT" | |
| fi | |
| - name: Get PR details | |
| id: pr | |
| if: steps.perm.outputs.has_write == 'true' | |
| uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 | |
| with: | |
| script: | | |
| const { data: pr } = await github.rest.pulls.get({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| pull_number: context.payload.issue.number, | |
| }); | |
| core.setOutput('sha', pr.head.sha); | |
| core.setOutput('branch', pr.head.ref); | |
| trigger-buildkite: | |
| needs: parse-command | |
| if: >- | |
| needs.parse-command.outputs.has_write == 'true' | |
| && needs.parse-command.outputs.test_type != '' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: React to comment | |
| uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 | |
| with: | |
| script: | | |
| await github.rest.reactions.createForIssueComment({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| comment_id: context.payload.comment.id, | |
| content: 'rocket', | |
| }); | |
| - name: Trigger Buildkite | |
| uses: buildkite/trigger-pipeline-action@v2.4.1 | |
| with: | |
| buildkite_api_access_token: ${{ secrets.BUILDKITE_API_TOKEN }} | |
| pipeline: "${{ vars.BUILDKITE_ORG_SLUG }}/${{ vars.BUILDKITE_PIPELINE_SLUG }}" | |
| branch: "${{ needs.parse-command.outputs.pr_branch }}" | |
| commit: "${{ needs.parse-command.outputs.pr_sha }}" | |
| message: "/test ${{ needs.parse-command.outputs.test_type }} on PR #${{ github.event.issue.number }}" | |
| build_env_vars: '{"FULL_SUITE": "${{ needs.parse-command.outputs.full_suite }}", "TEST_TYPE": "${{ needs.parse-command.outputs.test_type }}"}' |