2024-08-20T21:16:12.7465347Z Current runner version: '2.319.1' 2024-08-20T21:16:12.7488495Z ##[group]Operating System 2024-08-20T21:16:12.7489151Z Ubuntu 2024-08-20T21:16:12.7489517Z 22.04.4 2024-08-20T21:16:12.7489891Z LTS 2024-08-20T21:16:12.7490242Z ##[endgroup] 2024-08-20T21:16:12.7490611Z ##[group]Runner Image 2024-08-20T21:16:12.7491094Z Image: ubuntu-22.04 2024-08-20T21:16:12.7491514Z Version: 20240811.1.0 2024-08-20T21:16:12.7492486Z Included Software: https://github.com/actions/runner-images/blob/ubuntu22/20240811.1/images/ubuntu/Ubuntu2204-Readme.md 2024-08-20T21:16:12.7493970Z Image Release: https://github.com/actions/runner-images/releases/tag/ubuntu22%2F20240811.1 2024-08-20T21:16:12.7494860Z ##[endgroup] 2024-08-20T21:16:12.7495257Z ##[group]Runner Image Provisioner 2024-08-20T21:16:12.7495765Z 2.0.374.1 2024-08-20T21:16:12.7496121Z ##[endgroup] 2024-08-20T21:16:12.7512258Z ##[group]GITHUB_TOKEN Permissions 2024-08-20T21:16:12.7513928Z Actions: read 2024-08-20T21:16:12.7514661Z Attestations: read 2024-08-20T21:16:12.7515150Z Checks: read 2024-08-20T21:16:12.7515603Z Contents: read 2024-08-20T21:16:12.7515949Z Deployments: read 2024-08-20T21:16:12.7516358Z Discussions: read 2024-08-20T21:16:12.7516827Z Issues: read 2024-08-20T21:16:12.7517151Z Metadata: read 2024-08-20T21:16:12.7517559Z Packages: read 2024-08-20T21:16:12.7517994Z Pages: read 2024-08-20T21:16:12.7518323Z PullRequests: read 2024-08-20T21:16:12.7518760Z RepositoryProjects: read 2024-08-20T21:16:12.7519266Z SecurityEvents: read 2024-08-20T21:16:12.7519635Z Statuses: read 2024-08-20T21:16:12.7520029Z ##[endgroup] 2024-08-20T21:16:12.7523025Z Secret source: Actions 2024-08-20T21:16:12.7523594Z Prepare workflow directory 2024-08-20T21:16:12.8438290Z Prepare all required actions 2024-08-20T21:16:12.8604515Z Uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@refs/pull/133712/merge (f2fb9405c2fa9f9502a76363091cce6fd8179736) 2024-08-20T21:16:12.8609691Z ##[group] Inputs 2024-08-20T21:16:12.8610228Z triggering_actor: pytorchmergebot 2024-08-20T21:16:12.8610897Z issue_owner: XuehaiPan 2024-08-20T21:16:12.8611380Z curr_branch: gh/XuehaiPan/146/head 2024-08-20T21:16:12.8611919Z curr_ref_type: branch 2024-08-20T21:16:12.8612405Z issue_number: 5132 2024-08-20T21:16:12.8612820Z ##[endgroup] 2024-08-20T21:16:12.8613648Z Complete job name: get-label-type / runner-determinator 2024-08-20T21:16:12.9495890Z ##[group]Run cat < runner_determinator.py 2024-08-20T21:16:12.9497405Z cat < runner_determinator.py 2024-08-20T21:16:12.9498089Z # flake8: noqa: G004 2024-08-20T21:16:12.9498564Z  2024-08-20T21:16:12.9498945Z """ 2024-08-20T21:16:12.9499669Z This runner determinator is used to determine which set of runners to run a 2024-08-20T21:16:12.9500768Z GitHub job on. It uses the first comment of a GitHub issue (by default 2024-08-20T21:16:12.9501916Z https://github.com/pytorch/test-infra/issues/5132) as a user list to determine 2024-08-20T21:16:12.9503160Z which users will get their jobs to run on experimental runners. This user list 2024-08-20T21:16:12.9504298Z is also a comma separated list of additional features or experiments which the 2024-08-20T21:16:12.9505198Z user could be opted in to. 2024-08-20T21:16:12.9505757Z  2024-08-20T21:16:12.9506274Z The user list has the following rules: 2024-08-20T21:16:12.9506894Z  2024-08-20T21:16:12.9507334Z - Users are GitHub usernames with the @ prefix 2024-08-20T21:16:12.9508222Z - If the first line is a "*" then all users will use the new runners 2024-08-20T21:16:12.9509247Z - If the first line is a "!" then all users will use the old runners 2024-08-20T21:16:12.9510553Z - Each user is also a comma-separated list of features/experiments to enable 2024-08-20T21:16:12.9511688Z - A "#" prefix indicates the user is opted out of the new runners but is opting 2024-08-20T21:16:12.9512632Z  into features/experiments. 2024-08-20T21:16:12.9513447Z  2024-08-20T21:16:12.9513781Z Example user list: 2024-08-20T21:16:12.9514301Z  2024-08-20T21:16:12.9514663Z  @User1 2024-08-20T21:16:12.9515031Z  @User2,amz2023 2024-08-20T21:16:12.9515647Z  #@UserOptOutOfNewRunner,amz2023 2024-08-20T21:16:12.9516239Z """ 2024-08-20T21:16:12.9516551Z  2024-08-20T21:16:12.9516987Z import logging 2024-08-20T21:16:12.9517405Z import os 2024-08-20T21:16:12.9517829Z from argparse import ArgumentParser 2024-08-20T21:16:12.9518501Z from logging import LogRecord 2024-08-20T21:16:12.9519064Z from typing import Any, Iterable 2024-08-20T21:16:12.9519547Z  2024-08-20T21:16:12.9519999Z from github import Auth, Github 2024-08-20T21:16:12.9520567Z from github.Issue import Issue 2024-08-20T21:16:12.9521048Z  2024-08-20T21:16:12.9521458Z  2024-08-20T21:16:12.9521929Z WORKFLOW_LABEL_META = "" # use meta runners 2024-08-20T21:16:12.9522715Z WORKFLOW_LABEL_LF = "lf." # use runners from the linux foundation 2024-08-20T21:16:12.9523835Z WORKFLOW_LABEL_LF_CANARY = "lf.c." # use canary runners from the linux foundation 2024-08-20T21:16:12.9524657Z  2024-08-20T21:16:12.9525003Z RUNNER_AMI_LEGACY = "" 2024-08-20T21:16:12.9525567Z RUNNER_AMI_AMZ2023 = "amz2023" 2024-08-20T21:16:12.9526069Z  2024-08-20T21:16:12.9526541Z GITHUB_OUTPUT = os.getenv("GITHUB_OUTPUT", "") 2024-08-20T21:16:12.9527222Z GH_OUTPUT_KEY_AMI = "runner-ami" 2024-08-20T21:16:12.9527829Z GH_OUTPUT_KEY_LABEL_TYPE = "label-type" 2024-08-20T21:16:12.9528400Z  2024-08-20T21:16:12.9528763Z  2024-08-20T21:16:12.9529217Z class ColorFormatter(logging.Formatter): 2024-08-20T21:16:12.9530001Z  """Color codes the log messages based on the log level""" 2024-08-20T21:16:12.9530713Z  2024-08-20T21:16:12.9531080Z  COLORS = { 2024-08-20T21:16:12.9531560Z  "WARNING": "\033[33m", # Yellow 2024-08-20T21:16:12.9532238Z  "ERROR": "\033[31m", # Red 2024-08-20T21:16:12.9532839Z  "CRITICAL": "\033[31m", # Red 2024-08-20T21:16:12.9533594Z  "INFO": "\033[0m", # Reset 2024-08-20T21:16:12.9534237Z  "DEBUG": "\033[0m", # Reset 2024-08-20T21:16:12.9534800Z  } 2024-08-20T21:16:12.9535160Z  2024-08-20T21:16:12.9535650Z  def format(self, record: LogRecord) -> str: 2024-08-20T21:16:12.9536613Z  log_color = self.COLORS.get(record.levelname, "\033[0m") # Default to reset 2024-08-20T21:16:12.9537563Z  record.msg = f"{log_color}{record.msg}\033[0m" 2024-08-20T21:16:12.9538333Z  return super().format(record) 2024-08-20T21:16:12.9538914Z  2024-08-20T21:16:12.9539256Z  2024-08-20T21:16:12.9539758Z handler = logging.StreamHandler() 2024-08-20T21:16:12.9540571Z handler.setFormatter(ColorFormatter(fmt="%(levelname)-8s: %(message)s")) 2024-08-20T21:16:12.9541373Z  2024-08-20T21:16:12.9541957Z log = logging.getLogger(os.path.basename(__file__)) 2024-08-20T21:16:12.9542642Z log.addHandler(handler) 2024-08-20T21:16:12.9543118Z log.setLevel(logging.INFO) 2024-08-20T21:16:12.9543719Z  2024-08-20T21:16:12.9544054Z  2024-08-20T21:16:12.9544533Z def set_github_output(key: str, value: str) -> None: 2024-08-20T21:16:12.9545236Z  """ 2024-08-20T21:16:12.9545834Z  Defines outputs of the github action that invokes this script 2024-08-20T21:16:12.9546533Z  """ 2024-08-20T21:16:12.9546989Z  if not GITHUB_OUTPUT: 2024-08-20T21:16:12.9548336Z  # See https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/ for deprecation notice 2024-08-20T21:16:12.9549829Z  log.warning( 2024-08-20T21:16:12.9551328Z  "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:12.9552493Z  ) 2024-08-20T21:16:12.9553018Z  print(f"::set-output name={key}::{value}") 2024-08-20T21:16:12.9553690Z  return 2024-08-20T21:16:12.9554111Z  2024-08-20T21:16:12.9554525Z  with open(GITHUB_OUTPUT, "a") as f: 2024-08-20T21:16:12.9555247Z  log.info(f"Setting output: {key}='{value}'") 2024-08-20T21:16:12.9555931Z  f.write(f"{key}={value}\n") 2024-08-20T21:16:12.9556449Z  2024-08-20T21:16:12.9556810Z  2024-08-20T21:16:12.9557188Z def parse_args() -> Any: 2024-08-20T21:16:12.9557859Z  parser = ArgumentParser("Get dynamic rollout settings") 2024-08-20T21:16:12.9558939Z  parser.add_argument("--github-token", type=str, required=True, help="GitHub token") 2024-08-20T21:16:12.9559835Z  parser.add_argument( 2024-08-20T21:16:12.9560377Z  "--github-issue-repo", 2024-08-20T21:16:12.9560943Z  type=str, 2024-08-20T21:16:12.9561394Z  required=False, 2024-08-20T21:16:12.9561923Z  default="pytorch/test-infra", 2024-08-20T21:16:12.9562609Z  help="GitHub repo to get the issue", 2024-08-20T21:16:12.9563183Z  ) 2024-08-20T21:16:12.9563570Z  parser.add_argument( 2024-08-20T21:16:12.9564152Z  "--github-repo", 2024-08-20T21:16:12.9564598Z  type=str, 2024-08-20T21:16:12.9565037Z  required=True, 2024-08-20T21:16:12.9565683Z  help="GitHub repo where CI is running", 2024-08-20T21:16:12.9566256Z  ) 2024-08-20T21:16:12.9566673Z  parser.add_argument( 2024-08-20T21:16:12.9567488Z  "--github-issue", type=int, required=True, help="GitHub issue number" 2024-08-20T21:16:12.9568208Z  ) 2024-08-20T21:16:12.9568608Z  parser.add_argument( 2024-08-20T21:16:12.9569610Z  "--github-actor", type=str, required=True, help="GitHub triggering_actor" 2024-08-20T21:16:12.9570383Z  ) 2024-08-20T21:16:12.9570880Z  parser.add_argument( 2024-08-20T21:16:12.9571755Z  "--github-issue-owner", type=str, required=True, help="GitHub issue owner" 2024-08-20T21:16:12.9572533Z  ) 2024-08-20T21:16:12.9572917Z  parser.add_argument( 2024-08-20T21:16:12.9573796Z  "--github-branch", type=str, required=True, help="Current GitHub branch or tag" 2024-08-20T21:16:12.9574611Z  ) 2024-08-20T21:16:12.9574994Z  parser.add_argument( 2024-08-20T21:16:12.9575572Z  "--github-ref-type", 2024-08-20T21:16:12.9576105Z  type=str, 2024-08-20T21:16:12.9576513Z  required=True, 2024-08-20T21:16:12.9577193Z  help="Current GitHub ref type, branch or tag", 2024-08-20T21:16:12.9577833Z  ) 2024-08-20T21:16:12.9578156Z  2024-08-20T21:16:12.9578627Z  return parser.parse_args() 2024-08-20T21:16:12.9579141Z  2024-08-20T21:16:12.9579434Z  2024-08-20T21:16:12.9579978Z def get_gh_client(github_token: str) -> Github: 2024-08-20T21:16:12.9580670Z  auth = Auth.Token(github_token) 2024-08-20T21:16:12.9581197Z  return Github(auth=auth) 2024-08-20T21:16:12.9581771Z  2024-08-20T21:16:12.9582102Z  2024-08-20T21:16:12.9582626Z def get_issue(gh: Github, repo: str, issue_num: int) -> Issue: 2024-08-20T21:16:12.9583443Z  repo = gh.get_repo(repo) 2024-08-20T21:16:12.9584036Z  return repo.get_issue(number=issue_num) 2024-08-20T21:16:12.9584765Z  2024-08-20T21:16:12.9585168Z  2024-08-20T21:16:12.9585537Z def get_potential_pr_author( 2024-08-20T21:16:12.9586254Z  gh: Github, repo: str, username: str, ref_type: str, ref_name: str 2024-08-20T21:16:12.9587076Z ) -> str: 2024-08-20T21:16:12.9587727Z  # If the trigger was a new tag added by a bot, this is a ciflow case 2024-08-20T21:16:12.9588716Z  # Fetch the actual username from the original PR. The PR number is 2024-08-20T21:16:12.9589688Z  # embedded in the tag name: ciflow// 2024-08-20T21:16:12.9590822Z  if username == "pytorch-bot[bot]" and ref_type == "tag": 2024-08-20T21:16:12.9591679Z  split_tag = ref_name.split("/") 2024-08-20T21:16:12.9592212Z  if ( 2024-08-20T21:16:12.9592658Z  len(split_tag) == 3 2024-08-20T21:16:12.9593295Z  and split_tag[0] == "ciflow" 2024-08-20T21:16:12.9593887Z  and split_tag[2].isnumeric() 2024-08-20T21:16:12.9594458Z  ): 2024-08-20T21:16:12.9594961Z  pr_number = split_tag[2] 2024-08-20T21:16:12.9595487Z  try: 2024-08-20T21:16:12.9596013Z  repository = gh.get_repo(repo) 2024-08-20T21:16:12.9596810Z  pull = repository.get_pull(number=int(pr_number)) 2024-08-20T21:16:12.9597510Z  except Exception as e: 2024-08-20T21:16:12.9598158Z  raise Exception( # noqa: TRY002 2024-08-20T21:16:12.9599044Z  f"issue with pull request {pr_number} from repo {repository}" 2024-08-20T21:16:12.9599810Z  ) from e 2024-08-20T21:16:12.9600299Z  return pull.user.login 2024-08-20T21:16:12.9601071Z  # In all other cases, return the original input username 2024-08-20T21:16:12.9601779Z  return username 2024-08-20T21:16:12.9602190Z  2024-08-20T21:16:12.9602585Z  2024-08-20T21:16:12.9603085Z def is_exception_branch(branch: str) -> bool: 2024-08-20T21:16:12.9603923Z  return branch.split("/")[0] in {"main", "nightly", "release", "landchecks"} 2024-08-20T21:16:12.9604902Z  2024-08-20T21:16:12.9605274Z  2024-08-20T21:16:12.9605902Z def get_workflow_type(issue: Issue, workflow_requestors: Iterable[str]) -> str: 2024-08-20T21:16:12.9606806Z  try: 2024-08-20T21:16:12.9607392Z  first_comment = issue.get_comments()[0].body.strip("\n\t ") 2024-08-20T21:16:12.9608056Z  2024-08-20T21:16:12.9608523Z  if first_comment[0] == "!": 2024-08-20T21:16:12.9609349Z  log.info("LF Workflows are disabled for everyone. Using meta runners.") 2024-08-20T21:16:12.9610201Z  return WORKFLOW_LABEL_META 2024-08-20T21:16:12.9610866Z  elif first_comment[0] == "*": 2024-08-20T21:16:12.9611691Z  log.info("LF Workflows are enabled for everyone. Using LF runners.") 2024-08-20T21:16:12.9612511Z  return WORKFLOW_LABEL_LF 2024-08-20T21:16:12.9613091Z  else: 2024-08-20T21:16:12.9613547Z  all_opted_in_users = { 2024-08-20T21:16:12.9614192Z  usr_raw.strip("\n\t@ ").split(",")[0] 2024-08-20T21:16:12.9614929Z  for usr_raw in first_comment.split() 2024-08-20T21:16:12.9615533Z  } 2024-08-20T21:16:12.9616000Z  opted_in_requestors = { 2024-08-20T21:16:12.9616816Z  usr for usr in workflow_requestors if usr in all_opted_in_users 2024-08-20T21:16:12.9617570Z  } 2024-08-20T21:16:12.9618037Z  if opted_in_requestors: 2024-08-20T21:16:12.9618667Z  log.info( 2024-08-20T21:16:12.9619623Z  f"LF Workflows are enabled for {', '.join(opted_in_requestors)}. Using LF runners." 2024-08-20T21:16:12.9620491Z  ) 2024-08-20T21:16:12.9621055Z  return WORKFLOW_LABEL_LF 2024-08-20T21:16:12.9621636Z  else: 2024-08-20T21:16:12.9622071Z  log.info( 2024-08-20T21:16:12.9622936Z  f"LF Workflows are disabled for {', '.join(workflow_requestors)}. Using meta runners." 2024-08-20T21:16:12.9623817Z  ) 2024-08-20T21:16:12.9624307Z  return WORKFLOW_LABEL_META 2024-08-20T21:16:12.9624885Z  2024-08-20T21:16:12.9625276Z  except Exception as e: 2024-08-20T21:16:12.9625799Z  log.error( 2024-08-20T21:16:12.9626655Z  f"Failed to get determine workflow type. Falling back to meta runners. Exception: {e}" 2024-08-20T21:16:12.9627557Z  ) 2024-08-20T21:16:12.9627996Z  return WORKFLOW_LABEL_META 2024-08-20T21:16:12.9628566Z  2024-08-20T21:16:12.9628899Z  2024-08-20T21:16:12.9629259Z def get_optin_feature( 2024-08-20T21:16:12.9630087Z  issue: Issue, workflow_requestors: Iterable[str], feature: str, fallback: str 2024-08-20T21:16:12.9631221Z ) -> str: 2024-08-20T21:16:12.9631619Z  try: 2024-08-20T21:16:12.9632336Z  first_comment = issue.get_comments()[0].body.strip("\n\t ") 2024-08-20T21:16:12.9633315Z  userlist = {u.lstrip("#").strip("\n\t@ ") for u in first_comment.split()} 2024-08-20T21:16:12.9634150Z  all_opted_in_users = set() 2024-08-20T21:16:12.9634792Z  for user in userlist: 2024-08-20T21:16:12.9635319Z  for i in user.split(","): 2024-08-20T21:16:12.9635910Z  if i == feature: 2024-08-20T21:16:12.9636620Z  all_opted_in_users.add(user.split(",")[0]) 2024-08-20T21:16:12.9637258Z  opted_in_requestors = { 2024-08-20T21:16:12.9638029Z  usr for usr in workflow_requestors if usr in all_opted_in_users 2024-08-20T21:16:12.9638842Z  } 2024-08-20T21:16:12.9639344Z  2024-08-20T21:16:12.9639760Z  if opted_in_requestors: 2024-08-20T21:16:12.9640364Z  log.info( 2024-08-20T21:16:12.9641219Z  f"Feature {feature} is enabled for {', '.join(opted_in_requestors)}. Using feature {feature}." 2024-08-20T21:16:12.9642137Z  ) 2024-08-20T21:16:12.9642624Z  return feature 2024-08-20T21:16:12.9643128Z  else: 2024-08-20T21:16:12.9643505Z  log.info( 2024-08-20T21:16:12.9644463Z  f"Feature {feature} is disabled for {', '.join(workflow_requestors)}. Using fallback \"{fallback}\"." 2024-08-20T21:16:12.9645433Z  ) 2024-08-20T21:16:12.9645824Z  return fallback 2024-08-20T21:16:12.9646379Z  2024-08-20T21:16:12.9646766Z  except Exception as e: 2024-08-20T21:16:12.9647233Z  log.error( 2024-08-20T21:16:12.9648270Z  f'Failed to determine if user has opted-in to feature {feature}. Using fallback "{fallback}". Exception: {e}' 2024-08-20T21:16:12.9649339Z  ) 2024-08-20T21:16:12.9649701Z  return fallback 2024-08-20T21:16:12.9650242Z  2024-08-20T21:16:12.9650577Z  2024-08-20T21:16:12.9650895Z def main() -> None: 2024-08-20T21:16:12.9651442Z  args = parse_args() 2024-08-20T21:16:12.9651909Z  2024-08-20T21:16:12.9652538Z  if args.github_ref_type == "branch" and is_exception_branch(args.github_branch): 2024-08-20T21:16:12.9653746Z  log.info(f"Exception branch: '{args.github_branch}', using meta runners") 2024-08-20T21:16:12.9654770Z  label_type = WORKFLOW_LABEL_META 2024-08-20T21:16:12.9655482Z  runner_ami = RUNNER_AMI_LEGACY 2024-08-20T21:16:12.9656026Z  else: 2024-08-20T21:16:12.9656409Z  try: 2024-08-20T21:16:12.9657005Z  gh = get_gh_client(args.github_token) 2024-08-20T21:16:12.9657901Z  # The default issue we use - https://github.com/pytorch/test-infra/issues/5132 2024-08-20T21:16:12.9658962Z  issue = get_issue(gh, args.github_issue_repo, args.github_issue) 2024-08-20T21:16:12.9659876Z  username = get_potential_pr_author( 2024-08-20T21:16:12.9660438Z  gh, 2024-08-20T21:16:12.9660919Z  args.github_repo, 2024-08-20T21:16:12.9661574Z  args.github_actor, 2024-08-20T21:16:12.9662157Z  args.github_ref_type, 2024-08-20T21:16:12.9662716Z  args.github_branch, 2024-08-20T21:16:12.9663326Z  ) 2024-08-20T21:16:12.9663827Z  label_type = get_workflow_type( 2024-08-20T21:16:12.9664382Z  issue, 2024-08-20T21:16:12.9664908Z  ( 2024-08-20T21:16:12.9665410Z  args.github_issue_owner, 2024-08-20T21:16:12.9665982Z  username, 2024-08-20T21:16:12.9666537Z  ), 2024-08-20T21:16:12.9666970Z  ) 2024-08-20T21:16:12.9667429Z  runner_ami = get_optin_feature( 2024-08-20T21:16:12.9668068Z  issue=issue, 2024-08-20T21:16:12.9668615Z  workflow_requestors=( 2024-08-20T21:16:12.9669207Z  args.github_issue_owner, 2024-08-20T21:16:12.9669861Z  username, 2024-08-20T21:16:12.9670966Z  ), 2024-08-20T21:16:12.9671480Z  feature=RUNNER_AMI_AMZ2023, 2024-08-20T21:16:12.9672205Z  fallback=RUNNER_AMI_LEGACY, 2024-08-20T21:16:12.9672787Z  ) 2024-08-20T21:16:12.9673198Z  except Exception as e: 2024-08-20T21:16:12.9673948Z  log.error( 2024-08-20T21:16:12.9674751Z  f"Failed to get issue. Falling back to meta runners. Exception: {e}" 2024-08-20T21:16:12.9675532Z  ) 2024-08-20T21:16:12.9676048Z  label_type = WORKFLOW_LABEL_META 2024-08-20T21:16:12.9676702Z  runner_ami = RUNNER_AMI_LEGACY 2024-08-20T21:16:12.9677251Z  2024-08-20T21:16:12.9677756Z  # For Canary builds use canary runners 2024-08-20T21:16:12.9678700Z  if args.github_repo == "pytorch/pytorch-canary" and label_type == WORKFLOW_LABEL_LF: 2024-08-20T21:16:12.9679653Z  label_type = WORKFLOW_LABEL_LF_CANARY 2024-08-20T21:16:12.9680278Z  2024-08-20T21:16:12.9680805Z  set_github_output(GH_OUTPUT_KEY_LABEL_TYPE, label_type) 2024-08-20T21:16:12.9681615Z  set_github_output(GH_OUTPUT_KEY_AMI, runner_ami) 2024-08-20T21:16:12.9682272Z  2024-08-20T21:16:12.9682613Z  2024-08-20T21:16:12.9682976Z if __name__ == "__main__": 2024-08-20T21:16:12.9683504Z  main() 2024-08-20T21:16:12.9683888Z EOF 2024-08-20T21:16:12.9684271Z  2024-08-20T21:16:12.9684673Z cat runner_determinator.py 2024-08-20T21:16:13.0100528Z shell: /usr/bin/bash -e {0} 2024-08-20T21:16:13.0101200Z env: 2024-08-20T21:16:13.0101843Z GITHUB_TOKEN: *** 2024-08-20T21:16:13.0102312Z ISSUE_NUMBER: 5132 2024-08-20T21:16:13.0102867Z TRIGGERING_ACTOR: pytorchmergebot 2024-08-20T21:16:13.0103363Z ISSUE_OWNER: XuehaiPan 2024-08-20T21:16:13.0103791Z ##[endgroup] 2024-08-20T21:16:13.0527168Z # flake8: noqa: G004 2024-08-20T21:16:13.0527876Z 2024-08-20T21:16:13.0528043Z """ 2024-08-20T21:16:13.0529581Z This runner determinator is used to determine which set of runners to run a 2024-08-20T21:16:13.0530667Z GitHub job on. It uses the first comment of a GitHub issue (by default 2024-08-20T21:16:13.0532141Z https://github.com/pytorch/test-infra/issues/5132) as a user list to determine 2024-08-20T21:16:13.0533322Z which users will get their jobs to run on experimental runners. This user list 2024-08-20T21:16:13.0534432Z is also a comma separated list of additional features or experiments which the 2024-08-20T21:16:13.0535395Z user could be opted in to. 2024-08-20T21:16:13.0535687Z 2024-08-20T21:16:13.0535894Z The user list has the following rules: 2024-08-20T21:16:13.0536269Z 2024-08-20T21:16:13.0536544Z - Users are GitHub usernames with the @ prefix 2024-08-20T21:16:13.0537453Z - If the first line is a "*" then all users will use the new runners 2024-08-20T21:16:13.0538441Z - If the first line is a "!" then all users will use the old runners 2024-08-20T21:16:13.0539587Z - Each user is also a comma-separated list of features/experiments to enable 2024-08-20T21:16:13.0540709Z - A "#" prefix indicates the user is opted out of the new runners but is opting 2024-08-20T21:16:13.0541563Z into features/experiments. 2024-08-20T21:16:13.0541886Z 2024-08-20T21:16:13.0542165Z Example user list: 2024-08-20T21:16:13.0542410Z 2024-08-20T21:16:13.0542547Z @User1 2024-08-20T21:16:13.0542918Z @User2,amz2023 2024-08-20T21:16:13.0543410Z #@UserOptOutOfNewRunner,amz2023 2024-08-20T21:16:13.0543906Z """ 2024-08-20T21:16:13.0544103Z 2024-08-20T21:16:13.0544256Z import logging 2024-08-20T21:16:13.0544679Z import os 2024-08-20T21:16:13.0545031Z from argparse import ArgumentParser 2024-08-20T21:16:13.0545597Z from logging import LogRecord 2024-08-20T21:16:13.0546156Z from typing import Any, Iterable 2024-08-20T21:16:13.0546493Z 2024-08-20T21:16:13.0546649Z from github import Auth, Github 2024-08-20T21:16:13.0547178Z from github.Issue import Issue 2024-08-20T21:16:13.0547536Z 2024-08-20T21:16:13.0547541Z 2024-08-20T21:16:13.0547831Z WORKFLOW_LABEL_META = "" # use meta runners 2024-08-20T21:16:13.0548564Z WORKFLOW_LABEL_LF = "lf." # use runners from the linux foundation 2024-08-20T21:16:13.0549776Z WORKFLOW_LABEL_LF_CANARY = "lf.c." # use canary runners from the linux foundation 2024-08-20T21:16:13.0550800Z 2024-08-20T21:16:13.0551079Z RUNNER_AMI_LEGACY = "" 2024-08-20T21:16:13.0551522Z RUNNER_AMI_AMZ2023 = "amz2023" 2024-08-20T21:16:13.0551875Z 2024-08-20T21:16:13.0552088Z GITHUB_OUTPUT = os.getenv("GITHUB_OUTPUT", "") 2024-08-20T21:16:13.0552843Z GH_OUTPUT_KEY_AMI = "runner-ami" 2024-08-20T21:16:13.0553494Z GH_OUTPUT_KEY_LABEL_TYPE = "label-type" 2024-08-20T21:16:13.0553891Z 2024-08-20T21:16:13.0553895Z 2024-08-20T21:16:13.0554085Z class ColorFormatter(logging.Formatter): 2024-08-20T21:16:13.0554847Z """Color codes the log messages based on the log level""" 2024-08-20T21:16:13.0555385Z 2024-08-20T21:16:13.0555557Z COLORS = { 2024-08-20T21:16:13.0555968Z "WARNING": "\033[33m", # Yellow 2024-08-20T21:16:13.0556597Z "ERROR": "\033[31m", # Red 2024-08-20T21:16:13.0557124Z "CRITICAL": "\033[31m", # Red 2024-08-20T21:16:13.0557618Z "INFO": "\033[0m", # Reset 2024-08-20T21:16:13.0558208Z "DEBUG": "\033[0m", # Reset 2024-08-20T21:16:13.0558718Z } 2024-08-20T21:16:13.0558888Z 2024-08-20T21:16:13.0559141Z def format(self, record: LogRecord) -> str: 2024-08-20T21:16:13.0560082Z log_color = self.COLORS.get(record.levelname, "\033[0m") # Default to reset 2024-08-20T21:16:13.0561027Z record.msg = f"{log_color}{record.msg}\033[0m" 2024-08-20T21:16:13.0561639Z return super().format(record) 2024-08-20T21:16:13.0562049Z 2024-08-20T21:16:13.0562054Z 2024-08-20T21:16:13.0562292Z handler = logging.StreamHandler() 2024-08-20T21:16:13.0563113Z handler.setFormatter(ColorFormatter(fmt="%(levelname)-8s: %(message)s")) 2024-08-20T21:16:13.0563801Z 2024-08-20T21:16:13.0564084Z log = logging.getLogger(os.path.basename(__file__)) 2024-08-20T21:16:13.0564968Z log.addHandler(handler) 2024-08-20T21:16:13.0565428Z log.setLevel(logging.INFO) 2024-08-20T21:16:13.0565720Z 2024-08-20T21:16:13.0565725Z 2024-08-20T21:16:13.0566061Z def set_github_output(key: str, value: str) -> None: 2024-08-20T21:16:13.0566735Z """ 2024-08-20T21:16:13.0567247Z Defines outputs of the github action that invokes this script 2024-08-20T21:16:13.0567981Z """ 2024-08-20T21:16:13.0568360Z if not GITHUB_OUTPUT: 2024-08-20T21:16:13.0569710Z # See https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/ for deprecation notice 2024-08-20T21:16:13.0571181Z log.warning( 2024-08-20T21:16:13.0572164Z "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:13.0573393Z ) 2024-08-20T21:16:13.0596602Z print(f"::set-output name={key}::{value}") 2024-08-20T21:16:13.0597435Z return 2024-08-20T21:16:13.0597690Z 2024-08-20T21:16:13.0597871Z with open(GITHUB_OUTPUT, "a") as f: 2024-08-20T21:16:13.0598568Z log.info(f"Setting output: {key}='{value}'") 2024-08-20T21:16:13.0599303Z f.write(f"{key}={value}\n") 2024-08-20T21:16:13.0599660Z 2024-08-20T21:16:13.0599674Z 2024-08-20T21:16:13.0599894Z def parse_args() -> Any: 2024-08-20T21:16:13.0600443Z parser = ArgumentParser("Get dynamic rollout settings") 2024-08-20T21:16:13.0601612Z parser.add_argument("--github-token", type=str, required=True, help="GitHub token") 2024-08-20T21:16:13.0602541Z parser.add_argument( 2024-08-20T21:16:13.0602996Z "--github-issue-repo", 2024-08-20T21:16:13.0603600Z type=str, 2024-08-20T21:16:13.0603989Z required=False, 2024-08-20T21:16:13.0604445Z default="pytorch/test-infra", 2024-08-20T21:16:13.0605108Z help="GitHub repo to get the issue", 2024-08-20T21:16:13.0605670Z ) 2024-08-20T21:16:13.0605983Z parser.add_argument( 2024-08-20T21:16:13.0606556Z "--github-repo", 2024-08-20T21:16:13.0606979Z type=str, 2024-08-20T21:16:13.0607327Z required=True, 2024-08-20T21:16:13.0607904Z help="GitHub repo where CI is running", 2024-08-20T21:16:13.0608477Z ) 2024-08-20T21:16:13.0608996Z parser.add_argument( 2024-08-20T21:16:13.0609837Z "--github-issue", type=int, required=True, help="GitHub issue number" 2024-08-20T21:16:13.0610614Z ) 2024-08-20T21:16:13.0610944Z parser.add_argument( 2024-08-20T21:16:13.0611757Z "--github-actor", type=str, required=True, help="GitHub triggering_actor" 2024-08-20T21:16:13.0612575Z ) 2024-08-20T21:16:13.0612897Z parser.add_argument( 2024-08-20T21:16:13.0613717Z "--github-issue-owner", type=str, required=True, help="GitHub issue owner" 2024-08-20T21:16:13.0614562Z ) 2024-08-20T21:16:13.0614880Z parser.add_argument( 2024-08-20T21:16:13.0615748Z "--github-branch", type=str, required=True, help="Current GitHub branch or tag" 2024-08-20T21:16:13.0616635Z ) 2024-08-20T21:16:13.0616945Z parser.add_argument( 2024-08-20T21:16:13.0617530Z "--github-ref-type", 2024-08-20T21:16:13.0618012Z type=str, 2024-08-20T21:16:13.0618362Z required=True, 2024-08-20T21:16:13.0618930Z help="Current GitHub ref type, branch or tag", 2024-08-20T21:16:13.0619558Z ) 2024-08-20T21:16:13.0619727Z 2024-08-20T21:16:13.0619888Z return parser.parse_args() 2024-08-20T21:16:13.0620306Z 2024-08-20T21:16:13.0620311Z 2024-08-20T21:16:13.0620581Z def get_gh_client(github_token: str) -> Github: 2024-08-20T21:16:13.0621234Z auth = Auth.Token(github_token) 2024-08-20T21:16:13.0621735Z return Github(auth=auth) 2024-08-20T21:16:13.0622136Z 2024-08-20T21:16:13.0622141Z 2024-08-20T21:16:13.0622504Z def get_issue(gh: Github, repo: str, issue_num: int) -> Issue: 2024-08-20T21:16:13.0623240Z repo = gh.get_repo(repo) 2024-08-20T21:16:13.0623716Z return repo.get_issue(number=issue_num) 2024-08-20T21:16:13.0624447Z 2024-08-20T21:16:13.0624452Z 2024-08-20T21:16:13.0624614Z def get_potential_pr_author( 2024-08-20T21:16:13.0625265Z gh: Github, repo: str, username: str, ref_type: str, ref_name: str 2024-08-20T21:16:13.0626047Z ) -> str: 2024-08-20T21:16:13.0626635Z # If the trigger was a new tag added by a bot, this is a ciflow case 2024-08-20T21:16:13.0627600Z # Fetch the actual username from the original PR. The PR number is 2024-08-20T21:16:13.0628528Z # embedded in the tag name: ciflow// 2024-08-20T21:16:13.0629391Z if username == "pytorch-bot[bot]" and ref_type == "tag": 2024-08-20T21:16:13.0630099Z split_tag = ref_name.split("/") 2024-08-20T21:16:13.0631044Z if ( 2024-08-20T21:16:13.0631498Z len(split_tag) == 3 2024-08-20T21:16:13.0632011Z and split_tag[0] == "ciflow" 2024-08-20T21:16:13.0632615Z and split_tag[2].isnumeric() 2024-08-20T21:16:13.0633173Z ): 2024-08-20T21:16:13.0633542Z pr_number = split_tag[2] 2024-08-20T21:16:13.0634073Z try: 2024-08-20T21:16:13.0634530Z repository = gh.get_repo(repo) 2024-08-20T21:16:13.0635219Z pull = repository.get_pull(number=int(pr_number)) 2024-08-20T21:16:13.0635916Z except Exception as e: 2024-08-20T21:16:13.0636520Z raise Exception( # noqa: TRY002 2024-08-20T21:16:13.0637307Z f"issue with pull request {pr_number} from repo {repository}" 2024-08-20T21:16:13.0638063Z ) from e 2024-08-20T21:16:13.0638533Z return pull.user.login 2024-08-20T21:16:13.0639181Z # In all other cases, return the original input username 2024-08-20T21:16:13.0639870Z return username 2024-08-20T21:16:13.0640166Z 2024-08-20T21:16:13.0640171Z 2024-08-20T21:16:13.0640438Z def is_exception_branch(branch: str) -> bool: 2024-08-20T21:16:13.0641284Z return branch.split("/")[0] in {"main", "nightly", "release", "landchecks"} 2024-08-20T21:16:13.0641968Z 2024-08-20T21:16:13.0641973Z 2024-08-20T21:16:13.0642433Z def get_workflow_type(issue: Issue, workflow_requestors: Iterable[str]) -> str: 2024-08-20T21:16:13.0643354Z try: 2024-08-20T21:16:13.0643874Z first_comment = issue.get_comments()[0].body.strip("\n\t ") 2024-08-20T21:16:13.0644457Z 2024-08-20T21:16:13.0644781Z if first_comment[0] == "!": 2024-08-20T21:16:13.0645639Z log.info("LF Workflows are disabled for everyone. Using meta runners.") 2024-08-20T21:16:13.0646460Z return WORKFLOW_LABEL_META 2024-08-20T21:16:13.0647015Z elif first_comment[0] == "*": 2024-08-20T21:16:13.0647840Z log.info("LF Workflows are enabled for everyone. Using LF runners.") 2024-08-20T21:16:13.0648635Z return WORKFLOW_LABEL_LF 2024-08-20T21:16:13.0649145Z else: 2024-08-20T21:16:13.0649605Z all_opted_in_users = { 2024-08-20T21:16:13.0650135Z usr_raw.strip("\n\t@ ").split(",")[0] 2024-08-20T21:16:13.0650802Z for usr_raw in first_comment.split() 2024-08-20T21:16:13.0651466Z } 2024-08-20T21:16:13.0651871Z opted_in_requestors = { 2024-08-20T21:16:13.0652629Z usr for usr in workflow_requestors if usr in all_opted_in_users 2024-08-20T21:16:13.0653373Z } 2024-08-20T21:16:13.0653717Z if opted_in_requestors: 2024-08-20T21:16:13.0654307Z log.info( 2024-08-20T21:16:13.0655139Z f"LF Workflows are enabled for {', '.join(opted_in_requestors)}. Using LF runners." 2024-08-20T21:16:13.0656028Z ) 2024-08-20T21:16:13.0656467Z return WORKFLOW_LABEL_LF 2024-08-20T21:16:13.0657002Z else: 2024-08-20T21:16:13.0657393Z log.info( 2024-08-20T21:16:13.0658240Z f"LF Workflows are disabled for {', '.join(workflow_requestors)}. Using meta runners." 2024-08-20T21:16:13.0659145Z ) 2024-08-20T21:16:13.0659567Z return WORKFLOW_LABEL_META 2024-08-20T21:16:13.0660121Z 2024-08-20T21:16:13.0660355Z except Exception as e: 2024-08-20T21:16:13.0660815Z log.error( 2024-08-20T21:16:13.0661558Z f"Failed to get determine workflow type. Falling back to meta runners. Exception: {e}" 2024-08-20T21:16:13.0662512Z ) 2024-08-20T21:16:13.0662933Z return WORKFLOW_LABEL_META 2024-08-20T21:16:13.0663280Z 2024-08-20T21:16:13.0663285Z 2024-08-20T21:16:13.0663460Z def get_optin_feature( 2024-08-20T21:16:13.0664163Z issue: Issue, workflow_requestors: Iterable[str], feature: str, fallback: str 2024-08-20T21:16:13.0665048Z ) -> str: 2024-08-20T21:16:13.0665385Z try: 2024-08-20T21:16:13.0666036Z first_comment = issue.get_comments()[0].body.strip("\n\t ") 2024-08-20T21:16:13.0666997Z userlist = {u.lstrip("#").strip("\n\t@ ") for u in first_comment.split()} 2024-08-20T21:16:13.0667809Z all_opted_in_users = set() 2024-08-20T21:16:13.0668357Z for user in userlist: 2024-08-20T21:16:13.0668886Z for i in user.split(","): 2024-08-20T21:16:13.0669419Z if i == feature: 2024-08-20T21:16:13.0670047Z all_opted_in_users.add(user.split(",")[0]) 2024-08-20T21:16:13.0670975Z opted_in_requestors = { 2024-08-20T21:16:13.0671659Z usr for usr in workflow_requestors if usr in all_opted_in_users 2024-08-20T21:16:13.0672468Z } 2024-08-20T21:16:13.0672688Z 2024-08-20T21:16:13.0672838Z if opted_in_requestors: 2024-08-20T21:16:13.0673320Z log.info( 2024-08-20T21:16:13.0674251Z f"Feature {feature} is enabled for {', '.join(opted_in_requestors)}. Using feature {feature}." 2024-08-20T21:16:13.0675157Z ) 2024-08-20T21:16:13.0675522Z return feature 2024-08-20T21:16:13.0676032Z else: 2024-08-20T21:16:13.0676356Z log.info( 2024-08-20T21:16:13.0677231Z f"Feature {feature} is disabled for {', '.join(workflow_requestors)}. Using fallback \"{fallback}\"." 2024-08-20T21:16:13.0678339Z ) 2024-08-20T21:16:13.0678669Z return fallback 2024-08-20T21:16:13.0678992Z 2024-08-20T21:16:13.0679158Z except Exception as e: 2024-08-20T21:16:13.0679671Z log.error( 2024-08-20T21:16:13.0680762Z f'Failed to determine if user has opted-in to feature {feature}. Using fallback "{fallback}". Exception: {e}' 2024-08-20T21:16:13.0681895Z ) 2024-08-20T21:16:13.0682326Z return fallback 2024-08-20T21:16:13.0682590Z 2024-08-20T21:16:13.0682594Z 2024-08-20T21:16:13.0682768Z def main() -> None: 2024-08-20T21:16:13.0683195Z args = parse_args() 2024-08-20T21:16:13.0683454Z 2024-08-20T21:16:13.0683969Z if args.github_ref_type == "branch" and is_exception_branch(args.github_branch): 2024-08-20T21:16:13.0685103Z log.info(f"Exception branch: '{args.github_branch}', using meta runners") 2024-08-20T21:16:13.0686007Z label_type = WORKFLOW_LABEL_META 2024-08-20T21:16:13.0686699Z runner_ami = RUNNER_AMI_LEGACY 2024-08-20T21:16:13.0687224Z else: 2024-08-20T21:16:13.0687562Z try: 2024-08-20T21:16:13.0688053Z gh = get_gh_client(args.github_token) 2024-08-20T21:16:13.0688981Z # The default issue we use - https://github.com/pytorch/test-infra/issues/5132 2024-08-20T21:16:13.0690043Z issue = get_issue(gh, args.github_issue_repo, args.github_issue) 2024-08-20T21:16:13.0690918Z username = get_potential_pr_author( 2024-08-20T21:16:13.0691507Z gh, 2024-08-20T21:16:13.0691881Z args.github_repo, 2024-08-20T21:16:13.0692450Z args.github_actor, 2024-08-20T21:16:13.0692992Z args.github_ref_type, 2024-08-20T21:16:13.0693512Z args.github_branch, 2024-08-20T21:16:13.0694097Z ) 2024-08-20T21:16:13.0694496Z label_type = get_workflow_type( 2024-08-20T21:16:13.0695016Z issue, 2024-08-20T21:16:13.0695500Z ( 2024-08-20T21:16:13.0696090Z args.github_issue_owner, 2024-08-20T21:16:13.0696617Z username, 2024-08-20T21:16:13.0697152Z ), 2024-08-20T21:16:13.0697488Z ) 2024-08-20T21:16:13.0697880Z runner_ami = get_optin_feature( 2024-08-20T21:16:13.0698532Z issue=issue, 2024-08-20T21:16:13.0698983Z workflow_requestors=( 2024-08-20T21:16:13.0699578Z args.github_issue_owner, 2024-08-20T21:16:13.0700209Z username, 2024-08-20T21:16:13.0700625Z ), 2024-08-20T21:16:13.0701058Z feature=RUNNER_AMI_AMZ2023, 2024-08-20T21:16:13.0701710Z fallback=RUNNER_AMI_LEGACY, 2024-08-20T21:16:13.0702216Z ) 2024-08-20T21:16:13.0702609Z except Exception as e: 2024-08-20T21:16:13.0703162Z log.error( 2024-08-20T21:16:13.0703758Z f"Failed to get issue. Falling back to meta runners. Exception: {e}" 2024-08-20T21:16:13.0704569Z ) 2024-08-20T21:16:13.0705032Z label_type = WORKFLOW_LABEL_META 2024-08-20T21:16:13.0705677Z runner_ami = RUNNER_AMI_LEGACY 2024-08-20T21:16:13.0706067Z 2024-08-20T21:16:13.0706241Z # For Canary builds use canary runners 2024-08-20T21:16:13.0707256Z if args.github_repo == "pytorch/pytorch-canary" and label_type == WORKFLOW_LABEL_LF: 2024-08-20T21:16:13.0708234Z label_type = WORKFLOW_LABEL_LF_CANARY 2024-08-20T21:16:13.0708642Z 2024-08-20T21:16:13.0708897Z set_github_output(GH_OUTPUT_KEY_LABEL_TYPE, label_type) 2024-08-20T21:16:13.0709723Z set_github_output(GH_OUTPUT_KEY_AMI, runner_ami) 2024-08-20T21:16:13.0710186Z 2024-08-20T21:16:13.0710190Z 2024-08-20T21:16:13.0710644Z if __name__ == "__main__": 2024-08-20T21:16:13.0711066Z main() 2024-08-20T21:16:13.0892856Z ##[group]Run python3 -m pip install urllib3==1.26.18 PyGithub==2.3.0 2024-08-20T21:16:13.0893884Z python3 -m pip install urllib3==1.26.18 PyGithub==2.3.0 2024-08-20T21:16:13.0954584Z shell: /usr/bin/bash -e {0} 2024-08-20T21:16:13.0955077Z env: 2024-08-20T21:16:13.0955750Z GITHUB_TOKEN: *** 2024-08-20T21:16:13.0956182Z ISSUE_NUMBER: 5132 2024-08-20T21:16:13.0956640Z TRIGGERING_ACTOR: pytorchmergebot 2024-08-20T21:16:13.0957203Z ISSUE_OWNER: XuehaiPan 2024-08-20T21:16:13.0957628Z ##[endgroup] 2024-08-20T21:16:13.5154405Z Defaulting to user installation because normal site-packages is not writeable 2024-08-20T21:16:13.8884120Z Collecting urllib3==1.26.18 2024-08-20T21:16:13.9241768Z Downloading urllib3-1.26.18-py2.py3-none-any.whl (143 kB) 2024-08-20T21:16:13.9452561Z ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 143.8/143.8 KB 7.2 MB/s eta 0:00:00 2024-08-20T21:16:13.9764797Z Collecting PyGithub==2.3.0 2024-08-20T21:16:13.9795528Z Downloading PyGithub-2.3.0-py3-none-any.whl (354 kB) 2024-08-20T21:16:13.9875880Z ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 354.4/354.4 KB 57.3 MB/s eta 0:00:00 2024-08-20T21:16:14.0359777Z Collecting pyjwt[crypto]>=2.4.0 2024-08-20T21:16:14.0389939Z Downloading PyJWT-2.9.0-py3-none-any.whl (22 kB) 2024-08-20T21:16:14.0664677Z Collecting typing-extensions>=4.0.0 2024-08-20T21:16:14.0694095Z Downloading typing_extensions-4.12.2-py3-none-any.whl (37 kB) 2024-08-20T21:16:14.0919039Z Collecting Deprecated 2024-08-20T21:16:14.0949393Z Downloading Deprecated-1.2.14-py2.py3-none-any.whl (9.6 kB) 2024-08-20T21:16:14.0978037Z 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:14.1296662Z Collecting pynacl>=1.4.0 2024-08-20T21:16:14.1324883Z 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:14.1443241Z ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 856.7/856.7 KB 86.8 MB/s eta 0:00:00 2024-08-20T21:16:14.1569511Z 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:14.3722330Z Collecting cffi>=1.4.1 2024-08-20T21:16:14.3758281Z Downloading cffi-1.17.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (445 kB) 2024-08-20T21:16:14.3828913Z ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 445.9/445.9 KB 87.3 MB/s eta 0:00:00 2024-08-20T21:16:14.5404921Z Collecting wrapt<2,>=1.10 2024-08-20T21:16:14.5445119Z 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:14.5482044Z ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 80.3/80.3 KB 37.0 MB/s eta 0:00:00 2024-08-20T21:16:14.5628950Z Collecting pycparser 2024-08-20T21:16:14.5657490Z Downloading pycparser-2.22-py3-none-any.whl (117 kB) 2024-08-20T21:16:14.5696262Z ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 117.6/117.6 KB 53.9 MB/s eta 0:00:00 2024-08-20T21:16:14.7445099Z Installing collected packages: wrapt, urllib3, typing-extensions, pyjwt, pycparser, Deprecated, cffi, pynacl, PyGithub 2024-08-20T21:16:15.2073126Z 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:15.2784949Z ##[group]Run curr_branch="gh/XuehaiPan/146/head" 2024-08-20T21:16:15.2785609Z curr_branch="gh/XuehaiPan/146/head" 2024-08-20T21:16:15.2786209Z curr_ref_type="branch" 2024-08-20T21:16:15.2786694Z echo "Current branch is '$curr_branch'" 2024-08-20T21:16:15.2787105Z  2024-08-20T21:16:15.2787534Z python3 runner_determinator.py \ 2024-08-20T21:16:15.2788007Z  --github-token "$GITHUB_TOKEN" \ 2024-08-20T21:16:15.2788442Z  --github-issue "$ISSUE_NUMBER" \ 2024-08-20T21:16:15.2788993Z  --github-branch "$curr_branch" \ 2024-08-20T21:16:15.2789464Z  --github-actor "$TRIGGERING_ACTOR" \ 2024-08-20T21:16:15.2789925Z  --github-issue-owner "$ISSUE_OWNER" \ 2024-08-20T21:16:15.2790822Z  --github-ref-type "$curr_ref_type" \ 2024-08-20T21:16:15.2791383Z  --github-repo "$GITHUB_REPOSITORY" 2024-08-20T21:16:15.2857377Z shell: /usr/bin/bash -e {0} 2024-08-20T21:16:15.2857867Z env: 2024-08-20T21:16:15.2858619Z GITHUB_TOKEN: *** 2024-08-20T21:16:15.2859024Z ISSUE_NUMBER: 5132 2024-08-20T21:16:15.2859380Z TRIGGERING_ACTOR: pytorchmergebot 2024-08-20T21:16:15.2859905Z ISSUE_OWNER: XuehaiPan 2024-08-20T21:16:15.2860284Z ##[endgroup] 2024-08-20T21:16:15.2942691Z Current branch is 'gh/XuehaiPan/146/head' 2024-08-20T21:16:16.3749018Z INFO : LF Workflows are disabled for XuehaiPan, pytorchmergebot. Using meta runners. 2024-08-20T21:16:16.7348486Z INFO : Feature amz2023 is disabled for XuehaiPan, pytorchmergebot. Using fallback "". 2024-08-20T21:16:16.7349790Z INFO : Setting output: label-type='' 2024-08-20T21:16:16.7350942Z INFO : Setting output: runner-ami='' 2024-08-20T21:16:16.7732096Z Evaluate and set job outputs 2024-08-20T21:16:16.7743262Z Cleaning up orphan processes