Initial public release of Warp.
Repo-Sync-Origin: warpdotdev/warp-internal@12af1d983b
This commit is contained in:
@@ -0,0 +1,141 @@
|
||||
name: Review Pull Request
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
pr_number:
|
||||
description: Pull request number to review
|
||||
required: false
|
||||
default: ""
|
||||
type: string
|
||||
trigger_source:
|
||||
description: Source that requested the review
|
||||
required: false
|
||||
default: ""
|
||||
type: string
|
||||
requester:
|
||||
description: Login of the user who requested the review, if any
|
||||
required: false
|
||||
default: ""
|
||||
type: string
|
||||
focus:
|
||||
description: Optional extra focus guidance for the review
|
||||
required: false
|
||||
default: ""
|
||||
type: string
|
||||
comment_id:
|
||||
description: Issue comment ID to react to for slash-command reviews
|
||||
required: false
|
||||
default: ""
|
||||
type: string
|
||||
secrets:
|
||||
OZ_MGMT_GHA_APP_ID:
|
||||
required: true
|
||||
OZ_MGMT_GHA_PRIVATE_KEY:
|
||||
required: true
|
||||
OSS_WARP_API_KEY:
|
||||
required: true
|
||||
pull_request_target:
|
||||
types:
|
||||
- opened
|
||||
- ready_for_review
|
||||
- review_requested
|
||||
- labeled
|
||||
jobs:
|
||||
resolve:
|
||||
runs-on: ubuntu-slim
|
||||
permissions:
|
||||
contents: read
|
||||
outputs:
|
||||
should_run: ${{ steps.resolve.outputs.should_run }}
|
||||
pr_number: ${{ steps.resolve.outputs.pr_number }}
|
||||
trigger_source: ${{ steps.resolve.outputs.trigger_source }}
|
||||
requester: ${{ steps.resolve.outputs.requester }}
|
||||
focus: ${{ steps.resolve.outputs.focus }}
|
||||
comment_id: ${{ steps.resolve.outputs.comment_id }}
|
||||
skip_reason: ${{ steps.resolve.outputs.skip_reason }}
|
||||
steps:
|
||||
- name: Checkout repo
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||
- name: Resolve review context
|
||||
id: resolve
|
||||
env:
|
||||
INPUT_PR_NUMBER: ${{ inputs.pr_number || '' }}
|
||||
INPUT_TRIGGER_SOURCE: ${{ inputs.trigger_source || '' }}
|
||||
INPUT_REQUESTER: ${{ inputs.requester || '' }}
|
||||
INPUT_FOCUS: ${{ inputs.focus || '' }}
|
||||
INPUT_COMMENT_ID: ${{ inputs.comment_id || '' }}
|
||||
GITHUB_ACTOR_LOGIN: ${{ github.actor }}
|
||||
run: |
|
||||
python - <<'PY'
|
||||
import json
|
||||
import os
|
||||
from pathlib import Path
|
||||
event = json.loads(Path(os.environ["GITHUB_EVENT_PATH"]).read_text())
|
||||
event_name = os.environ.get("GITHUB_EVENT_NAME", "")
|
||||
input_pr_number = os.environ.get("INPUT_PR_NUMBER", "").strip()
|
||||
pr = event.get("pull_request") or {}
|
||||
head_ref = ((pr.get("head") or {}).get("ref") or "").strip()
|
||||
action = (event.get("action") or "").strip()
|
||||
requested_reviewer = ((event.get("requested_reviewer") or {}).get("login") or "").strip()
|
||||
label_name = ((event.get("label") or {}).get("name") or "").strip()
|
||||
has_pr_hooks = Path(".github/workflows/pr-hooks.yml").exists()
|
||||
trigger_source = os.environ.get("INPUT_TRIGGER_SOURCE", "").strip() or event_name
|
||||
requester = os.environ.get("INPUT_REQUESTER", "").strip() or os.environ.get("GITHUB_ACTOR_LOGIN", "")
|
||||
focus = os.environ.get("INPUT_FOCUS", "")
|
||||
comment_id = os.environ.get("INPUT_COMMENT_ID", "")
|
||||
pr_number = input_pr_number or str(pr.get("number") or "")
|
||||
matches_direct_trigger = (
|
||||
(action == "opened" and not pr.get("draft", False))
|
||||
or action == "ready_for_review"
|
||||
or (action == "review_requested" and requested_reviewer == "oz-agent")
|
||||
or (action == "labeled" and label_name == "oz-review")
|
||||
)
|
||||
if input_pr_number:
|
||||
should_run = True
|
||||
elif head_ref.startswith("cherrypick"):
|
||||
should_run = False
|
||||
elif has_pr_hooks and event_name == "pull_request_target":
|
||||
should_run = False
|
||||
else:
|
||||
should_run = matches_direct_trigger and bool(pr_number)
|
||||
with open(os.environ["GITHUB_OUTPUT"], "a", encoding="utf-8") as fh:
|
||||
fh.write(f"should_run={'true' if should_run else 'false'}\n")
|
||||
fh.write(f"pr_number={pr_number}\n")
|
||||
fh.write(f"trigger_source={trigger_source}\n")
|
||||
fh.write(f"requester={requester}\n")
|
||||
fh.write("focus<<__EOF__\n")
|
||||
fh.write(focus)
|
||||
fh.write("\n__EOF__\n")
|
||||
fh.write(f"comment_id={comment_id}\n")
|
||||
if has_pr_hooks and event_name == "pull_request_target" and not input_pr_number:
|
||||
fh.write("skip_reason=pr-hooks-present\n")
|
||||
elif head_ref.startswith("cherrypick"):
|
||||
fh.write("skip_reason=cherrypick-branch\n")
|
||||
elif not should_run:
|
||||
fh.write("skip_reason=event-not-enabled\n")
|
||||
PY
|
||||
skip_direct_trigger:
|
||||
needs: resolve
|
||||
if: needs.resolve.outputs.should_run != 'true' && needs.resolve.outputs.skip_reason == 'pr-hooks-present'
|
||||
runs-on: ubuntu-slim
|
||||
steps:
|
||||
- name: Explain skip
|
||||
run: echo "PR review orchestration skipped because .github/workflows/pr-hooks.yml is present."
|
||||
review_pr:
|
||||
needs: resolve
|
||||
if: needs.resolve.outputs.should_run == 'true'
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: write
|
||||
issues: write
|
||||
uses: warpdotdev/oz-for-oss/.github/workflows/review-pull-request.yml@main
|
||||
with:
|
||||
pr_number: ${{ needs.resolve.outputs.pr_number }}
|
||||
trigger_source: ${{ needs.resolve.outputs.trigger_source }}
|
||||
requester: ${{ needs.resolve.outputs.requester }}
|
||||
focus: ${{ needs.resolve.outputs.focus }}
|
||||
comment_id: ${{ needs.resolve.outputs.comment_id }}
|
||||
secrets:
|
||||
OZ_MGMT_GHA_APP_ID: ${{ secrets.OZ_MGMT_GHA_APP_ID }}
|
||||
OZ_MGMT_GHA_PRIVATE_KEY: ${{ secrets.OZ_MGMT_GHA_PRIVATE_KEY }}
|
||||
WARP_API_KEY: ${{ secrets.OSS_WARP_API_KEY }}
|
||||
Reference in New Issue
Block a user