diff --git a/.github/workflows/track-prs-for-release.yml b/.github/workflows/track-prs-for-release.yml index 1dcbe949d0f..236b6edbc78 100644 --- a/.github/workflows/track-prs-for-release.yml +++ b/.github/workflows/track-prs-for-release.yml @@ -31,6 +31,7 @@ jobs: private_key: ${{ secrets.RELEASE_APP_PRIVATE_KEY }} - name: Handle merged PR env: + CASPER_TOKEN: ${{ secrets.CASPER_TOKEN }} GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }} PR_ID: ${{ github.event.pull_request.node_id }} run: tools/scripts/track-pr pr-merged "$PR_ID" @@ -51,6 +52,7 @@ jobs: private_key: ${{ secrets.RELEASE_APP_PRIVATE_KEY }} - name: Handle labeled PR env: + CASPER_TOKEN: ${{ secrets.CASPER_TOKEN }} GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }} PR_ID: ${{ github.event.pull_request.node_id }} PR_LABEL: ${{ github.event.label.name }} diff --git a/.isort.cfg b/.isort.cfg index 06bb33573d7..f3407f6d977 100644 --- a/.isort.cfg +++ b/.isort.cfg @@ -2,5 +2,5 @@ profile = black skip_glob = **/__init__.py default_section = THIRDPARTY -known_first_party = determined,tests +known_first_party = determined,tests,gql line_length = 100 diff --git a/tools/scripts/gql.py b/tools/scripts/gql.py index c5a7a464a72..213ae1aeb90 100644 --- a/tools/scripts/gql.py +++ b/tools/scripts/gql.py @@ -164,11 +164,12 @@ def __call__(self, **args: Any) -> Any: """ ) -get_pr_merge_commit = GraphQLQuery( +get_pr_merge_commit_and_url = GraphQLQuery( """ query($id: ID!) { node(id: $id) { ... on PullRequest { + url mergeCommit { oid } diff --git a/tools/scripts/track-pr b/tools/scripts/track-pr index cd58a8b50ee..63ca31e5eff 100755 --- a/tools/scripts/track-pr +++ b/tools/scripts/track-pr @@ -30,6 +30,8 @@ import subprocess import sys from typing import Callable, Optional +import requests + import gql TEST = os.environ.get("RELEASE_TEST") == "1" @@ -46,6 +48,7 @@ FIX_OPEN_STATUS = "Fix (open)" FIX_CONFLICT_STATUS = "Fix (conflict)" GITHUB_TOKEN = os.environ["GITHUB_TOKEN"] +CASPER_TOKEN = os.environ["CASPER_TOKEN"] def run(*args, check=True, quiet=False, **kwargs): @@ -117,7 +120,8 @@ def cherry_pick_pr(pr_id: str) -> None: add_item_to_project(current_project_id(), pr_id, FIX_CONFLICT_STATUS) return - pr_commit = gql.get_pr_merge_commit(id=pr_id)["node"]["mergeCommit"]["oid"] + pr = gql.get_pr_merge_commit_and_url(id=pr_id)["node"] + pr_commit = pr["mergeCommit"]["oid"] print(f"Cherry-picking {pr_commit}") try: @@ -173,8 +177,12 @@ def cherry_pick_pr(pr_id: str) -> None: traceback.print_exc() print("Cherry-pick failed, adding PR as conflicted") - # TODO Notify a human. add_item_to_project(current_project_id(), pr_id, FIX_CONFLICT_STATUS) + requests.post( + "https://casper.internal.infra.determined.ai/hubot/conflict", + headers={"X-Casper-Token": CASPER_TOKEN}, + json={"url": pr["url"]}, + ) class Actions: