2024-08-20T21:16:14.5485970Z Current runner version: '2.319.1' 2024-08-20T21:16:14.5511244Z ##[group]Operating System 2024-08-20T21:16:14.5511894Z Ubuntu 2024-08-20T21:16:14.5512328Z 22.04.4 2024-08-20T21:16:14.5512643Z LTS 2024-08-20T21:16:14.5512989Z ##[endgroup] 2024-08-20T21:16:14.5513393Z ##[group]Runner Image 2024-08-20T21:16:14.5513818Z Image: ubuntu-22.04 2024-08-20T21:16:14.5514241Z Version: 20240811.1.0 2024-08-20T21:16:14.5515312Z Included Software: https://github.com/actions/runner-images/blob/ubuntu22/20240811.1/images/ubuntu/Ubuntu2204-Readme.md 2024-08-20T21:16:14.5516723Z Image Release: https://github.com/actions/runner-images/releases/tag/ubuntu22%2F20240811.1 2024-08-20T21:16:14.5517598Z ##[endgroup] 2024-08-20T21:16:14.5518056Z ##[group]Runner Image Provisioner 2024-08-20T21:16:14.5518516Z 2.0.374.1 2024-08-20T21:16:14.5518850Z ##[endgroup] 2024-08-20T21:16:14.5535263Z ##[group]GITHUB_TOKEN Permissions 2024-08-20T21:16:14.5537036Z Actions: read 2024-08-20T21:16:14.5537655Z Attestations: read 2024-08-20T21:16:14.5538251Z Checks: read 2024-08-20T21:16:14.5538628Z Contents: read 2024-08-20T21:16:14.5538969Z Deployments: read 2024-08-20T21:16:14.5539446Z Discussions: read 2024-08-20T21:16:14.5539823Z Issues: read 2024-08-20T21:16:14.5540143Z Metadata: read 2024-08-20T21:16:14.5540618Z Packages: read 2024-08-20T21:16:14.5540989Z Pages: read 2024-08-20T21:16:14.5541314Z PullRequests: read 2024-08-20T21:16:14.5541816Z RepositoryProjects: read 2024-08-20T21:16:14.5542268Z SecurityEvents: read 2024-08-20T21:16:14.5542647Z Statuses: read 2024-08-20T21:16:14.5543101Z ##[endgroup] 2024-08-20T21:16:14.5546233Z Secret source: Actions 2024-08-20T21:16:14.5546817Z Prepare workflow directory 2024-08-20T21:16:14.6448522Z Prepare all required actions 2024-08-20T21:16:14.6612987Z Uses: pytorch/pytorch/.github/workflows/_runner-determinator.yml@refs/tags/ciflow/trunk/133712 (40ec5f6ddd9787aca0449b24128343ff4c4a88b3) 2024-08-20T21:16:14.6618244Z ##[group] Inputs 2024-08-20T21:16:14.6618948Z triggering_actor: pytorch-bot[bot] 2024-08-20T21:16:14.6619485Z issue_owner: 2024-08-20T21:16:14.6619916Z curr_branch: ciflow/trunk/133712 2024-08-20T21:16:14.6620488Z curr_ref_type: tag 2024-08-20T21:16:14.6620862Z issue_number: 5132 2024-08-20T21:16:14.6621300Z ##[endgroup] 2024-08-20T21:16:14.6622193Z Complete job name: get-label-type / runner-determinator 2024-08-20T21:16:14.7512061Z ##[group]Run cat < runner_determinator.py 2024-08-20T21:16:14.7513626Z cat < runner_determinator.py 2024-08-20T21:16:14.7514249Z # flake8: noqa: G004 2024-08-20T21:16:14.7514688Z  2024-08-20T21:16:14.7515130Z """ 2024-08-20T21:16:14.7515829Z This runner determinator is used to determine which set of runners to run a 2024-08-20T21:16:14.7516902Z GitHub job on. It uses the first comment of a GitHub issue (by default 2024-08-20T21:16:14.7518126Z https://github.com/pytorch/test-infra/issues/5132) as a user list to determine 2024-08-20T21:16:14.7519329Z which users will get their jobs to run on experimental runners. This user list 2024-08-20T21:16:14.7520591Z is also a comma separated list of additional features or experiments which the 2024-08-20T21:16:14.7521435Z user could be opted in to. 2024-08-20T21:16:14.7521925Z  2024-08-20T21:16:14.7522481Z The user list has the following rules: 2024-08-20T21:16:14.7523043Z  2024-08-20T21:16:14.7523529Z - Users are GitHub usernames with the @ prefix 2024-08-20T21:16:14.7524453Z - If the first line is a "*" then all users will use the new runners 2024-08-20T21:16:14.7525393Z - If the first line is a "!" then all users will use the old runners 2024-08-20T21:16:14.7526456Z - Each user is also a comma-separated list of features/experiments to enable 2024-08-20T21:16:14.7527681Z - A "#" prefix indicates the user is opted out of the new runners but is opting 2024-08-20T21:16:14.7528500Z  into features/experiments. 2024-08-20T21:16:14.7529430Z  2024-08-20T21:16:14.7530182Z Example user list: 2024-08-20T21:16:14.7530651Z  2024-08-20T21:16:14.7530999Z  @User1 2024-08-20T21:16:14.7531493Z  @User2,amz2023 2024-08-20T21:16:14.7532007Z  #@UserOptOutOfNewRunner,amz2023 2024-08-20T21:16:14.7532577Z """ 2024-08-20T21:16:14.7532991Z  2024-08-20T21:16:14.7533325Z import logging 2024-08-20T21:16:14.7533746Z import os 2024-08-20T21:16:14.7534287Z from argparse import ArgumentParser 2024-08-20T21:16:14.7534880Z from logging import LogRecord 2024-08-20T21:16:14.7535447Z from typing import Any, Iterable 2024-08-20T21:16:14.7536052Z  2024-08-20T21:16:14.7536405Z from github import Auth, Github 2024-08-20T21:16:14.7536977Z from github.Issue import Issue 2024-08-20T21:16:14.7537566Z  2024-08-20T21:16:14.7537859Z  2024-08-20T21:16:14.7538300Z WORKFLOW_LABEL_META = "" # use meta runners 2024-08-20T21:16:14.7539203Z WORKFLOW_LABEL_LF = "lf." # use runners from the linux foundation 2024-08-20T21:16:14.7540255Z WORKFLOW_LABEL_LF_CANARY = "lf.c." # use canary runners from the linux foundation 2024-08-20T21:16:14.7541037Z  2024-08-20T21:16:14.7541501Z RUNNER_AMI_LEGACY = "" 2024-08-20T21:16:14.7542006Z RUNNER_AMI_AMZ2023 = "amz2023" 2024-08-20T21:16:14.7542465Z  2024-08-20T21:16:14.7542999Z GITHUB_OUTPUT = os.getenv("GITHUB_OUTPUT", "") 2024-08-20T21:16:14.7543652Z GH_OUTPUT_KEY_AMI = "runner-ami" 2024-08-20T21:16:14.7544222Z GH_OUTPUT_KEY_LABEL_TYPE = "label-type" 2024-08-20T21:16:14.7544857Z  2024-08-20T21:16:14.7545184Z  2024-08-20T21:16:14.7545601Z class ColorFormatter(logging.Formatter): 2024-08-20T21:16:14.7546431Z  """Color codes the log messages based on the log level""" 2024-08-20T21:16:14.7547122Z  2024-08-20T21:16:14.7547454Z  COLORS = { 2024-08-20T21:16:14.7548016Z  "WARNING": "\033[33m", # Yellow 2024-08-20T21:16:14.7548614Z  "ERROR": "\033[31m", # Red 2024-08-20T21:16:14.7549165Z  "CRITICAL": "\033[31m", # Red 2024-08-20T21:16:14.7549996Z  "INFO": "\033[0m", # Reset 2024-08-20T21:16:14.7550617Z  "DEBUG": "\033[0m", # Reset 2024-08-20T21:16:14.7551111Z  } 2024-08-20T21:16:14.7551542Z  2024-08-20T21:16:14.7552011Z  def format(self, record: LogRecord) -> str: 2024-08-20T21:16:14.7553007Z  log_color = self.COLORS.get(record.levelname, "\033[0m") # Default to reset 2024-08-20T21:16:14.7553933Z  record.msg = f"{log_color}{record.msg}\033[0m" 2024-08-20T21:16:14.7554630Z  return super().format(record) 2024-08-20T21:16:14.7555312Z  2024-08-20T21:16:14.7555670Z  2024-08-20T21:16:14.7556043Z handler = logging.StreamHandler() 2024-08-20T21:16:14.7556964Z handler.setFormatter(ColorFormatter(fmt="%(levelname)-8s: %(message)s")) 2024-08-20T21:16:14.7557774Z  2024-08-20T21:16:14.7558235Z log = logging.getLogger(os.path.basename(__file__)) 2024-08-20T21:16:14.7558970Z log.addHandler(handler) 2024-08-20T21:16:14.7559500Z log.setLevel(logging.INFO) 2024-08-20T21:16:14.7559953Z  2024-08-20T21:16:14.7560359Z  2024-08-20T21:16:14.7560867Z def set_github_output(key: str, value: str) -> None: 2024-08-20T21:16:14.7561471Z  """ 2024-08-20T21:16:14.7562151Z  Defines outputs of the github action that invokes this script 2024-08-20T21:16:14.7562889Z  """ 2024-08-20T21:16:14.7563251Z  if not GITHUB_OUTPUT: 2024-08-20T21:16:14.7564666Z  # See https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/ for deprecation notice 2024-08-20T21:16:14.7566237Z  log.warning( 2024-08-20T21:16:14.7567315Z  "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:14.7568479Z  ) 2024-08-20T21:16:14.7568980Z  print(f"::set-output name={key}::{value}") 2024-08-20T21:16:14.7569586Z  return 2024-08-20T21:16:14.7570300Z  2024-08-20T21:16:14.7570742Z  with open(GITHUB_OUTPUT, "a") as f: 2024-08-20T21:16:14.7571466Z  log.info(f"Setting output: {key}='{value}'") 2024-08-20T21:16:14.7572161Z  f.write(f"{key}={value}\n") 2024-08-20T21:16:14.7572687Z  2024-08-20T21:16:14.7573037Z  2024-08-20T21:16:14.7573418Z def parse_args() -> Any: 2024-08-20T21:16:14.7574097Z  parser = ArgumentParser("Get dynamic rollout settings") 2024-08-20T21:16:14.7575171Z  parser.add_argument("--github-token", type=str, required=True, help="GitHub token") 2024-08-20T21:16:14.7576078Z  parser.add_argument( 2024-08-20T21:16:14.7576600Z  "--github-issue-repo", 2024-08-20T21:16:14.7577143Z  type=str, 2024-08-20T21:16:14.7577647Z  required=False, 2024-08-20T21:16:14.7578146Z  default="pytorch/test-infra", 2024-08-20T21:16:14.7578811Z  help="GitHub repo to get the issue", 2024-08-20T21:16:14.7579447Z  ) 2024-08-20T21:16:14.7579796Z  parser.add_argument( 2024-08-20T21:16:14.7580305Z  "--github-repo", 2024-08-20T21:16:14.7580849Z  type=str, 2024-08-20T21:16:14.7581272Z  required=True, 2024-08-20T21:16:14.7581828Z  help="GitHub repo where CI is running", 2024-08-20T21:16:14.7582465Z  ) 2024-08-20T21:16:14.7582831Z  parser.add_argument( 2024-08-20T21:16:14.7583581Z  "--github-issue", type=int, required=True, help="GitHub issue number" 2024-08-20T21:16:14.7584400Z  ) 2024-08-20T21:16:14.7584782Z  parser.add_argument( 2024-08-20T21:16:14.7585714Z  "--github-actor", type=str, required=True, help="GitHub triggering_actor" 2024-08-20T21:16:14.7586610Z  ) 2024-08-20T21:16:14.7586968Z  parser.add_argument( 2024-08-20T21:16:14.7587746Z  "--github-issue-owner", type=str, required=True, help="GitHub issue owner" 2024-08-20T21:16:14.7588633Z  ) 2024-08-20T21:16:14.7588981Z  parser.add_argument( 2024-08-20T21:16:14.7589780Z  "--github-branch", type=str, required=True, help="Current GitHub branch or tag" 2024-08-20T21:16:14.7590679Z  ) 2024-08-20T21:16:14.7591061Z  parser.add_argument( 2024-08-20T21:16:14.7591526Z  "--github-ref-type", 2024-08-20T21:16:14.7592113Z  type=str, 2024-08-20T21:16:14.7592568Z  required=True, 2024-08-20T21:16:14.7593131Z  help="Current GitHub ref type, branch or tag", 2024-08-20T21:16:14.7593836Z  ) 2024-08-20T21:16:14.7594188Z  2024-08-20T21:16:14.7594559Z  return parser.parse_args() 2024-08-20T21:16:14.7595128Z  2024-08-20T21:16:14.7595461Z  2024-08-20T21:16:14.7595927Z def get_gh_client(github_token: str) -> Github: 2024-08-20T21:16:14.7596669Z  auth = Auth.Token(github_token) 2024-08-20T21:16:14.7597243Z  return Github(auth=auth) 2024-08-20T21:16:14.7597715Z  2024-08-20T21:16:14.7598122Z  2024-08-20T21:16:14.7598683Z def get_issue(gh: Github, repo: str, issue_num: int) -> Issue: 2024-08-20T21:16:14.7599410Z  repo = gh.get_repo(repo) 2024-08-20T21:16:14.7600096Z  return repo.get_issue(number=issue_num) 2024-08-20T21:16:14.7600857Z  2024-08-20T21:16:14.7601157Z  2024-08-20T21:16:14.7601590Z def get_potential_pr_author( 2024-08-20T21:16:14.7602351Z  gh: Github, repo: str, username: str, ref_type: str, ref_name: str 2024-08-20T21:16:14.7603052Z ) -> str: 2024-08-20T21:16:14.7603760Z  # If the trigger was a new tag added by a bot, this is a ciflow case 2024-08-20T21:16:14.7604784Z  # Fetch the actual username from the original PR. The PR number is 2024-08-20T21:16:14.7605748Z  # embedded in the tag name: ciflow// 2024-08-20T21:16:14.7606644Z  if username == "pytorch-bot[bot]" and ref_type == "tag": 2024-08-20T21:16:14.7607408Z  split_tag = ref_name.split("/") 2024-08-20T21:16:14.7607980Z  if ( 2024-08-20T21:16:14.7608464Z  len(split_tag) == 3 2024-08-20T21:16:14.7609049Z  and split_tag[0] == "ciflow" 2024-08-20T21:16:14.7609673Z  and split_tag[2].isnumeric() 2024-08-20T21:16:14.7610527Z  ): 2024-08-20T21:16:14.7610992Z  pr_number = split_tag[2] 2024-08-20T21:16:14.7611544Z  try: 2024-08-20T21:16:14.7612113Z  repository = gh.get_repo(repo) 2024-08-20T21:16:14.7612862Z  pull = repository.get_pull(number=int(pr_number)) 2024-08-20T21:16:14.7613594Z  except Exception as e: 2024-08-20T21:16:14.7614310Z  raise Exception( # noqa: TRY002 2024-08-20T21:16:14.7615102Z  f"issue with pull request {pr_number} from repo {repository}" 2024-08-20T21:16:14.7615873Z  ) from e 2024-08-20T21:16:14.7616471Z  return pull.user.login 2024-08-20T21:16:14.7617155Z  # In all other cases, return the original input username 2024-08-20T21:16:14.7617868Z  return username 2024-08-20T21:16:14.7618374Z  2024-08-20T21:16:14.7618672Z  2024-08-20T21:16:14.7619140Z def is_exception_branch(branch: str) -> bool: 2024-08-20T21:16:14.7620087Z  return branch.split("/")[0] in {"main", "nightly", "release", "landchecks"} 2024-08-20T21:16:14.7620988Z  2024-08-20T21:16:14.7621377Z  2024-08-20T21:16:14.7622114Z def get_workflow_type(issue: Issue, workflow_requestors: Iterable[str]) -> str: 2024-08-20T21:16:14.7622924Z  try: 2024-08-20T21:16:14.7623509Z  first_comment = issue.get_comments()[0].body.strip("\n\t ") 2024-08-20T21:16:14.7624267Z  2024-08-20T21:16:14.7624668Z  if first_comment[0] == "!": 2024-08-20T21:16:14.7625464Z  log.info("LF Workflows are disabled for everyone. Using meta runners.") 2024-08-20T21:16:14.7626394Z  return WORKFLOW_LABEL_META 2024-08-20T21:16:14.7627019Z  elif first_comment[0] == "*": 2024-08-20T21:16:14.7627814Z  log.info("LF Workflows are enabled for everyone. Using LF runners.") 2024-08-20T21:16:14.7628726Z  return WORKFLOW_LABEL_LF 2024-08-20T21:16:14.7629299Z  else: 2024-08-20T21:16:14.7629722Z  all_opted_in_users = { 2024-08-20T21:16:14.7630431Z  usr_raw.strip("\n\t@ ").split(",")[0] 2024-08-20T21:16:14.7631138Z  for usr_raw in first_comment.split() 2024-08-20T21:16:14.7631797Z  } 2024-08-20T21:16:14.7632232Z  opted_in_requestors = { 2024-08-20T21:16:14.7632998Z  usr for usr in workflow_requestors if usr in all_opted_in_users 2024-08-20T21:16:14.7633801Z  } 2024-08-20T21:16:14.7634238Z  if opted_in_requestors: 2024-08-20T21:16:14.7634779Z  log.info( 2024-08-20T21:16:14.7635873Z  f"LF Workflows are enabled for {', '.join(opted_in_requestors)}. Using LF runners." 2024-08-20T21:16:14.7636705Z  ) 2024-08-20T21:16:14.7637203Z  return WORKFLOW_LABEL_LF 2024-08-20T21:16:14.7637846Z  else: 2024-08-20T21:16:14.7638283Z  log.info( 2024-08-20T21:16:14.7639129Z  f"LF Workflows are disabled for {', '.join(workflow_requestors)}. Using meta runners." 2024-08-20T21:16:14.7640047Z  ) 2024-08-20T21:16:14.7640547Z  return WORKFLOW_LABEL_META 2024-08-20T21:16:14.7641119Z  2024-08-20T21:16:14.7641540Z  except Exception as e: 2024-08-20T21:16:14.7642048Z  log.error( 2024-08-20T21:16:14.7642898Z  f"Failed to get determine workflow type. Falling back to meta runners. Exception: {e}" 2024-08-20T21:16:14.7643813Z  ) 2024-08-20T21:16:14.7644266Z  return WORKFLOW_LABEL_META 2024-08-20T21:16:14.7644808Z  2024-08-20T21:16:14.7645168Z  2024-08-20T21:16:14.7645527Z def get_optin_feature( 2024-08-20T21:16:14.7646327Z  issue: Issue, workflow_requestors: Iterable[str], feature: str, fallback: str 2024-08-20T21:16:14.7647206Z ) -> str: 2024-08-20T21:16:14.7647556Z  try: 2024-08-20T21:16:14.7648156Z  first_comment = issue.get_comments()[0].body.strip("\n\t ") 2024-08-20T21:16:14.7649191Z  userlist = {u.lstrip("#").strip("\n\t@ ") for u in first_comment.split()} 2024-08-20T21:16:14.7650318Z  all_opted_in_users = set() 2024-08-20T21:16:14.7650925Z  for user in userlist: 2024-08-20T21:16:14.7651584Z  for i in user.split(","): 2024-08-20T21:16:14.7652166Z  if i == feature: 2024-08-20T21:16:14.7652814Z  all_opted_in_users.add(user.split(",")[0]) 2024-08-20T21:16:14.7653555Z  opted_in_requestors = { 2024-08-20T21:16:14.7654327Z  usr for usr in workflow_requestors if usr in all_opted_in_users 2024-08-20T21:16:14.7655044Z  } 2024-08-20T21:16:14.7655658Z  2024-08-20T21:16:14.7656056Z  if opted_in_requestors: 2024-08-20T21:16:14.7656557Z  log.info( 2024-08-20T21:16:14.7657516Z  f"Feature {feature} is enabled for {', '.join(opted_in_requestors)}. Using feature {feature}." 2024-08-20T21:16:14.7658426Z  ) 2024-08-20T21:16:14.7658819Z  return feature 2024-08-20T21:16:14.7659494Z  else: 2024-08-20T21:16:14.7659907Z  log.info( 2024-08-20T21:16:14.7660788Z  f"Feature {feature} is disabled for {', '.join(workflow_requestors)}. Using fallback \"{fallback}\"." 2024-08-20T21:16:14.7661823Z  ) 2024-08-20T21:16:14.7662245Z  return fallback 2024-08-20T21:16:14.7662695Z  2024-08-20T21:16:14.7663140Z  except Exception as e: 2024-08-20T21:16:14.7663641Z  log.error( 2024-08-20T21:16:14.7664592Z  f'Failed to determine if user has opted-in to feature {feature}. Using fallback "{fallback}". Exception: {e}' 2024-08-20T21:16:14.7665699Z  ) 2024-08-20T21:16:14.7666105Z  return fallback 2024-08-20T21:16:14.7666680Z  2024-08-20T21:16:14.7667069Z  2024-08-20T21:16:14.7667424Z def main() -> None: 2024-08-20T21:16:14.7667904Z  args = parse_args() 2024-08-20T21:16:14.7668398Z  2024-08-20T21:16:14.7669070Z  if args.github_ref_type == "branch" and is_exception_branch(args.github_branch): 2024-08-20T21:16:14.7670232Z  log.info(f"Exception branch: '{args.github_branch}', using meta runners") 2024-08-20T21:16:14.7671322Z  label_type = WORKFLOW_LABEL_META 2024-08-20T21:16:14.7671971Z  runner_ami = RUNNER_AMI_LEGACY 2024-08-20T21:16:14.7672520Z  else: 2024-08-20T21:16:14.7672931Z  try: 2024-08-20T21:16:14.7673458Z  gh = get_gh_client(args.github_token) 2024-08-20T21:16:14.7674403Z  # The default issue we use - https://github.com/pytorch/test-infra/issues/5132 2024-08-20T21:16:14.7675550Z  issue = get_issue(gh, args.github_issue_repo, args.github_issue) 2024-08-20T21:16:14.7676355Z  username = get_potential_pr_author( 2024-08-20T21:16:14.7676945Z  gh, 2024-08-20T21:16:14.7677503Z  args.github_repo, 2024-08-20T21:16:14.7678037Z  args.github_actor, 2024-08-20T21:16:14.7678618Z  args.github_ref_type, 2024-08-20T21:16:14.7679283Z  args.github_branch, 2024-08-20T21:16:14.7679786Z  ) 2024-08-20T21:16:14.7680275Z  label_type = get_workflow_type( 2024-08-20T21:16:14.7680926Z  issue, 2024-08-20T21:16:14.7681352Z  ( 2024-08-20T21:16:14.7681874Z  args.github_issue_owner, 2024-08-20T21:16:14.7682542Z  username, 2024-08-20T21:16:14.7683007Z  ), 2024-08-20T21:16:14.7683436Z  ) 2024-08-20T21:16:14.7684003Z  runner_ami = get_optin_feature( 2024-08-20T21:16:14.7684547Z  issue=issue, 2024-08-20T21:16:14.7685113Z  workflow_requestors=( 2024-08-20T21:16:14.7685786Z  args.github_issue_owner, 2024-08-20T21:16:14.7686372Z  username, 2024-08-20T21:16:14.7686849Z  ), 2024-08-20T21:16:14.7687422Z  feature=RUNNER_AMI_AMZ2023, 2024-08-20T21:16:14.7688051Z  fallback=RUNNER_AMI_LEGACY, 2024-08-20T21:16:14.7688606Z  ) 2024-08-20T21:16:14.7689109Z  except Exception as e: 2024-08-20T21:16:14.7689773Z  log.error( 2024-08-20T21:16:14.7690761Z  f"Failed to get issue. Falling back to meta runners. Exception: {e}" 2024-08-20T21:16:14.7691655Z  ) 2024-08-20T21:16:14.7692165Z  label_type = WORKFLOW_LABEL_META 2024-08-20T21:16:14.7692777Z  runner_ami = RUNNER_AMI_LEGACY 2024-08-20T21:16:14.7693392Z  2024-08-20T21:16:14.7693840Z  # For Canary builds use canary runners 2024-08-20T21:16:14.7694767Z  if args.github_repo == "pytorch/pytorch-canary" and label_type == WORKFLOW_LABEL_LF: 2024-08-20T21:16:14.7695787Z  label_type = WORKFLOW_LABEL_LF_CANARY 2024-08-20T21:16:14.7696401Z  2024-08-20T21:16:14.7696993Z  set_github_output(GH_OUTPUT_KEY_LABEL_TYPE, label_type) 2024-08-20T21:16:14.7697781Z  set_github_output(GH_OUTPUT_KEY_AMI, runner_ami) 2024-08-20T21:16:14.7698413Z  2024-08-20T21:16:14.7698809Z  2024-08-20T21:16:14.7699156Z if __name__ == "__main__": 2024-08-20T21:16:14.7699641Z  main() 2024-08-20T21:16:14.7700098Z EOF 2024-08-20T21:16:14.7700429Z  2024-08-20T21:16:14.7700808Z cat runner_determinator.py 2024-08-20T21:16:14.8175427Z shell: /usr/bin/bash -e {0} 2024-08-20T21:16:14.8175967Z env: 2024-08-20T21:16:14.8176762Z GITHUB_TOKEN: *** 2024-08-20T21:16:14.8177202Z ISSUE_NUMBER: 5132 2024-08-20T21:16:14.8177652Z TRIGGERING_ACTOR: pytorch-bot[bot] 2024-08-20T21:16:14.8178234Z ISSUE_OWNER: 2024-08-20T21:16:14.8178610Z ##[endgroup] 2024-08-20T21:16:14.8599834Z # flake8: noqa: G004 2024-08-20T21:16:14.8600203Z 2024-08-20T21:16:14.8600562Z """ 2024-08-20T21:16:14.8602178Z This runner determinator is used to determine which set of runners to run a 2024-08-20T21:16:14.8603269Z GitHub job on. It uses the first comment of a GitHub issue (by default 2024-08-20T21:16:14.8604497Z https://github.com/pytorch/test-infra/issues/5132) as a user list to determine 2024-08-20T21:16:14.8605656Z which users will get their jobs to run on experimental runners. This user list 2024-08-20T21:16:14.8606716Z is also a comma separated list of additional features or experiments which the 2024-08-20T21:16:14.8607469Z user could be opted in to. 2024-08-20T21:16:14.8607846Z 2024-08-20T21:16:14.8608018Z The user list has the following rules: 2024-08-20T21:16:14.8608364Z 2024-08-20T21:16:14.8608676Z - Users are GitHub usernames with the @ prefix 2024-08-20T21:16:14.8609446Z - If the first line is a "*" then all users will use the new runners 2024-08-20T21:16:14.8610775Z - If the first line is a "!" then all users will use the old runners 2024-08-20T21:16:14.8611816Z - Each user is also a comma-separated list of features/experiments to enable 2024-08-20T21:16:14.8612969Z - A "#" prefix indicates the user is opted out of the new runners but is opting 2024-08-20T21:16:14.8613719Z into features/experiments. 2024-08-20T21:16:14.8614060Z 2024-08-20T21:16:14.8614204Z Example user list: 2024-08-20T21:16:14.8614428Z 2024-08-20T21:16:14.8614671Z @User1 2024-08-20T21:16:14.8615001Z @User2,amz2023 2024-08-20T21:16:14.8615437Z #@UserOptOutOfNewRunner,amz2023 2024-08-20T21:16:14.8616001Z """ 2024-08-20T21:16:14.8616205Z 2024-08-20T21:16:14.8616355Z import logging 2024-08-20T21:16:14.8616714Z import os 2024-08-20T21:16:14.8617154Z from argparse import ArgumentParser 2024-08-20T21:16:14.8617659Z from logging import LogRecord 2024-08-20T21:16:14.8618140Z from typing import Any, Iterable 2024-08-20T21:16:14.8618451Z 2024-08-20T21:16:14.8618713Z from github import Auth, Github 2024-08-20T21:16:14.8619192Z from github.Issue import Issue 2024-08-20T21:16:14.8619531Z 2024-08-20T21:16:14.8619536Z 2024-08-20T21:16:14.8619725Z WORKFLOW_LABEL_META = "" # use meta runners 2024-08-20T21:16:14.8620551Z WORKFLOW_LABEL_LF = "lf." # use runners from the linux foundation 2024-08-20T21:16:14.8621662Z WORKFLOW_LABEL_LF_CANARY = "lf.c." # use canary runners from the linux foundation 2024-08-20T21:16:14.8622344Z 2024-08-20T21:16:14.8622486Z RUNNER_AMI_LEGACY = "" 2024-08-20T21:16:14.8622996Z RUNNER_AMI_AMZ2023 = "amz2023" 2024-08-20T21:16:14.8623287Z 2024-08-20T21:16:14.8623491Z GITHUB_OUTPUT = os.getenv("GITHUB_OUTPUT", "") 2024-08-20T21:16:14.8624112Z GH_OUTPUT_KEY_AMI = "runner-ami" 2024-08-20T21:16:14.8624731Z GH_OUTPUT_KEY_LABEL_TYPE = "label-type" 2024-08-20T21:16:14.8625088Z 2024-08-20T21:16:14.8625092Z 2024-08-20T21:16:14.8625314Z class ColorFormatter(logging.Formatter): 2024-08-20T21:16:14.8625937Z """Color codes the log messages based on the log level""" 2024-08-20T21:16:14.8626446Z 2024-08-20T21:16:14.8626643Z COLORS = { 2024-08-20T21:16:14.8627044Z "WARNING": "\033[33m", # Yellow 2024-08-20T21:16:14.8627559Z "ERROR": "\033[31m", # Red 2024-08-20T21:16:14.8628122Z "CRITICAL": "\033[31m", # Red 2024-08-20T21:16:14.8628623Z "INFO": "\033[0m", # Reset 2024-08-20T21:16:14.8629090Z "DEBUG": "\033[0m", # Reset 2024-08-20T21:16:14.8629626Z } 2024-08-20T21:16:14.8629796Z 2024-08-20T21:16:14.8630080Z def format(self, record: LogRecord) -> str: 2024-08-20T21:16:14.8630873Z log_color = self.COLORS.get(record.levelname, "\033[0m") # Default to reset 2024-08-20T21:16:14.8631785Z record.msg = f"{log_color}{record.msg}\033[0m" 2024-08-20T21:16:14.8632393Z return super().format(record) 2024-08-20T21:16:14.8632738Z 2024-08-20T21:16:14.8632742Z 2024-08-20T21:16:14.8632909Z handler = logging.StreamHandler() 2024-08-20T21:16:14.8633764Z handler.setFormatter(ColorFormatter(fmt="%(levelname)-8s: %(message)s")) 2024-08-20T21:16:14.8634384Z 2024-08-20T21:16:14.8634635Z log = logging.getLogger(os.path.basename(__file__)) 2024-08-20T21:16:14.8635425Z log.addHandler(handler) 2024-08-20T21:16:14.8635901Z log.setLevel(logging.INFO) 2024-08-20T21:16:14.8636232Z 2024-08-20T21:16:14.8636237Z 2024-08-20T21:16:14.8636517Z def set_github_output(key: str, value: str) -> None: 2024-08-20T21:16:14.8637086Z """ 2024-08-20T21:16:14.8637623Z Defines outputs of the github action that invokes this script 2024-08-20T21:16:14.8638291Z """ 2024-08-20T21:16:14.8638632Z if not GITHUB_OUTPUT: 2024-08-20T21:16:14.8639976Z # See https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/ for deprecation notice 2024-08-20T21:16:14.8641276Z log.warning( 2024-08-20T21:16:14.8642217Z "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:14.8643292Z ) 2024-08-20T21:16:14.8666237Z print(f"::set-output name={key}::{value}") 2024-08-20T21:16:14.8666877Z return 2024-08-20T21:16:14.8667109Z 2024-08-20T21:16:14.8667438Z with open(GITHUB_OUTPUT, "a") as f: 2024-08-20T21:16:14.8668061Z log.info(f"Setting output: {key}='{value}'") 2024-08-20T21:16:14.8668665Z f.write(f"{key}={value}\n") 2024-08-20T21:16:14.8669091Z 2024-08-20T21:16:14.8669103Z 2024-08-20T21:16:14.8669291Z def parse_args() -> Any: 2024-08-20T21:16:14.8669849Z parser = ArgumentParser("Get dynamic rollout settings") 2024-08-20T21:16:14.8670819Z parser.add_argument("--github-token", type=str, required=True, help="GitHub token") 2024-08-20T21:16:14.8671707Z parser.add_argument( 2024-08-20T21:16:14.8672180Z "--github-issue-repo", 2024-08-20T21:16:14.8672619Z type=str, 2024-08-20T21:16:14.8673060Z required=False, 2024-08-20T21:16:14.8673553Z default="pytorch/test-infra", 2024-08-20T21:16:14.8674093Z help="GitHub repo to get the issue", 2024-08-20T21:16:14.8674672Z ) 2024-08-20T21:16:14.8675035Z parser.add_argument( 2024-08-20T21:16:14.8675471Z "--github-repo", 2024-08-20T21:16:14.8675954Z type=str, 2024-08-20T21:16:14.8676343Z required=True, 2024-08-20T21:16:14.8676764Z help="GitHub repo where CI is running", 2024-08-20T21:16:14.8677380Z ) 2024-08-20T21:16:14.8677927Z parser.add_argument( 2024-08-20T21:16:14.8678618Z "--github-issue", type=int, required=True, help="GitHub issue number" 2024-08-20T21:16:14.8679408Z ) 2024-08-20T21:16:14.8679763Z parser.add_argument( 2024-08-20T21:16:14.8680438Z "--github-actor", type=str, required=True, help="GitHub triggering_actor" 2024-08-20T21:16:14.8681236Z ) 2024-08-20T21:16:14.8681570Z parser.add_argument( 2024-08-20T21:16:14.8682268Z "--github-issue-owner", type=str, required=True, help="GitHub issue owner" 2024-08-20T21:16:14.8683094Z ) 2024-08-20T21:16:14.8683434Z parser.add_argument( 2024-08-20T21:16:14.8684152Z "--github-branch", type=str, required=True, help="Current GitHub branch or tag" 2024-08-20T21:16:14.8684999Z ) 2024-08-20T21:16:14.8685334Z parser.add_argument( 2024-08-20T21:16:14.8685760Z "--github-ref-type", 2024-08-20T21:16:14.8686301Z type=str, 2024-08-20T21:16:14.8686675Z required=True, 2024-08-20T21:16:14.8687130Z help="Current GitHub ref type, branch or tag", 2024-08-20T21:16:14.8687775Z ) 2024-08-20T21:16:14.8687943Z 2024-08-20T21:16:14.8688135Z return parser.parse_args() 2024-08-20T21:16:14.8688432Z 2024-08-20T21:16:14.8688437Z 2024-08-20T21:16:14.8688710Z def get_gh_client(github_token: str) -> Github: 2024-08-20T21:16:14.8689391Z auth = Auth.Token(github_token) 2024-08-20T21:16:14.8690216Z return Github(auth=auth) 2024-08-20T21:16:14.8690542Z 2024-08-20T21:16:14.8690547Z 2024-08-20T21:16:14.8690937Z def get_issue(gh: Github, repo: str, issue_num: int) -> Issue: 2024-08-20T21:16:14.8691711Z repo = gh.get_repo(repo) 2024-08-20T21:16:14.8692207Z return repo.get_issue(number=issue_num) 2024-08-20T21:16:14.8692807Z 2024-08-20T21:16:14.8692812Z 2024-08-20T21:16:14.8693014Z def get_potential_pr_author( 2024-08-20T21:16:14.8693693Z gh: Github, repo: str, username: str, ref_type: str, ref_name: str 2024-08-20T21:16:14.8694417Z ) -> str: 2024-08-20T21:16:14.8694968Z # If the trigger was a new tag added by a bot, this is a ciflow case 2024-08-20T21:16:14.8695900Z # Fetch the actual username from the original PR. The PR number is 2024-08-20T21:16:14.8696762Z # embedded in the tag name: ciflow// 2024-08-20T21:16:14.8697527Z if username == "pytorch-bot[bot]" and ref_type == "tag": 2024-08-20T21:16:14.8698219Z split_tag = ref_name.split("/") 2024-08-20T21:16:14.8698738Z if ( 2024-08-20T21:16:14.8699106Z len(split_tag) == 3 2024-08-20T21:16:14.8699623Z and split_tag[0] == "ciflow" 2024-08-20T21:16:14.8700171Z and split_tag[2].isnumeric() 2024-08-20T21:16:14.8700667Z ): 2024-08-20T21:16:14.8701058Z pr_number = split_tag[2] 2024-08-20T21:16:14.8701563Z try: 2024-08-20T21:16:14.8701980Z repository = gh.get_repo(repo) 2024-08-20T21:16:14.8702657Z pull = repository.get_pull(number=int(pr_number)) 2024-08-20T21:16:14.8703312Z except Exception as e: 2024-08-20T21:16:14.8703846Z raise Exception( # noqa: TRY002 2024-08-20T21:16:14.8704611Z f"issue with pull request {pr_number} from repo {repository}" 2024-08-20T21:16:14.8705297Z ) from e 2024-08-20T21:16:14.8705725Z return pull.user.login 2024-08-20T21:16:14.8706368Z # In all other cases, return the original input username 2024-08-20T21:16:14.8706987Z return username 2024-08-20T21:16:14.8707229Z 2024-08-20T21:16:14.8707234Z 2024-08-20T21:16:14.8707511Z def is_exception_branch(branch: str) -> bool: 2024-08-20T21:16:14.8708347Z return branch.split("/")[0] in {"main", "nightly", "release", "landchecks"} 2024-08-20T21:16:14.8708952Z 2024-08-20T21:16:14.8708961Z 2024-08-20T21:16:14.8709427Z def get_workflow_type(issue: Issue, workflow_requestors: Iterable[str]) -> str: 2024-08-20T21:16:14.8710181Z try: 2024-08-20T21:16:14.8710752Z first_comment = issue.get_comments()[0].body.strip("\n\t ") 2024-08-20T21:16:14.8711238Z 2024-08-20T21:16:14.8711537Z if first_comment[0] == "!": 2024-08-20T21:16:14.8712287Z log.info("LF Workflows are disabled for everyone. Using meta runners.") 2024-08-20T21:16:14.8713119Z return WORKFLOW_LABEL_META 2024-08-20T21:16:14.8713608Z elif first_comment[0] == "*": 2024-08-20T21:16:14.8714325Z log.info("LF Workflows are enabled for everyone. Using LF runners.") 2024-08-20T21:16:14.8715130Z return WORKFLOW_LABEL_LF 2024-08-20T21:16:14.8715597Z else: 2024-08-20T21:16:14.8715984Z all_opted_in_users = { 2024-08-20T21:16:14.8716636Z usr_raw.strip("\n\t@ ").split(",")[0] 2024-08-20T21:16:14.8717222Z for usr_raw in first_comment.split() 2024-08-20T21:16:14.8717789Z } 2024-08-20T21:16:14.8718300Z opted_in_requestors = { 2024-08-20T21:16:14.8718945Z usr for usr in workflow_requestors if usr in all_opted_in_users 2024-08-20T21:16:14.8719672Z } 2024-08-20T21:16:14.8720050Z if opted_in_requestors: 2024-08-20T21:16:14.8720517Z log.info( 2024-08-20T21:16:14.8721383Z f"LF Workflows are enabled for {', '.join(opted_in_requestors)}. Using LF runners." 2024-08-20T21:16:14.8722211Z ) 2024-08-20T21:16:14.8722578Z return WORKFLOW_LABEL_LF 2024-08-20T21:16:14.8723134Z else: 2024-08-20T21:16:14.8723515Z log.info( 2024-08-20T21:16:14.8724316Z f"LF Workflows are disabled for {', '.join(workflow_requestors)}. Using meta runners." 2024-08-20T21:16:14.8725151Z ) 2024-08-20T21:16:14.8725570Z return WORKFLOW_LABEL_META 2024-08-20T21:16:14.8726061Z 2024-08-20T21:16:14.8726245Z except Exception as e: 2024-08-20T21:16:14.8726721Z log.error( 2024-08-20T21:16:14.8727456Z f"Failed to get determine workflow type. Falling back to meta runners. Exception: {e}" 2024-08-20T21:16:14.8728276Z ) 2024-08-20T21:16:14.8728692Z return WORKFLOW_LABEL_META 2024-08-20T21:16:14.8729063Z 2024-08-20T21:16:14.8729069Z 2024-08-20T21:16:14.8729212Z def get_optin_feature( 2024-08-20T21:16:14.8730129Z issue: Issue, workflow_requestors: Iterable[str], feature: str, fallback: str 2024-08-20T21:16:14.8731179Z ) -> str: 2024-08-20T21:16:14.8731530Z try: 2024-08-20T21:16:14.8732024Z first_comment = issue.get_comments()[0].body.strip("\n\t ") 2024-08-20T21:16:14.8732949Z userlist = {u.lstrip("#").strip("\n\t@ ") for u in first_comment.split()} 2024-08-20T21:16:14.8733695Z all_opted_in_users = set() 2024-08-20T21:16:14.8734182Z for user in userlist: 2024-08-20T21:16:14.8734713Z for i in user.split(","): 2024-08-20T21:16:14.8735218Z if i == feature: 2024-08-20T21:16:14.8735776Z all_opted_in_users.add(user.split(",")[0]) 2024-08-20T21:16:14.8736394Z opted_in_requestors = { 2024-08-20T21:16:14.8737061Z usr for usr in workflow_requestors if usr in all_opted_in_users 2024-08-20T21:16:14.8737747Z } 2024-08-20T21:16:14.8737927Z 2024-08-20T21:16:14.8738135Z if opted_in_requestors: 2024-08-20T21:16:14.8738594Z log.info( 2024-08-20T21:16:14.8739433Z f"Feature {feature} is enabled for {', '.join(opted_in_requestors)}. Using feature {feature}." 2024-08-20T21:16:14.8740338Z ) 2024-08-20T21:16:14.8740667Z return feature 2024-08-20T21:16:14.8741094Z else: 2024-08-20T21:16:14.8741472Z log.info( 2024-08-20T21:16:14.8742345Z f"Feature {feature} is disabled for {', '.join(workflow_requestors)}. Using fallback \"{fallback}\"." 2024-08-20T21:16:14.8743249Z ) 2024-08-20T21:16:14.8743695Z return fallback 2024-08-20T21:16:14.8743970Z 2024-08-20T21:16:14.8744119Z except Exception as e: 2024-08-20T21:16:14.8744563Z log.error( 2024-08-20T21:16:14.8745735Z f'Failed to determine if user has opted-in to feature {feature}. Using fallback "{fallback}". Exception: {e}' 2024-08-20T21:16:14.8746727Z ) 2024-08-20T21:16:14.8747073Z return fallback 2024-08-20T21:16:14.8747319Z 2024-08-20T21:16:14.8747324Z 2024-08-20T21:16:14.8747599Z def main() -> None: 2024-08-20T21:16:14.8747980Z args = parse_args() 2024-08-20T21:16:14.8748262Z 2024-08-20T21:16:14.8748674Z if args.github_ref_type == "branch" and is_exception_branch(args.github_branch): 2024-08-20T21:16:14.8749836Z log.info(f"Exception branch: '{args.github_branch}', using meta runners") 2024-08-20T21:16:14.8750592Z label_type = WORKFLOW_LABEL_META 2024-08-20T21:16:14.8751129Z runner_ami = RUNNER_AMI_LEGACY 2024-08-20T21:16:14.8751739Z else: 2024-08-20T21:16:14.8752040Z try: 2024-08-20T21:16:14.8752465Z gh = get_gh_client(args.github_token) 2024-08-20T21:16:14.8753455Z # The default issue we use - https://github.com/pytorch/test-infra/issues/5132 2024-08-20T21:16:14.8754403Z issue = get_issue(gh, args.github_issue_repo, args.github_issue) 2024-08-20T21:16:14.8755143Z username = get_potential_pr_author( 2024-08-20T21:16:14.8755758Z gh, 2024-08-20T21:16:14.8756119Z args.github_repo, 2024-08-20T21:16:14.8756598Z args.github_actor, 2024-08-20T21:16:14.8757166Z args.github_ref_type, 2024-08-20T21:16:14.8757667Z args.github_branch, 2024-08-20T21:16:14.8758095Z ) 2024-08-20T21:16:14.8758585Z label_type = get_workflow_type( 2024-08-20T21:16:14.8759065Z issue, 2024-08-20T21:16:14.8759476Z ( 2024-08-20T21:16:14.8759971Z args.github_issue_owner, 2024-08-20T21:16:14.8760717Z username, 2024-08-20T21:16:14.8761158Z ), 2024-08-20T21:16:14.8761587Z ) 2024-08-20T21:16:14.8761942Z runner_ami = get_optin_feature( 2024-08-20T21:16:14.8762491Z issue=issue, 2024-08-20T21:16:14.8763012Z workflow_requestors=( 2024-08-20T21:16:14.8763508Z args.github_issue_owner, 2024-08-20T21:16:14.8764069Z username, 2024-08-20T21:16:14.8764558Z ), 2024-08-20T21:16:14.8764941Z feature=RUNNER_AMI_AMZ2023, 2024-08-20T21:16:14.8765482Z fallback=RUNNER_AMI_LEGACY, 2024-08-20T21:16:14.8766038Z ) 2024-08-20T21:16:14.8766389Z except Exception as e: 2024-08-20T21:16:14.8766840Z log.error( 2024-08-20T21:16:14.8767520Z f"Failed to get issue. Falling back to meta runners. Exception: {e}" 2024-08-20T21:16:14.8768212Z ) 2024-08-20T21:16:14.8768612Z label_type = WORKFLOW_LABEL_META 2024-08-20T21:16:14.8769233Z runner_ami = RUNNER_AMI_LEGACY 2024-08-20T21:16:14.8769606Z 2024-08-20T21:16:14.8770601Z # For Canary builds use canary runners 2024-08-20T21:16:14.8771786Z if args.github_repo == "pytorch/pytorch-canary" and label_type == WORKFLOW_LABEL_LF: 2024-08-20T21:16:14.8772770Z label_type = WORKFLOW_LABEL_LF_CANARY 2024-08-20T21:16:14.8773154Z 2024-08-20T21:16:14.8773451Z set_github_output(GH_OUTPUT_KEY_LABEL_TYPE, label_type) 2024-08-20T21:16:14.8774138Z set_github_output(GH_OUTPUT_KEY_AMI, runner_ami) 2024-08-20T21:16:14.8774652Z 2024-08-20T21:16:14.8774657Z 2024-08-20T21:16:14.8774801Z if __name__ == "__main__": 2024-08-20T21:16:14.8775218Z main() 2024-08-20T21:16:14.8949488Z ##[group]Run python3 -m pip install urllib3==1.26.18 PyGithub==2.3.0 2024-08-20T21:16:14.8950451Z python3 -m pip install urllib3==1.26.18 PyGithub==2.3.0 2024-08-20T21:16:14.9013510Z shell: /usr/bin/bash -e {0} 2024-08-20T21:16:14.9013992Z env: 2024-08-20T21:16:14.9014702Z GITHUB_TOKEN: *** 2024-08-20T21:16:14.9015093Z ISSUE_NUMBER: 5132 2024-08-20T21:16:14.9015543Z TRIGGERING_ACTOR: pytorch-bot[bot] 2024-08-20T21:16:14.9016084Z ISSUE_OWNER: 2024-08-20T21:16:14.9016503Z ##[endgroup] 2024-08-20T21:16:15.3495032Z Defaulting to user installation because normal site-packages is not writeable 2024-08-20T21:16:15.6664886Z Collecting urllib3==1.26.18 2024-08-20T21:16:15.7159206Z Downloading urllib3-1.26.18-py2.py3-none-any.whl (143 kB) 2024-08-20T21:16:15.7386401Z ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 143.8/143.8 KB 6.7 MB/s eta 0:00:00 2024-08-20T21:16:15.7754369Z Collecting PyGithub==2.3.0 2024-08-20T21:16:15.7827813Z Downloading PyGithub-2.3.0-py3-none-any.whl (354 kB) 2024-08-20T21:16:15.8099072Z ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 354.4/354.4 KB 13.8 MB/s eta 0:00:00 2024-08-20T21:16:15.8551725Z Collecting Deprecated 2024-08-20T21:16:15.8636302Z Downloading Deprecated-1.2.14-py2.py3-none-any.whl (9.6 kB) 2024-08-20T21:16:15.8944460Z Collecting pyjwt[crypto]>=2.4.0 2024-08-20T21:16:15.9017070Z Downloading PyJWT-2.9.0-py3-none-any.whl (22 kB) 2024-08-20T21:16:15.9101349Z 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:15.9468800Z Collecting pynacl>=1.4.0 2024-08-20T21:16:15.9542747Z 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:16.0054875Z ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 856.7/856.7 KB 17.3 MB/s eta 0:00:00 2024-08-20T21:16:16.0376727Z Collecting typing-extensions>=4.0.0 2024-08-20T21:16:16.0452152Z Downloading typing_extensions-4.12.2-py3-none-any.whl (37 kB) 2024-08-20T21:16:16.0622973Z 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:16.2989582Z Collecting cffi>=1.4.1 2024-08-20T21:16:16.3066576Z Downloading cffi-1.17.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (445 kB) 2024-08-20T21:16:16.3292831Z ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 445.9/445.9 KB 21.3 MB/s eta 0:00:00 2024-08-20T21:16:16.4872809Z Collecting wrapt<2,>=1.10 2024-08-20T21:16:16.4949886Z 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:16.5017073Z ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 80.3/80.3 KB 15.1 MB/s eta 0:00:00 2024-08-20T21:16:16.5211683Z Collecting pycparser 2024-08-20T21:16:16.5284607Z Downloading pycparser-2.22-py3-none-any.whl (117 kB) 2024-08-20T21:16:16.5340284Z ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 117.6/117.6 KB 29.8 MB/s eta 0:00:00 2024-08-20T21:16:16.7096255Z Installing collected packages: wrapt, urllib3, typing-extensions, pyjwt, pycparser, Deprecated, cffi, pynacl, PyGithub 2024-08-20T21:16:17.1779170Z 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:17.2485858Z ##[group]Run curr_branch="ciflow/trunk/133712" 2024-08-20T21:16:17.2486430Z curr_branch="ciflow/trunk/133712" 2024-08-20T21:16:17.2486879Z curr_ref_type="tag" 2024-08-20T21:16:17.2487428Z echo "Current branch is '$curr_branch'" 2024-08-20T21:16:17.2487837Z  2024-08-20T21:16:17.2488188Z python3 runner_determinator.py \ 2024-08-20T21:16:17.2488747Z  --github-token "$GITHUB_TOKEN" \ 2024-08-20T21:16:17.2489222Z  --github-issue "$ISSUE_NUMBER" \ 2024-08-20T21:16:17.2489641Z  --github-branch "$curr_branch" \ 2024-08-20T21:16:17.2490545Z  --github-actor "$TRIGGERING_ACTOR" \ 2024-08-20T21:16:17.2491050Z  --github-issue-owner "$ISSUE_OWNER" \ 2024-08-20T21:16:17.2491530Z  --github-ref-type "$curr_ref_type" \ 2024-08-20T21:16:17.2492087Z  --github-repo "$GITHUB_REPOSITORY" 2024-08-20T21:16:17.2556032Z shell: /usr/bin/bash -e {0} 2024-08-20T21:16:17.2556475Z env: 2024-08-20T21:16:17.2557196Z GITHUB_TOKEN: *** 2024-08-20T21:16:17.2557649Z ISSUE_NUMBER: 5132 2024-08-20T21:16:17.2558049Z TRIGGERING_ACTOR: pytorch-bot[bot] 2024-08-20T21:16:17.2558423Z ISSUE_OWNER: 2024-08-20T21:16:17.2558805Z ##[endgroup] 2024-08-20T21:16:17.2639787Z Current branch is 'ciflow/trunk/133712' 2024-08-20T21:16:19.4644392Z INFO : LF Workflows are disabled for , XuehaiPan. Using meta runners. 2024-08-20T21:16:19.8728966Z INFO : Feature amz2023 is disabled for , XuehaiPan. Using fallback "". 2024-08-20T21:16:19.8730252Z INFO : Setting output: label-type='' 2024-08-20T21:16:19.8730857Z INFO : Setting output: runner-ami='' 2024-08-20T21:16:19.9111416Z Evaluate and set job outputs 2024-08-20T21:16:19.9122545Z Cleaning up orphan processes