2024-08-20T21:16:09.9482166Z Current runner version: '2.319.1' 2024-08-20T21:16:09.9506321Z ##[group]Operating System 2024-08-20T21:16:09.9506967Z Ubuntu 2024-08-20T21:16:09.9507271Z 22.04.4 2024-08-20T21:16:09.9507675Z LTS 2024-08-20T21:16:09.9508021Z ##[endgroup] 2024-08-20T21:16:09.9508356Z ##[group]Runner Image 2024-08-20T21:16:09.9508891Z Image: ubuntu-22.04 2024-08-20T21:16:09.9509311Z Version: 20240811.1.0 2024-08-20T21:16:09.9510251Z Included Software: https://github.com/actions/runner-images/blob/ubuntu22/20240811.1/images/ubuntu/Ubuntu2204-Readme.md 2024-08-20T21:16:09.9511745Z Image Release: https://github.com/actions/runner-images/releases/tag/ubuntu22%2F20240811.1 2024-08-20T21:16:09.9512622Z ##[endgroup] 2024-08-20T21:16:09.9512978Z ##[group]Runner Image Provisioner 2024-08-20T21:16:09.9513528Z 2.0.374.1 2024-08-20T21:16:09.9513882Z ##[endgroup] 2024-08-20T21:16:09.9529984Z ##[group]GITHUB_TOKEN Permissions 2024-08-20T21:16:09.9531658Z Actions: read 2024-08-20T21:16:09.9532342Z Attestations: read 2024-08-20T21:16:09.9532824Z Checks: read 2024-08-20T21:16:09.9533303Z Contents: read 2024-08-20T21:16:09.9533650Z Deployments: read 2024-08-20T21:16:09.9534052Z Discussions: read 2024-08-20T21:16:09.9534490Z Issues: read 2024-08-20T21:16:09.9534810Z Metadata: read 2024-08-20T21:16:09.9535225Z Packages: read 2024-08-20T21:16:09.9535630Z Pages: read 2024-08-20T21:16:09.9535989Z PullRequests: read 2024-08-20T21:16:09.9536430Z RepositoryProjects: read 2024-08-20T21:16:09.9536905Z SecurityEvents: read 2024-08-20T21:16:09.9537305Z Statuses: read 2024-08-20T21:16:09.9537688Z ##[endgroup] 2024-08-20T21:16:09.9540637Z Secret source: Actions 2024-08-20T21:16:09.9541221Z Prepare workflow directory 2024-08-20T21:16:10.0431146Z Prepare all required actions 2024-08-20T21:16:10.0592403Z Uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@refs/pull/133712/merge (f2fb9405c2fa9f9502a76363091cce6fd8179736) 2024-08-20T21:16:10.0597647Z ##[group] Inputs 2024-08-20T21:16:10.0598192Z triggering_actor: pytorchmergebot 2024-08-20T21:16:10.0598755Z issue_owner: XuehaiPan 2024-08-20T21:16:10.0599316Z curr_branch: gh/XuehaiPan/146/head 2024-08-20T21:16:10.0599897Z curr_ref_type: branch 2024-08-20T21:16:10.0600325Z issue_number: 5132 2024-08-20T21:16:10.0600768Z ##[endgroup] 2024-08-20T21:16:10.0601597Z Complete job name: get-label-type / runner-determinator 2024-08-20T21:16:10.1503804Z ##[group]Run cat < runner_determinator.py 2024-08-20T21:16:10.1505365Z cat < runner_determinator.py 2024-08-20T21:16:10.1505966Z # flake8: noqa: G004 2024-08-20T21:16:10.1506396Z  2024-08-20T21:16:10.1506829Z """ 2024-08-20T21:16:10.1507519Z This runner determinator is used to determine which set of runners to run a 2024-08-20T21:16:10.1508580Z GitHub job on. It uses the first comment of a GitHub issue (by default 2024-08-20T21:16:10.1509787Z https://github.com/pytorch/test-infra/issues/5132) as a user list to determine 2024-08-20T21:16:10.1510980Z which users will get their jobs to run on experimental runners. This user list 2024-08-20T21:16:10.1512139Z is also a comma separated list of additional features or experiments which the 2024-08-20T21:16:10.1513124Z user could be opted in to. 2024-08-20T21:16:10.1513627Z  2024-08-20T21:16:10.1514196Z The user list has the following rules: 2024-08-20T21:16:10.1514762Z  2024-08-20T21:16:10.1515213Z - Users are GitHub usernames with the @ prefix 2024-08-20T21:16:10.1516142Z - If the first line is a "*" then all users will use the new runners 2024-08-20T21:16:10.1517107Z - If the first line is a "!" then all users will use the old runners 2024-08-20T21:16:10.1518169Z - Each user is also a comma-separated list of features/experiments to enable 2024-08-20T21:16:10.1519365Z - A "#" prefix indicates the user is opted out of the new runners but is opting 2024-08-20T21:16:10.1520181Z  into features/experiments. 2024-08-20T21:16:10.1520995Z  2024-08-20T21:16:10.1521440Z Example user list: 2024-08-20T21:16:10.1521850Z  2024-08-20T21:16:10.1522207Z  @User1 2024-08-20T21:16:10.1522965Z  @User2,amz2023 2024-08-20T21:16:10.1523493Z  #@UserOptOutOfNewRunner,amz2023 2024-08-20T21:16:10.1524079Z """ 2024-08-20T21:16:10.1524526Z  2024-08-20T21:16:10.1524876Z import logging 2024-08-20T21:16:10.1525303Z import os 2024-08-20T21:16:10.1525841Z from argparse import ArgumentParser 2024-08-20T21:16:10.1526421Z from logging import LogRecord 2024-08-20T21:16:10.1527016Z from typing import Any, Iterable 2024-08-20T21:16:10.1527605Z  2024-08-20T21:16:10.1527975Z from github import Auth, Github 2024-08-20T21:16:10.1528540Z from github.Issue import Issue 2024-08-20T21:16:10.1529116Z  2024-08-20T21:16:10.1529430Z  2024-08-20T21:16:10.1529913Z WORKFLOW_LABEL_META = "" # use meta runners 2024-08-20T21:16:10.1530823Z WORKFLOW_LABEL_LF = "lf." # use runners from the linux foundation 2024-08-20T21:16:10.1531838Z WORKFLOW_LABEL_LF_CANARY = "lf.c." # use canary runners from the linux foundation 2024-08-20T21:16:10.1532662Z  2024-08-20T21:16:10.1533114Z RUNNER_AMI_LEGACY = "" 2024-08-20T21:16:10.1533580Z RUNNER_AMI_AMZ2023 = "amz2023" 2024-08-20T21:16:10.1534114Z  2024-08-20T21:16:10.1534655Z GITHUB_OUTPUT = os.getenv("GITHUB_OUTPUT", "") 2024-08-20T21:16:10.1535270Z GH_OUTPUT_KEY_AMI = "runner-ami" 2024-08-20T21:16:10.1535880Z GH_OUTPUT_KEY_LABEL_TYPE = "label-type" 2024-08-20T21:16:10.1536518Z  2024-08-20T21:16:10.1536814Z  2024-08-20T21:16:10.1537244Z class ColorFormatter(logging.Formatter): 2024-08-20T21:16:10.1538086Z  """Color codes the log messages based on the log level""" 2024-08-20T21:16:10.1538723Z  2024-08-20T21:16:10.1539073Z  COLORS = { 2024-08-20T21:16:10.1539628Z  "WARNING": "\033[33m", # Yellow 2024-08-20T21:16:10.1540244Z  "ERROR": "\033[31m", # Red 2024-08-20T21:16:10.1540803Z  "CRITICAL": "\033[31m", # Red 2024-08-20T21:16:10.1541704Z  "INFO": "\033[0m", # Reset 2024-08-20T21:16:10.1542373Z  "DEBUG": "\033[0m", # Reset 2024-08-20T21:16:10.1542885Z  } 2024-08-20T21:16:10.1543331Z  2024-08-20T21:16:10.1543804Z  def format(self, record: LogRecord) -> str: 2024-08-20T21:16:10.1544698Z  log_color = self.COLORS.get(record.levelname, "\033[0m") # Default to reset 2024-08-20T21:16:10.1545713Z  record.msg = f"{log_color}{record.msg}\033[0m" 2024-08-20T21:16:10.1546408Z  return super().format(record) 2024-08-20T21:16:10.1547097Z  2024-08-20T21:16:10.1547403Z  2024-08-20T21:16:10.1547848Z handler = logging.StreamHandler() 2024-08-20T21:16:10.1548766Z handler.setFormatter(ColorFormatter(fmt="%(levelname)-8s: %(message)s")) 2024-08-20T21:16:10.1549520Z  2024-08-20T21:16:10.1550040Z log = logging.getLogger(os.path.basename(__file__)) 2024-08-20T21:16:10.1550780Z log.addHandler(handler) 2024-08-20T21:16:10.1551262Z log.setLevel(logging.INFO) 2024-08-20T21:16:10.1551764Z  2024-08-20T21:16:10.1552165Z  2024-08-20T21:16:10.1552627Z def set_github_output(key: str, value: str) -> None: 2024-08-20T21:16:10.1553282Z  """ 2024-08-20T21:16:10.1553941Z  Defines outputs of the github action that invokes this script 2024-08-20T21:16:10.1554701Z  """ 2024-08-20T21:16:10.1555057Z  if not GITHUB_OUTPUT: 2024-08-20T21:16:10.1556471Z  # See https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/ for deprecation notice 2024-08-20T21:16:10.1558047Z  log.warning( 2024-08-20T21:16:10.1559097Z  "No env var found for GITHUB_OUTPUT, you must be running this code locally. Falling back to the deprecated print method." 2024-08-20T21:16:10.1560300Z  ) 2024-08-20T21:16:10.1560806Z  print(f"::set-output name={key}::{value}") 2024-08-20T21:16:10.1561380Z  return 2024-08-20T21:16:10.1561866Z  2024-08-20T21:16:10.1562278Z  with open(GITHUB_OUTPUT, "a") as f: 2024-08-20T21:16:10.1563185Z  log.info(f"Setting output: {key}='{value}'") 2024-08-20T21:16:10.1563951Z  f.write(f"{key}={value}\n") 2024-08-20T21:16:10.1564491Z  2024-08-20T21:16:10.1564819Z  2024-08-20T21:16:10.1565225Z def parse_args() -> Any: 2024-08-20T21:16:10.1565897Z  parser = ArgumentParser("Get dynamic rollout settings") 2024-08-20T21:16:10.1566963Z  parser.add_argument("--github-token", type=str, required=True, help="GitHub token") 2024-08-20T21:16:10.1567872Z  parser.add_argument( 2024-08-20T21:16:10.1568400Z  "--github-issue-repo", 2024-08-20T21:16:10.1568940Z  type=str, 2024-08-20T21:16:10.1569420Z  required=False, 2024-08-20T21:16:10.1569956Z  default="pytorch/test-infra", 2024-08-20T21:16:10.1570607Z  help="GitHub repo to get the issue", 2024-08-20T21:16:10.1571235Z  ) 2024-08-20T21:16:10.1571625Z  parser.add_argument( 2024-08-20T21:16:10.1572138Z  "--github-repo", 2024-08-20T21:16:10.1572641Z  type=str, 2024-08-20T21:16:10.1573090Z  required=True, 2024-08-20T21:16:10.1573664Z  help="GitHub repo where CI is running", 2024-08-20T21:16:10.1574275Z  ) 2024-08-20T21:16:10.1574663Z  parser.add_argument( 2024-08-20T21:16:10.1575428Z  "--github-issue", type=int, required=True, help="GitHub issue number" 2024-08-20T21:16:10.1576256Z  ) 2024-08-20T21:16:10.1576628Z  parser.add_argument( 2024-08-20T21:16:10.1577554Z  "--github-actor", type=str, required=True, help="GitHub triggering_actor" 2024-08-20T21:16:10.1578442Z  ) 2024-08-20T21:16:10.1578815Z  parser.add_argument( 2024-08-20T21:16:10.1579588Z  "--github-issue-owner", type=str, required=True, help="GitHub issue owner" 2024-08-20T21:16:10.1580556Z  ) 2024-08-20T21:16:10.1580908Z  parser.add_argument( 2024-08-20T21:16:10.1581706Z  "--github-branch", type=str, required=True, help="Current GitHub branch or tag" 2024-08-20T21:16:10.1582606Z  ) 2024-08-20T21:16:10.1582961Z  parser.add_argument( 2024-08-20T21:16:10.1583466Z  "--github-ref-type", 2024-08-20T21:16:10.1584072Z  type=str, 2024-08-20T21:16:10.1584489Z  required=True, 2024-08-20T21:16:10.1585095Z  help="Current GitHub ref type, branch or tag", 2024-08-20T21:16:10.1585823Z  ) 2024-08-20T21:16:10.1586145Z  2024-08-20T21:16:10.1586534Z  return parser.parse_args() 2024-08-20T21:16:10.1587125Z  2024-08-20T21:16:10.1587422Z  2024-08-20T21:16:10.1587905Z def get_gh_client(github_token: str) -> Github: 2024-08-20T21:16:10.1588629Z  auth = Auth.Token(github_token) 2024-08-20T21:16:10.1589158Z  return Github(auth=auth) 2024-08-20T21:16:10.1589661Z  2024-08-20T21:16:10.1590053Z  2024-08-20T21:16:10.1590576Z def get_issue(gh: Github, repo: str, issue_num: int) -> Issue: 2024-08-20T21:16:10.1591346Z  repo = gh.get_repo(repo) 2024-08-20T21:16:10.1591999Z  return repo.get_issue(number=issue_num) 2024-08-20T21:16:10.1592750Z  2024-08-20T21:16:10.1593047Z  2024-08-20T21:16:10.1593498Z def get_potential_pr_author( 2024-08-20T21:16:10.1594242Z  gh: Github, repo: str, username: str, ref_type: str, ref_name: str 2024-08-20T21:16:10.1594938Z ) -> str: 2024-08-20T21:16:10.1595648Z  # If the trigger was a new tag added by a bot, this is a ciflow case 2024-08-20T21:16:10.1596674Z  # Fetch the actual username from the original PR. The PR number is 2024-08-20T21:16:10.1597548Z  # embedded in the tag name: ciflow// 2024-08-20T21:16:10.1598446Z  if username == "pytorch-bot[bot]" and ref_type == "tag": 2024-08-20T21:16:10.1599216Z  split_tag = ref_name.split("/") 2024-08-20T21:16:10.1599737Z  if ( 2024-08-20T21:16:10.1600234Z  len(split_tag) == 3 2024-08-20T21:16:10.1600830Z  and split_tag[0] == "ciflow" 2024-08-20T21:16:10.1601443Z  and split_tag[2].isnumeric() 2024-08-20T21:16:10.1602050Z  ): 2024-08-20T21:16:10.1602502Z  pr_number = split_tag[2] 2024-08-20T21:16:10.1603299Z  try: 2024-08-20T21:16:10.1603893Z  repository = gh.get_repo(repo) 2024-08-20T21:16:10.1604632Z  pull = repository.get_pull(number=int(pr_number)) 2024-08-20T21:16:10.1605336Z  except Exception as e: 2024-08-20T21:16:10.1606014Z  raise Exception( # noqa: TRY002 2024-08-20T21:16:10.1606852Z  f"issue with pull request {pr_number} from repo {repository}" 2024-08-20T21:16:10.1607600Z  ) from e 2024-08-20T21:16:10.1608180Z  return pull.user.login 2024-08-20T21:16:10.1608892Z  # In all other cases, return the original input username 2024-08-20T21:16:10.1609596Z  return username 2024-08-20T21:16:10.1610115Z  2024-08-20T21:16:10.1610415Z  2024-08-20T21:16:10.1610929Z def is_exception_branch(branch: str) -> bool: 2024-08-20T21:16:10.1611884Z  return branch.split("/")[0] in {"main", "nightly", "release", "landchecks"} 2024-08-20T21:16:10.1612771Z  2024-08-20T21:16:10.1613130Z  2024-08-20T21:16:10.1613895Z def get_workflow_type(issue: Issue, workflow_requestors: Iterable[str]) -> str: 2024-08-20T21:16:10.1614681Z  try: 2024-08-20T21:16:10.1615280Z  first_comment = issue.get_comments()[0].body.strip("\n\t ") 2024-08-20T21:16:10.1616042Z  2024-08-20T21:16:10.1616412Z  if first_comment[0] == "!": 2024-08-20T21:16:10.1617236Z  log.info("LF Workflows are disabled for everyone. Using meta runners.") 2024-08-20T21:16:10.1618158Z  return WORKFLOW_LABEL_META 2024-08-20T21:16:10.1618739Z  elif first_comment[0] == "*": 2024-08-20T21:16:10.1619556Z  log.info("LF Workflows are enabled for everyone. Using LF runners.") 2024-08-20T21:16:10.1620449Z  return WORKFLOW_LABEL_LF 2024-08-20T21:16:10.1621008Z  else: 2024-08-20T21:16:10.1621429Z  all_opted_in_users = { 2024-08-20T21:16:10.1622153Z  usr_raw.strip("\n\t@ ").split(",")[0] 2024-08-20T21:16:10.1622871Z  for usr_raw in first_comment.split() 2024-08-20T21:16:10.1623433Z  } 2024-08-20T21:16:10.1623966Z  opted_in_requestors = { 2024-08-20T21:16:10.1624735Z  usr for usr in workflow_requestors if usr in all_opted_in_users 2024-08-20T21:16:10.1625443Z  } 2024-08-20T21:16:10.1625995Z  if opted_in_requestors: 2024-08-20T21:16:10.1626536Z  log.info( 2024-08-20T21:16:10.1627484Z  f"LF Workflows are enabled for {', '.join(opted_in_requestors)}. Using LF runners." 2024-08-20T21:16:10.1628427Z  ) 2024-08-20T21:16:10.1628910Z  return WORKFLOW_LABEL_LF 2024-08-20T21:16:10.1629581Z  else: 2024-08-20T21:16:10.1630067Z  log.info( 2024-08-20T21:16:10.1630884Z  f"LF Workflows are disabled for {', '.join(workflow_requestors)}. Using meta runners." 2024-08-20T21:16:10.1631833Z  ) 2024-08-20T21:16:10.1632328Z  return WORKFLOW_LABEL_META 2024-08-20T21:16:10.1632878Z  2024-08-20T21:16:10.1633292Z  except Exception as e: 2024-08-20T21:16:10.1633799Z  log.error( 2024-08-20T21:16:10.1634642Z  f"Failed to get determine workflow type. Falling back to meta runners. Exception: {e}" 2024-08-20T21:16:10.1635555Z  ) 2024-08-20T21:16:10.1635998Z  return WORKFLOW_LABEL_META 2024-08-20T21:16:10.1636537Z  2024-08-20T21:16:10.1636915Z  2024-08-20T21:16:10.1637295Z def get_optin_feature( 2024-08-20T21:16:10.1638117Z  issue: Issue, workflow_requestors: Iterable[str], feature: str, fallback: str 2024-08-20T21:16:10.1638954Z ) -> str: 2024-08-20T21:16:10.1639340Z  try: 2024-08-20T21:16:10.1639937Z  first_comment = issue.get_comments()[0].body.strip("\n\t ") 2024-08-20T21:16:10.1640940Z  userlist = {u.lstrip("#").strip("\n\t@ ") for u in first_comment.split()} 2024-08-20T21:16:10.1641757Z  all_opted_in_users = set() 2024-08-20T21:16:10.1642329Z  for user in userlist: 2024-08-20T21:16:10.1643170Z  for i in user.split(","): 2024-08-20T21:16:10.1643756Z  if i == feature: 2024-08-20T21:16:10.1644423Z  all_opted_in_users.add(user.split(",")[0]) 2024-08-20T21:16:10.1645185Z  opted_in_requestors = { 2024-08-20T21:16:10.1645924Z  usr for usr in workflow_requestors if usr in all_opted_in_users 2024-08-20T21:16:10.1646673Z  } 2024-08-20T21:16:10.1647268Z  2024-08-20T21:16:10.1647654Z  if opted_in_requestors: 2024-08-20T21:16:10.1648184Z  log.info( 2024-08-20T21:16:10.1649142Z  f"Feature {feature} is enabled for {', '.join(opted_in_requestors)}. Using feature {feature}." 2024-08-20T21:16:10.1650009Z  ) 2024-08-20T21:16:10.1650429Z  return feature 2024-08-20T21:16:10.1650998Z  else: 2024-08-20T21:16:10.1651375Z  log.info( 2024-08-20T21:16:10.1652292Z  f"Feature {feature} is disabled for {', '.join(workflow_requestors)}. Using fallback \"{fallback}\"." 2024-08-20T21:16:10.1653323Z  ) 2024-08-20T21:16:10.1653749Z  return fallback 2024-08-20T21:16:10.1654194Z  2024-08-20T21:16:10.1654653Z  except Exception as e: 2024-08-20T21:16:10.1655152Z  log.error( 2024-08-20T21:16:10.1656095Z  f'Failed to determine if user has opted-in to feature {feature}. Using fallback "{fallback}". Exception: {e}' 2024-08-20T21:16:10.1657200Z  ) 2024-08-20T21:16:10.1657597Z  return fallback 2024-08-20T21:16:10.1658020Z  2024-08-20T21:16:10.1658432Z  2024-08-20T21:16:10.1658786Z def main() -> None: 2024-08-20T21:16:10.1659254Z  args = parse_args() 2024-08-20T21:16:10.1659793Z  2024-08-20T21:16:10.1660463Z  if args.github_ref_type == "branch" and is_exception_branch(args.github_branch): 2024-08-20T21:16:10.1661569Z  log.info(f"Exception branch: '{args.github_branch}', using meta runners") 2024-08-20T21:16:10.1662683Z  label_type = WORKFLOW_LABEL_META 2024-08-20T21:16:10.1663319Z  runner_ami = RUNNER_AMI_LEGACY 2024-08-20T21:16:10.1663831Z  else: 2024-08-20T21:16:10.1664285Z  try: 2024-08-20T21:16:10.1664807Z  gh = get_gh_client(args.github_token) 2024-08-20T21:16:10.1665734Z  # The default issue we use - https://github.com/pytorch/test-infra/issues/5132 2024-08-20T21:16:10.1666858Z  issue = get_issue(gh, args.github_issue_repo, args.github_issue) 2024-08-20T21:16:10.1667720Z  username = get_potential_pr_author( 2024-08-20T21:16:10.1668307Z  gh, 2024-08-20T21:16:10.1668819Z  args.github_repo, 2024-08-20T21:16:10.1669405Z  args.github_actor, 2024-08-20T21:16:10.1669984Z  args.github_ref_type, 2024-08-20T21:16:10.1670616Z  args.github_branch, 2024-08-20T21:16:10.1671162Z  ) 2024-08-20T21:16:10.1671673Z  label_type = get_workflow_type( 2024-08-20T21:16:10.1672294Z  issue, 2024-08-20T21:16:10.1672774Z  ( 2024-08-20T21:16:10.1673278Z  args.github_issue_owner, 2024-08-20T21:16:10.1673944Z  username, 2024-08-20T21:16:10.1674427Z  ), 2024-08-20T21:16:10.1674855Z  ) 2024-08-20T21:16:10.1675410Z  runner_ami = get_optin_feature( 2024-08-20T21:16:10.1675952Z  issue=issue, 2024-08-20T21:16:10.1676492Z  workflow_requestors=( 2024-08-20T21:16:10.1677179Z  args.github_issue_owner, 2024-08-20T21:16:10.1677723Z  username, 2024-08-20T21:16:10.1678214Z  ), 2024-08-20T21:16:10.1678794Z  feature=RUNNER_AMI_AMZ2023, 2024-08-20T21:16:10.1679383Z  fallback=RUNNER_AMI_LEGACY, 2024-08-20T21:16:10.1679954Z  ) 2024-08-20T21:16:10.1680473Z  except Exception as e: 2024-08-20T21:16:10.1681083Z  log.error( 2024-08-20T21:16:10.1681848Z  f"Failed to get issue. Falling back to meta runners. Exception: {e}" 2024-08-20T21:16:10.1683061Z  ) 2024-08-20T21:16:10.1683526Z  label_type = WORKFLOW_LABEL_META 2024-08-20T21:16:10.1684180Z  runner_ami = RUNNER_AMI_LEGACY 2024-08-20T21:16:10.1684811Z  2024-08-20T21:16:10.1685257Z  # For Canary builds use canary runners 2024-08-20T21:16:10.1686166Z  if args.github_repo == "pytorch/pytorch-canary" and label_type == WORKFLOW_LABEL_LF: 2024-08-20T21:16:10.1687195Z  label_type = WORKFLOW_LABEL_LF_CANARY 2024-08-20T21:16:10.1687790Z  2024-08-20T21:16:10.1688273Z  set_github_output(GH_OUTPUT_KEY_LABEL_TYPE, label_type) 2024-08-20T21:16:10.1689169Z  set_github_output(GH_OUTPUT_KEY_AMI, runner_ami) 2024-08-20T21:16:10.1689807Z  2024-08-20T21:16:10.1690108Z  2024-08-20T21:16:10.1690535Z if __name__ == "__main__": 2024-08-20T21:16:10.1691036Z  main() 2024-08-20T21:16:10.1691382Z EOF 2024-08-20T21:16:10.1691792Z  2024-08-20T21:16:10.1692184Z cat runner_determinator.py 2024-08-20T21:16:10.2279241Z shell: /usr/bin/bash -e {0} 2024-08-20T21:16:10.2279781Z env: 2024-08-20T21:16:10.2280499Z GITHUB_TOKEN: *** 2024-08-20T21:16:10.2280934Z ISSUE_NUMBER: 5132 2024-08-20T21:16:10.2281388Z TRIGGERING_ACTOR: pytorchmergebot 2024-08-20T21:16:10.2282019Z ISSUE_OWNER: XuehaiPan 2024-08-20T21:16:10.2282438Z ##[endgroup] 2024-08-20T21:16:10.2699478Z # flake8: noqa: G004 2024-08-20T21:16:10.2700053Z 2024-08-20T21:16:10.2700331Z """ 2024-08-20T21:16:10.2701829Z This runner determinator is used to determine which set of runners to run a 2024-08-20T21:16:10.2702812Z GitHub job on. It uses the first comment of a GitHub issue (by default 2024-08-20T21:16:10.2704183Z https://github.com/pytorch/test-infra/issues/5132) as a user list to determine 2024-08-20T21:16:10.2705263Z which users will get their jobs to run on experimental runners. This user list 2024-08-20T21:16:10.2706317Z is also a comma separated list of additional features or experiments which the 2024-08-20T21:16:10.2707150Z user could be opted in to. 2024-08-20T21:16:10.2707472Z 2024-08-20T21:16:10.2707648Z The user list has the following rules: 2024-08-20T21:16:10.2708000Z 2024-08-20T21:16:10.2708335Z - Users are GitHub usernames with the @ prefix 2024-08-20T21:16:10.2709184Z - If the first line is a "*" then all users will use the new runners 2024-08-20T21:16:10.2710114Z - If the first line is a "!" then all users will use the old runners 2024-08-20T21:16:10.2711129Z - Each user is also a comma-separated list of features/experiments to enable 2024-08-20T21:16:10.2712238Z - A "#" prefix indicates the user is opted out of the new runners but is opting 2024-08-20T21:16:10.2713024Z into features/experiments. 2024-08-20T21:16:10.2713329Z 2024-08-20T21:16:10.2713509Z Example user list: 2024-08-20T21:16:10.2713736Z 2024-08-20T21:16:10.2713930Z @User1 2024-08-20T21:16:10.2714298Z @User2,amz2023 2024-08-20T21:16:10.2714723Z #@UserOptOutOfNewRunner,amz2023 2024-08-20T21:16:10.2715254Z """ 2024-08-20T21:16:10.2715461Z 2024-08-20T21:16:10.2715612Z import logging 2024-08-20T21:16:10.2715990Z import os 2024-08-20T21:16:10.2716402Z from argparse import ArgumentParser 2024-08-20T21:16:10.2716947Z from logging import LogRecord 2024-08-20T21:16:10.2717423Z from typing import Any, Iterable 2024-08-20T21:16:10.2717733Z 2024-08-20T21:16:10.2717951Z from github import Auth, Github 2024-08-20T21:16:10.2718463Z from github.Issue import Issue 2024-08-20T21:16:10.2718801Z 2024-08-20T21:16:10.2718806Z 2024-08-20T21:16:10.2718995Z WORKFLOW_LABEL_META = "" # use meta runners 2024-08-20T21:16:10.2719797Z WORKFLOW_LABEL_LF = "lf." # use runners from the linux foundation 2024-08-20T21:16:10.2720896Z WORKFLOW_LABEL_LF_CANARY = "lf.c." # use canary runners from the linux foundation 2024-08-20T21:16:10.2721559Z 2024-08-20T21:16:10.2721699Z RUNNER_AMI_LEGACY = "" 2024-08-20T21:16:10.2722222Z RUNNER_AMI_AMZ2023 = "amz2023" 2024-08-20T21:16:10.2722514Z 2024-08-20T21:16:10.2723010Z GITHUB_OUTPUT = os.getenv("GITHUB_OUTPUT", "") 2024-08-20T21:16:10.2723671Z GH_OUTPUT_KEY_AMI = "runner-ami" 2024-08-20T21:16:10.2724328Z GH_OUTPUT_KEY_LABEL_TYPE = "label-type" 2024-08-20T21:16:10.2724685Z 2024-08-20T21:16:10.2724691Z 2024-08-20T21:16:10.2724879Z class ColorFormatter(logging.Formatter): 2024-08-20T21:16:10.2725534Z """Color codes the log messages based on the log level""" 2024-08-20T21:16:10.2726108Z 2024-08-20T21:16:10.2726245Z COLORS = { 2024-08-20T21:16:10.2726644Z "WARNING": "\033[33m", # Yellow 2024-08-20T21:16:10.2727141Z "ERROR": "\033[31m", # Red 2024-08-20T21:16:10.2727702Z "CRITICAL": "\033[31m", # Red 2024-08-20T21:16:10.2728201Z "INFO": "\033[0m", # Reset 2024-08-20T21:16:10.2728670Z "DEBUG": "\033[0m", # Reset 2024-08-20T21:16:10.2729215Z } 2024-08-20T21:16:10.2729384Z 2024-08-20T21:16:10.2729679Z def format(self, record: LogRecord) -> str: 2024-08-20T21:16:10.2730483Z log_color = self.COLORS.get(record.levelname, "\033[0m") # Default to reset 2024-08-20T21:16:10.2731399Z record.msg = f"{log_color}{record.msg}\033[0m" 2024-08-20T21:16:10.2732005Z return super().format(record) 2024-08-20T21:16:10.2732359Z 2024-08-20T21:16:10.2732364Z 2024-08-20T21:16:10.2732534Z handler = logging.StreamHandler() 2024-08-20T21:16:10.2733402Z handler.setFormatter(ColorFormatter(fmt="%(levelname)-8s: %(message)s")) 2024-08-20T21:16:10.2733988Z 2024-08-20T21:16:10.2734274Z log = logging.getLogger(os.path.basename(__file__)) 2024-08-20T21:16:10.2735025Z log.addHandler(handler) 2024-08-20T21:16:10.2735543Z log.setLevel(logging.INFO) 2024-08-20T21:16:10.2735822Z 2024-08-20T21:16:10.2735881Z 2024-08-20T21:16:10.2736164Z def set_github_output(key: str, value: str) -> None: 2024-08-20T21:16:10.2736746Z """ 2024-08-20T21:16:10.2737302Z Defines outputs of the github action that invokes this script 2024-08-20T21:16:10.2737976Z """ 2024-08-20T21:16:10.2738319Z if not GITHUB_OUTPUT: 2024-08-20T21:16:10.2739669Z # See https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/ for deprecation notice 2024-08-20T21:16:10.2740971Z log.warning( 2024-08-20T21:16:10.2741914Z "No env var found for GITHUB_OUTPUT, you must be running this code locally. Falling back to the deprecated print method." 2024-08-20T21:16:10.2743003Z ) 2024-08-20T21:16:10.2765656Z print(f"::set-output name={key}::{value}") 2024-08-20T21:16:10.2766300Z return 2024-08-20T21:16:10.2766622Z 2024-08-20T21:16:10.2766932Z with open(GITHUB_OUTPUT, "a") as f: 2024-08-20T21:16:10.2767564Z log.info(f"Setting output: {key}='{value}'") 2024-08-20T21:16:10.2768162Z f.write(f"{key}={value}\n") 2024-08-20T21:16:10.2768597Z 2024-08-20T21:16:10.2768609Z 2024-08-20T21:16:10.2768833Z def parse_args() -> Any: 2024-08-20T21:16:10.2769368Z parser = ArgumentParser("Get dynamic rollout settings") 2024-08-20T21:16:10.2770389Z parser.add_argument("--github-token", type=str, required=True, help="GitHub token") 2024-08-20T21:16:10.2771277Z parser.add_argument( 2024-08-20T21:16:10.2771754Z "--github-issue-repo", 2024-08-20T21:16:10.2772191Z type=str, 2024-08-20T21:16:10.2772638Z required=False, 2024-08-20T21:16:10.2773085Z default="pytorch/test-infra", 2024-08-20T21:16:10.2773652Z help="GitHub repo to get the issue", 2024-08-20T21:16:10.2774243Z ) 2024-08-20T21:16:10.2774562Z parser.add_argument( 2024-08-20T21:16:10.2775068Z "--github-repo", 2024-08-20T21:16:10.2775566Z type=str, 2024-08-20T21:16:10.2775911Z required=True, 2024-08-20T21:16:10.2776390Z help="GitHub repo where CI is running", 2024-08-20T21:16:10.2777000Z ) 2024-08-20T21:16:10.2777514Z parser.add_argument( 2024-08-20T21:16:10.2778229Z "--github-issue", type=int, required=True, help="GitHub issue number" 2024-08-20T21:16:10.2779003Z ) 2024-08-20T21:16:10.2779331Z parser.add_argument( 2024-08-20T21:16:10.2780041Z "--github-actor", type=str, required=True, help="GitHub triggering_actor" 2024-08-20T21:16:10.2780825Z ) 2024-08-20T21:16:10.2781205Z parser.add_argument( 2024-08-20T21:16:10.2781957Z "--github-issue-owner", type=str, required=True, help="GitHub issue owner" 2024-08-20T21:16:10.2782900Z ) 2024-08-20T21:16:10.2783249Z parser.add_argument( 2024-08-20T21:16:10.2784031Z "--github-branch", type=str, required=True, help="Current GitHub branch or tag" 2024-08-20T21:16:10.2784927Z ) 2024-08-20T21:16:10.2785238Z parser.add_argument( 2024-08-20T21:16:10.2785707Z "--github-ref-type", 2024-08-20T21:16:10.2786234Z type=str, 2024-08-20T21:16:10.2786578Z required=True, 2024-08-20T21:16:10.2787072Z help="Current GitHub ref type, branch or tag", 2024-08-20T21:16:10.2787725Z ) 2024-08-20T21:16:10.2787898Z 2024-08-20T21:16:10.2788060Z return parser.parse_args() 2024-08-20T21:16:10.2788415Z 2024-08-20T21:16:10.2788420Z 2024-08-20T21:16:10.2788683Z def get_gh_client(github_token: str) -> Github: 2024-08-20T21:16:10.2789354Z auth = Auth.Token(github_token) 2024-08-20T21:16:10.2789855Z return Github(auth=auth) 2024-08-20T21:16:10.2790131Z 2024-08-20T21:16:10.2790136Z 2024-08-20T21:16:10.2790486Z def get_issue(gh: Github, repo: str, issue_num: int) -> Issue: 2024-08-20T21:16:10.2791243Z repo = gh.get_repo(repo) 2024-08-20T21:16:10.2791736Z return repo.get_issue(number=issue_num) 2024-08-20T21:16:10.2792308Z 2024-08-20T21:16:10.2792313Z 2024-08-20T21:16:10.2792467Z def get_potential_pr_author( 2024-08-20T21:16:10.2793176Z gh: Github, repo: str, username: str, ref_type: str, ref_name: str 2024-08-20T21:16:10.2793882Z ) -> str: 2024-08-20T21:16:10.2794417Z # If the trigger was a new tag added by a bot, this is a ciflow case 2024-08-20T21:16:10.2795384Z # Fetch the actual username from the original PR. The PR number is 2024-08-20T21:16:10.2796274Z # embedded in the tag name: ciflow// 2024-08-20T21:16:10.2797111Z if username == "pytorch-bot[bot]" and ref_type == "tag": 2024-08-20T21:16:10.2797739Z split_tag = ref_name.split("/") 2024-08-20T21:16:10.2798258Z if ( 2024-08-20T21:16:10.2798692Z len(split_tag) == 3 2024-08-20T21:16:10.2799145Z and split_tag[0] == "ciflow" 2024-08-20T21:16:10.2799687Z and split_tag[2].isnumeric() 2024-08-20T21:16:10.2800236Z ): 2024-08-20T21:16:10.2800574Z pr_number = split_tag[2] 2024-08-20T21:16:10.2801082Z try: 2024-08-20T21:16:10.2801569Z repository = gh.get_repo(repo) 2024-08-20T21:16:10.2802190Z pull = repository.get_pull(number=int(pr_number)) 2024-08-20T21:16:10.2803896Z except Exception as e: 2024-08-20T21:16:10.2804540Z raise Exception( # noqa: TRY002 2024-08-20T21:16:10.2805256Z f"issue with pull request {pr_number} from repo {repository}" 2024-08-20T21:16:10.2805969Z ) from e 2024-08-20T21:16:10.2806474Z return pull.user.login 2024-08-20T21:16:10.2807070Z # In all other cases, return the original input username 2024-08-20T21:16:10.2807692Z return username 2024-08-20T21:16:10.2807915Z 2024-08-20T21:16:10.2807921Z 2024-08-20T21:16:10.2808290Z def is_exception_branch(branch: str) -> bool: 2024-08-20T21:16:10.2809074Z return branch.split("/")[0] in {"main", "nightly", "release", "landchecks"} 2024-08-20T21:16:10.2809690Z 2024-08-20T21:16:10.2809695Z 2024-08-20T21:16:10.2810159Z def get_workflow_type(issue: Issue, workflow_requestors: Iterable[str]) -> str: 2024-08-20T21:16:10.2810980Z try: 2024-08-20T21:16:10.2811457Z first_comment = issue.get_comments()[0].body.strip("\n\t ") 2024-08-20T21:16:10.2812001Z 2024-08-20T21:16:10.2812320Z if first_comment[0] == "!": 2024-08-20T21:16:10.2813149Z log.info("LF Workflows are disabled for everyone. Using meta runners.") 2024-08-20T21:16:10.2813925Z return WORKFLOW_LABEL_META 2024-08-20T21:16:10.2814417Z elif first_comment[0] == "*": 2024-08-20T21:16:10.2815211Z log.info("LF Workflows are enabled for everyone. Using LF runners.") 2024-08-20T21:16:10.2815956Z return WORKFLOW_LABEL_LF 2024-08-20T21:16:10.2816403Z else: 2024-08-20T21:16:10.2816854Z all_opted_in_users = { 2024-08-20T21:16:10.2817391Z usr_raw.strip("\n\t@ ").split(",")[0] 2024-08-20T21:16:10.2817977Z for usr_raw in first_comment.split() 2024-08-20T21:16:10.2818604Z } 2024-08-20T21:16:10.2819060Z opted_in_requestors = { 2024-08-20T21:16:10.2819716Z usr for usr in workflow_requestors if usr in all_opted_in_users 2024-08-20T21:16:10.2820447Z } 2024-08-20T21:16:10.2820828Z if opted_in_requestors: 2024-08-20T21:16:10.2821295Z log.info( 2024-08-20T21:16:10.2822159Z f"LF Workflows are enabled for {', '.join(opted_in_requestors)}. Using LF runners." 2024-08-20T21:16:10.2822963Z ) 2024-08-20T21:16:10.2823345Z return WORKFLOW_LABEL_LF 2024-08-20T21:16:10.2823912Z else: 2024-08-20T21:16:10.2824298Z log.info( 2024-08-20T21:16:10.2825065Z f"LF Workflows are disabled for {', '.join(workflow_requestors)}. Using meta runners." 2024-08-20T21:16:10.2825969Z ) 2024-08-20T21:16:10.2826387Z return WORKFLOW_LABEL_META 2024-08-20T21:16:10.2826905Z 2024-08-20T21:16:10.2827057Z except Exception as e: 2024-08-20T21:16:10.2827567Z log.error( 2024-08-20T21:16:10.2828302Z f"Failed to get determine workflow type. Falling back to meta runners. Exception: {e}" 2024-08-20T21:16:10.2829093Z ) 2024-08-20T21:16:10.2829535Z return WORKFLOW_LABEL_META 2024-08-20T21:16:10.2829908Z 2024-08-20T21:16:10.2829913Z 2024-08-20T21:16:10.2830053Z def get_optin_feature( 2024-08-20T21:16:10.2830713Z issue: Issue, workflow_requestors: Iterable[str], feature: str, fallback: str 2024-08-20T21:16:10.2831542Z ) -> str: 2024-08-20T21:16:10.2831876Z try: 2024-08-20T21:16:10.2832486Z first_comment = issue.get_comments()[0].body.strip("\n\t ") 2024-08-20T21:16:10.2833423Z userlist = {u.lstrip("#").strip("\n\t@ ") for u in first_comment.split()} 2024-08-20T21:16:10.2834169Z all_opted_in_users = set() 2024-08-20T21:16:10.2834655Z for user in userlist: 2024-08-20T21:16:10.2835188Z for i in user.split(","): 2024-08-20T21:16:10.2835693Z if i == feature: 2024-08-20T21:16:10.2836256Z all_opted_in_users.add(user.split(",")[0]) 2024-08-20T21:16:10.2836893Z opted_in_requestors = { 2024-08-20T21:16:10.2837552Z usr for usr in workflow_requestors if usr in all_opted_in_users 2024-08-20T21:16:10.2838244Z } 2024-08-20T21:16:10.2838486Z 2024-08-20T21:16:10.2838637Z if opted_in_requestors: 2024-08-20T21:16:10.2839096Z log.info( 2024-08-20T21:16:10.2839972Z f"Feature {feature} is enabled for {', '.join(opted_in_requestors)}. Using feature {feature}." 2024-08-20T21:16:10.2840850Z ) 2024-08-20T21:16:10.2841219Z return feature 2024-08-20T21:16:10.2841651Z else: 2024-08-20T21:16:10.2842029Z log.info( 2024-08-20T21:16:10.2843213Z f"Feature {feature} is disabled for {', '.join(workflow_requestors)}. Using fallback \"{fallback}\"." 2024-08-20T21:16:10.2844151Z ) 2024-08-20T21:16:10.2844571Z return fallback 2024-08-20T21:16:10.2844878Z 2024-08-20T21:16:10.2845027Z except Exception as e: 2024-08-20T21:16:10.2845478Z log.error( 2024-08-20T21:16:10.2846640Z f'Failed to determine if user has opted-in to feature {feature}. Using fallback "{fallback}". Exception: {e}' 2024-08-20T21:16:10.2847647Z ) 2024-08-20T21:16:10.2848012Z return fallback 2024-08-20T21:16:10.2848335Z 2024-08-20T21:16:10.2848340Z 2024-08-20T21:16:10.2848549Z def main() -> None: 2024-08-20T21:16:10.2848930Z args = parse_args() 2024-08-20T21:16:10.2849209Z 2024-08-20T21:16:10.2849619Z if args.github_ref_type == "branch" and is_exception_branch(args.github_branch): 2024-08-20T21:16:10.2850782Z log.info(f"Exception branch: '{args.github_branch}', using meta runners") 2024-08-20T21:16:10.2851535Z label_type = WORKFLOW_LABEL_META 2024-08-20T21:16:10.2852076Z runner_ami = RUNNER_AMI_LEGACY 2024-08-20T21:16:10.2852663Z else: 2024-08-20T21:16:10.2852964Z try: 2024-08-20T21:16:10.2853379Z gh = get_gh_client(args.github_token) 2024-08-20T21:16:10.2854376Z # The default issue we use - https://github.com/pytorch/test-infra/issues/5132 2024-08-20T21:16:10.2855323Z issue = get_issue(gh, args.github_issue_repo, args.github_issue) 2024-08-20T21:16:10.2856086Z username = get_potential_pr_author( 2024-08-20T21:16:10.2856716Z gh, 2024-08-20T21:16:10.2857079Z args.github_repo, 2024-08-20T21:16:10.2857560Z args.github_actor, 2024-08-20T21:16:10.2858138Z args.github_ref_type, 2024-08-20T21:16:10.2858611Z args.github_branch, 2024-08-20T21:16:10.2859089Z ) 2024-08-20T21:16:10.2859571Z label_type = get_workflow_type( 2024-08-20T21:16:10.2860058Z issue, 2024-08-20T21:16:10.2860463Z ( 2024-08-20T21:16:10.2861115Z args.github_issue_owner, 2024-08-20T21:16:10.2861626Z username, 2024-08-20T21:16:10.2862076Z ), 2024-08-20T21:16:10.2862567Z ) 2024-08-20T21:16:10.2862921Z runner_ami = get_optin_feature( 2024-08-20T21:16:10.2863467Z issue=issue, 2024-08-20T21:16:10.2863994Z workflow_requestors=( 2024-08-20T21:16:10.2864490Z args.github_issue_owner, 2024-08-20T21:16:10.2865034Z username, 2024-08-20T21:16:10.2865527Z ), 2024-08-20T21:16:10.2865916Z feature=RUNNER_AMI_AMZ2023, 2024-08-20T21:16:10.2866462Z fallback=RUNNER_AMI_LEGACY, 2024-08-20T21:16:10.2867078Z ) 2024-08-20T21:16:10.2867454Z except Exception as e: 2024-08-20T21:16:10.2867909Z log.error( 2024-08-20T21:16:10.2868589Z f"Failed to get issue. Falling back to meta runners. Exception: {e}" 2024-08-20T21:16:10.2869290Z ) 2024-08-20T21:16:10.2869684Z label_type = WORKFLOW_LABEL_META 2024-08-20T21:16:10.2870315Z runner_ami = RUNNER_AMI_LEGACY 2024-08-20T21:16:10.2870689Z 2024-08-20T21:16:10.2870865Z # For Canary builds use canary runners 2024-08-20T21:16:10.2871779Z if args.github_repo == "pytorch/pytorch-canary" and label_type == WORKFLOW_LABEL_LF: 2024-08-20T21:16:10.2872732Z label_type = WORKFLOW_LABEL_LF_CANARY 2024-08-20T21:16:10.2873108Z 2024-08-20T21:16:10.2873402Z set_github_output(GH_OUTPUT_KEY_LABEL_TYPE, label_type) 2024-08-20T21:16:10.2874069Z set_github_output(GH_OUTPUT_KEY_AMI, runner_ami) 2024-08-20T21:16:10.2874584Z 2024-08-20T21:16:10.2874589Z 2024-08-20T21:16:10.2874764Z if __name__ == "__main__": 2024-08-20T21:16:10.2875183Z main() 2024-08-20T21:16:10.3053125Z ##[group]Run python3 -m pip install urllib3==1.26.18 PyGithub==2.3.0 2024-08-20T21:16:10.3054075Z python3 -m pip install urllib3==1.26.18 PyGithub==2.3.0 2024-08-20T21:16:10.3115503Z shell: /usr/bin/bash -e {0} 2024-08-20T21:16:10.3115983Z env: 2024-08-20T21:16:10.3116528Z GITHUB_TOKEN: *** 2024-08-20T21:16:10.3117025Z ISSUE_NUMBER: 5132 2024-08-20T21:16:10.3117484Z TRIGGERING_ACTOR: pytorchmergebot 2024-08-20T21:16:10.3117963Z ISSUE_OWNER: XuehaiPan 2024-08-20T21:16:10.3118476Z ##[endgroup] 2024-08-20T21:16:10.8517596Z Defaulting to user installation because normal site-packages is not writeable 2024-08-20T21:16:11.2424387Z Collecting urllib3==1.26.18 2024-08-20T21:16:11.3054955Z Downloading urllib3-1.26.18-py2.py3-none-any.whl (143 kB) 2024-08-20T21:16:11.3376253Z ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 143.8/143.8 KB 4.6 MB/s eta 0:00:00 2024-08-20T21:16:11.3733800Z Collecting PyGithub==2.3.0 2024-08-20T21:16:11.3806798Z Downloading PyGithub-2.3.0-py3-none-any.whl (354 kB) 2024-08-20T21:16:11.4151463Z ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 354.4/354.4 KB 10.6 MB/s eta 0:00:00 2024-08-20T21:16:11.4353398Z Requirement already satisfied: requests>=2.14.0 in /usr/lib/python3/dist-packages (from PyGithub==2.3.0) (2.25.1) 2024-08-20T21:16:11.4651871Z Collecting typing-extensions>=4.0.0 2024-08-20T21:16:11.4734731Z Downloading typing_extensions-4.12.2-py3-none-any.whl (37 kB) 2024-08-20T21:16:11.5128862Z Collecting pynacl>=1.4.0 2024-08-20T21:16:11.5202510Z Downloading PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl (856 kB) 2024-08-20T21:16:11.5788071Z ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 856.7/856.7 KB 15.0 MB/s eta 0:00:00 2024-08-20T21:16:11.6118885Z Collecting Deprecated 2024-08-20T21:16:11.6193485Z Downloading Deprecated-1.2.14-py2.py3-none-any.whl (9.6 kB) 2024-08-20T21:16:11.6511106Z Collecting pyjwt[crypto]>=2.4.0 2024-08-20T21:16:11.6584793Z Downloading PyJWT-2.9.0-py3-none-any.whl (22 kB) 2024-08-20T21:16:11.6719304Z Requirement already satisfied: cryptography>=3.4.0 in /usr/lib/python3/dist-packages (from pyjwt[crypto]>=2.4.0->PyGithub==2.3.0) (3.4.8) 2024-08-20T21:16:11.8929546Z Collecting cffi>=1.4.1 2024-08-20T21:16:11.9007266Z Downloading cffi-1.17.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (445 kB) 2024-08-20T21:16:11.9251709Z ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 445.9/445.9 KB 19.6 MB/s eta 0:00:00 2024-08-20T21:16:12.0776449Z Collecting wrapt<2,>=1.10 2024-08-20T21:16:12.0852831Z Downloading wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (80 kB) 2024-08-20T21:16:12.0895399Z ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 80.3/80.3 KB 28.9 MB/s eta 0:00:00 2024-08-20T21:16:12.1092409Z Collecting pycparser 2024-08-20T21:16:12.1168925Z Downloading pycparser-2.22-py3-none-any.whl (117 kB) 2024-08-20T21:16:12.1229881Z ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 117.6/117.6 KB 25.9 MB/s eta 0:00:00 2024-08-20T21:16:12.2999885Z Installing collected packages: wrapt, urllib3, typing-extensions, pyjwt, pycparser, Deprecated, cffi, pynacl, PyGithub 2024-08-20T21:16:12.7638758Z Successfully installed Deprecated-1.2.14 PyGithub-2.3.0 cffi-1.17.0 pycparser-2.22 pyjwt-2.9.0 pynacl-1.5.0 typing-extensions-4.12.2 urllib3-1.26.18 wrapt-1.16.0 2024-08-20T21:16:12.8301745Z ##[group]Run curr_branch="gh/XuehaiPan/146/head" 2024-08-20T21:16:12.8302459Z curr_branch="gh/XuehaiPan/146/head" 2024-08-20T21:16:12.8303008Z curr_ref_type="branch" 2024-08-20T21:16:12.8303484Z echo "Current branch is '$curr_branch'" 2024-08-20T21:16:12.8303890Z  2024-08-20T21:16:12.8304329Z python3 runner_determinator.py \ 2024-08-20T21:16:12.8304814Z  --github-token "$GITHUB_TOKEN" \ 2024-08-20T21:16:12.8305282Z  --github-issue "$ISSUE_NUMBER" \ 2024-08-20T21:16:12.8305780Z  --github-branch "$curr_branch" \ 2024-08-20T21:16:12.8306259Z  --github-actor "$TRIGGERING_ACTOR" \ 2024-08-20T21:16:12.8306747Z  --github-issue-owner "$ISSUE_OWNER" \ 2024-08-20T21:16:12.8307279Z  --github-ref-type "$curr_ref_type" \ 2024-08-20T21:16:12.8307779Z  --github-repo "$GITHUB_REPOSITORY" 2024-08-20T21:16:12.8372182Z shell: /usr/bin/bash -e {0} 2024-08-20T21:16:12.8372657Z env: 2024-08-20T21:16:12.8373337Z GITHUB_TOKEN: *** 2024-08-20T21:16:12.8373710Z ISSUE_NUMBER: 5132 2024-08-20T21:16:12.8374077Z TRIGGERING_ACTOR: pytorchmergebot 2024-08-20T21:16:12.8374531Z ISSUE_OWNER: XuehaiPan 2024-08-20T21:16:12.8374899Z ##[endgroup] 2024-08-20T21:16:12.8457806Z Current branch is 'gh/XuehaiPan/146/head' 2024-08-20T21:16:14.0021592Z INFO : LF Workflows are disabled for XuehaiPan, pytorchmergebot. Using meta runners. 2024-08-20T21:16:14.4610194Z INFO : Feature amz2023 is disabled for XuehaiPan, pytorchmergebot. Using fallback "". 2024-08-20T21:16:14.4611398Z INFO : Setting output: label-type='' 2024-08-20T21:16:14.4611977Z INFO : Setting output: runner-ami='' 2024-08-20T21:16:14.4984779Z Evaluate and set job outputs 2024-08-20T21:16:14.4995667Z Cleaning up orphan processes