def cmd_standalone_build(project, platform, api, test_platform, editor, build_config, color_space): base = [ f'curl -s {UTR_INSTALL_URL}.bat --output utr.bat', f'pip install unity-downloader-cli --index-url {UNITY_DOWNLOADER_CLI_URL} --upgrade', f'unity-downloader-cli { get_unity_downloader_cli_cmd(editor, platform["os"]) } -p WindowsEditor {"".join([f"-c {c} " for c in platform["components"]])} --wait --published-only', f'NetSh Advfirewall set allprofiles state off' ] utr_calls = get_repeated_utr_calls(test_platform, platform, api, build_config, color_space, project["folder"], utr_flags_key="utr_flags_build") for utr_args in utr_calls: base.append( pss(f''' git rev-parse HEAD | git show -s --format=%%cI > revdate.tmp set /p GIT_REVISIONDATE=<revdate.tmp echo %GIT_REVISIONDATE% del revdate.tmp utr {" ".join(utr_args)}''')) base = add_project_commands(project) + base return base
def cmd_playmode(project, platform, api, test_platform, editor, build_config, color_space): base = [ f'curl -s {UTR_INSTALL_URL}.bat --output utr.bat', f'choco install unity-downloader-cli -y -s https://artifactory.prd.it.unity3d.com/artifactory/api/nuget/unity-choco-local', f'unity-downloader-cli { get_unity_downloader_cli_cmd(editor, platform["os"]) } -p WindowsEditor {"".join([f"-c {c} " for c in platform["components"]])} --wait --published-only', f'%ANDROID_SDK_ROOT%\platform-tools\\adb.exe connect %BOKKEN_DEVICE_IP%', f'powershell %ANDROID_SDK_ROOT%\platform-tools\\adb.exe devices', f'NetSh Advfirewall set allprofiles state off' ] utr_calls = get_repeated_utr_calls(test_platform, platform, api, build_config, color_space, project["folder"]) for utr_args in utr_calls: base.append( pss(f''' git rev-parse HEAD | git show -s --format=%%cI > revdate.tmp set /p GIT_REVISIONDATE=<revdate.tmp echo %GIT_REVISIONDATE% del revdate.tmp utr {" ".join(utr_args)}''')) base.append( f'start %ANDROID_SDK_ROOT%\platform-tools\\adb.exe kill-server') base = add_project_commands(project) + base return base
def cmd_editmode(project_folder, platform, api, test_platform, editor, build_config, color_space): utr_args = extract_flags(test_platform["utr_flags"], platform["name"], api["name"], build_config, color_space, project_folder) base = [ f'curl -s {UTR_INSTALL_URL}.bat --output utr.bat', f'pip install unity-downloader-cli --index-url {UNITY_DOWNLOADER_CLI_URL} --upgrade', f'unity-downloader-cli { get_unity_downloader_cli_cmd(editor, platform["os"]) } -p WindowsEditor {"".join([f"-c {c} " for c in platform["components"]])} --wait --published-only', f'%ANDROID_SDK_ROOT%\platform-tools\\adb.exe connect %BOKKEN_DEVICE_IP%', f'powershell %ANDROID_SDK_ROOT%\platform-tools\\adb.exe devices', f'NetSh Advfirewall set allprofiles state off', pss(f''' set ANDROID_DEVICE_CONNECTION=%BOKKEN_DEVICE_IP% utr {" ".join(utr_args)}'''), f'start %ANDROID_SDK_ROOT%\platform-tools\\adb.exe kill-server' ] extra_cmds = extra_perf_cmd(project_folder) unity_config = install_unity_config(project_folder) extra_cmds = extra_cmds + unity_config if project_folder.lower() == "BoatAttack".lower(): base = extra_cmds + base return base
def process(self, gitlab_cli): actions = [{ 'action': 'create', 'file_path': report['file_path'], 'content': report['content'], } for report in self.reports] gitlab_cli.create_commit(self.branch, self.title, actions) with open(EMAIL_TEMPLATE) as file_obj: template = Template(file_obj.read(), keep_trailing_newline=True, trim_blocks=True) content = template.render(NAME=f'app-interface-reporter-{self.ts}', SUBJECT=self.title, ALIASES=['all-service-owners'], BODY=pss(self.email_body)) email_path = (Path('data') / 'app-interface' / 'emails' / f'{self.ts}.yml') gitlab_cli.create_file(branch_name=self.branch, file_path=str(email_path), commit_message=self.title, content=content)
def cmd_standalone_build(project, platform, api, test_platform, editor, build_config, color_space): if "Performance" not in project["name"]: base = [ f'brew tap --force-auto-update unity/unity [email protected]:unity/homebrew-unity.git', f'brew install unity/unity/unity-downloader-cli', f'unity-downloader-cli { get_unity_downloader_cli_cmd(editor, platform["os"]) } {"".join([f"-c {c} " for c in platform["components"]])} --wait --published-only', f'curl -s {UTR_INSTALL_URL} --output utr', f'chmod +x ./utr' ] else: base = [ f'pip install unity-downloader-cli --index-url https://artifactory.prd.it.unity3d.com/artifactory/api/pypi/pypi/simple --upgrade', f'unity-downloader-cli { get_unity_downloader_cli_cmd(editor, platform["os"]) } {"".join([f"-c {c} " for c in platform["components"]])} --wait --published-only', f'curl -s {UTR_INSTALL_URL} --output utr', f'chmod +x ./utr' ] utr_calls = get_repeated_utr_calls(test_platform, platform, api, build_config, color_space, project["folder"], utr_flags_key="utr_flags_build") for utr_args in utr_calls: base.append( pss(f''' export GIT_REVISIONDATE=`git rev-parse HEAD | git show -s --format=%cI` ./utr {" ".join(utr_args)}''')) base = add_project_commands(project) + base return base
def get_job_definition(self, editor, agent, target_branch, target_branch_editor_ci): commands = [ f'sudo pip3 install pipenv --index-url https://artifactory.prd.it.unity3d.com/artifactory/api/pypi/pypi/simple', # Remove when the image has this preinstalled. f'python3 -m pipenv install --dev', f'curl -L https://artifactory.prd.it.unity3d.com/artifactory/api/gpg/key/public | sudo apt-key add -', f'sudo sh -c "echo \'deb https://artifactory.prd.it.unity3d.com/artifactory/unity-apt-local bionic main\' > /etc/apt/sources.list.d/unity.list"', f'sudo apt-get update', f'sudo apt-get install yamato-parser -y', pss( f''' if [[ "$GIT_BRANCH" != "{target_branch_editor_ci }" ]]; then echo "Should run on '{target_branch_editor_ci}' but is running on '$GIT_BRANCH'" exit 1 fi''' ), # This should never run on anything other than stable. If you try it then it will fail f'git config --global user.name "*****@*****.**"', # TODO f'git config --global user.email "*****@*****.**"', # TODO f'pipenv run python3 .yamato/ruamel/editor_pinning/merge_revisions.py --revision $GIT_REVISION --target-branch { target_branch }' ] # construct job job = YMLJob() job.set_name(f'Merge editor revisions to {target_branch} [manual]') job.set_agent(agent) job.add_var_custom('CI', True) job.add_commands(commands) #job.add_dependencies([f'{abv_filepath()}#{abv_job_id_all_project_ci(editor)}']) #job.set_trigger_on_expression(f'push.branch eq "{target_branch_editor_ci}" AND push.changes.any match "**/_latest_editor_versions.metafile"') return job
def get_job_definition(self, agent, target_branch, target_branch_editor_ci): commands = [ # This should never run on anything other than master or releases. If you try it then it will fail f'echo $GIT_BRANCH', pss(f''' if [[ "$GIT_BRANCH" != "{target_branch }" ]]; then echo "Should run on '{target_branch}' but is running on '$GIT_BRANCH'" exit 1 fi'''), f'git fetch', f'git checkout {target_branch}', f'git checkout {target_branch_editor_ci}', f'git config --global user.name "*****@*****.**"', f'git config --global user.email "*****@*****.**"', f'git merge {target_branch} --ff', f'git push' ] # construct job job = YMLJob() job.set_name(f'Merge {target_branch} to {target_branch_editor_ci}') job.set_agent(agent) job.add_var_custom('CI', True) job.add_commands(commands) return job
def cmd_standalone_build(project_folder, platform, api, test_platform, editor, build_config, color_space): utr_args = extract_flags(test_platform["utr_flags_build"], platform["name"], api["name"], build_config, color_space, project_folder) base = [ f'curl -s {UTR_INSTALL_URL}.bat --output utr.bat', f'pip install unity-downloader-cli --index-url {UNITY_DOWNLOADER_CLI_URL} --upgrade', f'unity-downloader-cli { get_unity_downloader_cli_cmd(editor, platform["os"]) } -p WindowsEditor {"".join([f"-c {c} " for c in platform["components"]])} --wait --published-only', f'NetSh Advfirewall set allprofiles state off', pss(f''' git rev-parse HEAD | git show -s --format=%%cI > revdate.tmp set /p GIT_REVISIONDATE=<revdate.tmp echo %GIT_REVISIONDATE% del revdate.tmp utr {" ".join(utr_args)}''') ] extra_cmds = extra_perf_cmd(project_folder) unity_config = install_unity_config(project_folder) extra_cmds = extra_cmds + unity_config if project_folder.lower() == "BoatAttack".lower(): base = extra_cmds + base return base
def cmd_standalone_build(project_folder, platform, api, test_platform, editor, build_config, color_space): scripting_backend = build_config["scripting_backend"] api_level = build_config["api_level"] utr_args = utr_standalone_build_flags(platform_spec='', platform='Android', testproject=f'./{TEST_PROJECTS_DIR}/{project_folder}', graphics_api=api["name"], player_save_path=PATH_PLAYERS, editor_location='./WindowsEditor', scripting_backend=f'{scripting_backend}', api_level=f'{api_level}', color_space=f'{color_space}') utr_args.extend(['--architecture=ARM64']) utr_args.extend(test_platform["extra_utr_flags_build"]) utr_args.extend(platform["extra_utr_flags_build"]) utr_args.append(f'--timeout={get_timeout(test_platform, "Android", build=True)}') # if api["name"].lower() =='vulkan': # utr_args.extend(['--extra-editor-arg="-executemethod"', f'--extra-editor-arg="SetupProject.ApplySettings"','--extra-editor-arg="vulkan"']) base = [ f'curl -s {UTR_INSTALL_URL}.bat --output utr.bat', f'pip install unity-downloader-cli --index-url {UNITY_DOWNLOADER_CLI_URL} --upgrade', f'unity-downloader-cli { get_unity_downloader_cli_cmd(editor, platform["os"]) } -p WindowsEditor {"".join([f"-c {c} " for c in platform["components"]])} --wait --published-only', f'NetSh Advfirewall set allprofiles state off', pss(f''' git rev-parse HEAD | git show -s --format=%%cI > revdate.tmp set /p GIT_REVISIONDATE=<revdate.tmp echo %GIT_REVISIONDATE% del revdate.tmp utr {" ".join(utr_args)}''') ] extra_cmds = extra_perf_cmd(project_folder) unity_config = install_unity_config(project_folder) extra_cmds = extra_cmds + unity_config if project_folder.lower() == "BoatAttack".lower(): x=0 for y in extra_cmds: base.insert(x, y) x += 1 return base
def cmd_editmode(project_folder, platform, api, test_platform, editor, build_config, color_space): scripting_backend = build_config["scripting_backend"] api_level = build_config["api_level"] utr_args = utr_editmode_flags( testproject=f'{TEST_PROJECTS_DIR}\{project_folder}',editor_location='WindowsEditor', scripting_backend=f'{scripting_backend}', api_level=f'{api_level}', color_space=f'{color_space}') utr_args.extend(test_platform["extra_utr_flags"]) utr_args.extend(platform["extra_utr_flags"]) if test_platform["name"].lower()=='playmode_perf_build': utr_args.append('--platform=Android') base = [ f'curl -s {UTR_INSTALL_URL}.bat --output utr.bat', f'pip install unity-downloader-cli --index-url {UNITY_DOWNLOADER_CLI_URL} --upgrade', f'unity-downloader-cli { get_unity_downloader_cli_cmd(editor, platform["os"]) } -p WindowsEditor {"".join([f"-c {c} " for c in platform["components"]])} --wait --published-only', f'%ANDROID_SDK_ROOT%\platform-tools\\adb.exe connect %BOKKEN_DEVICE_IP%', f'powershell %ANDROID_SDK_ROOT%\platform-tools\\adb.exe devices', f'NetSh Advfirewall set allprofiles state off', pss(f''' set ANDROID_DEVICE_CONNECTION=%BOKKEN_DEVICE_IP% utr {" ".join(utr_args)}'''), f'start %ANDROID_SDK_ROOT%\platform-tools\\adb.exe kill-server' ] extra_cmds = extra_perf_cmd(project_folder) unity_config = install_unity_config(project_folder) extra_cmds = extra_cmds + unity_config if project_folder.lower() == "BoatAttack".lower(): x=0 for y in extra_cmds: base.insert(x, y) x += 1 return base
def cmd_standalone(project_folder, platform, api, test_platform, editor, build_config, color_space): base = [ f'curl -s {UTR_INSTALL_URL}.bat --output utr.bat', f'%ANDROID_SDK_ROOT%\platform-tools\\adb.exe connect %BOKKEN_DEVICE_IP%', f'powershell %ANDROID_SDK_ROOT%\platform-tools\\adb.exe devices', f'NetSh Advfirewall set allprofiles state off' ] utr_calls = get_repeated_utr_calls(test_platform, platform, api, build_config, color_space, project_folder) for utr_args in utr_calls: base.append( pss(f''' set ANDROID_DEVICE_CONNECTION=%BOKKEN_DEVICE_IP% git rev-parse HEAD | git show -s --format=%%cI > revdate.tmp set /p GIT_REVISIONDATE=<revdate.tmp echo %GIT_REVISIONDATE% del revdate.tmp utr {" ".join(utr_args)}''')) base.append( f'start %ANDROID_SDK_ROOT%\platform-tools\\adb.exe kill-server') return base
def cmd_playmode(project_folder, platform, api, test_platform, editor, build_config, color_space): base = [ f'curl -s {UTR_INSTALL_URL}.bat --output utr.bat', f'pip install unity-downloader-cli --index-url {UNITY_DOWNLOADER_CLI_URL} --upgrade', f'unity-downloader-cli { get_unity_downloader_cli_cmd(editor, platform["os"]) } -p WindowsEditor {"".join([f"-c {c} " for c in platform["components"]])} --wait --published-only', f'%ANDROID_SDK_ROOT%\platform-tools\\adb.exe connect %BOKKEN_DEVICE_IP%', f'powershell %ANDROID_SDK_ROOT%\platform-tools\\adb.exe devices', f'NetSh Advfirewall set allprofiles state off' ] utr_calls = get_repeated_utr_calls(test_platform, platform, api, build_config, color_space, project_folder) for utr_args in utr_calls: base.append( pss(f''' git rev-parse HEAD | git show -s --format=%%cI > revdate.tmp set /p GIT_REVISIONDATE=<revdate.tmp echo %GIT_REVISIONDATE% del revdate.tmp utr {" ".join(utr_args)}''')) base.append( f'start %ANDROID_SDK_ROOT%\platform-tools\\adb.exe kill-server') if project_folder.lower() == "BoatAttack".lower(): base = extra_perf_cmd(project_folder) + install_unity_config( project_folder) + base return base
def get_job_definition(self, agent, target_branch, target_branch_editor_ci): commands = [ f'sudo pip3 install pipenv --index-url https://artifactory.prd.it.unity3d.com/artifactory/api/pypi/pypi/simple', # Remove when the image has this preinstalled. f'python3 -m pipenv install --dev', f'curl -L https://artifactory.prd.it.unity3d.com/artifactory/api/gpg/key/public | sudo apt-key add -', f'sudo sh -c "echo \'deb https://artifactory.prd.it.unity3d.com/artifactory/unity-apt-local bionic main\' > /etc/apt/sources.list.d/unity.list"', f'sudo apt-get update', f'sudo apt-get install yamato-parser -y', pss( f''' if [[ "$GIT_BRANCH" != "{target_branch }" ]]; then echo "Should run on '{ target_branch }' but is running on '$GIT_BRANCH'" exit 1 fi''' ), # This should never run on anything other than stable. If you try it then it will fail f'git config --global user.name "*****@*****.**"', f'git config --global user.email "*****@*****.**"', f'pipenv run python3 .yamato/ruamel/editor_pinning/update_revisions.py --target-branch { target_branch_editor_ci } --force-push' ] # construct job job = YMLJob() job.set_name(f'Update pinned editor versions') job.set_agent(agent) job.add_var_custom('CI', True) job.add_commands(commands) job.add_dependencies( [f'{editor_pinning_filepath()}#{editor_job_id_target_to_ci()}']) job.add_trigger_recurrent(target_branch, '23 * * ?') return job
def cmd_standalone_build(project_folder, platform, api, test_platform, editor, build_config, color_space): base = [ f'pip install unity-downloader-cli --index-url {UNITY_DOWNLOADER_CLI_URL} --upgrade', f'unity-downloader-cli { get_unity_downloader_cli_cmd(editor, platform["os"]) } {"".join([f"-c {c} " for c in platform["components"]])} --wait --published-only', f'curl -s {UTR_INSTALL_URL} --output utr', f'chmod +x ./utr' ] utr_calls = get_repeated_utr_calls(test_platform, platform, api, build_config, color_space, project_folder, utr_flags_key="utr_flags_build") for utr_args in utr_calls: base.append( pss(f''' export GIT_REVISIONDATE=`git rev-parse HEAD | git show -s --format=%cI` ./utr {" ".join(utr_args)}''')) if project_folder.lower() == "BoatAttack".lower(): base = extra_perf_cmd(project_folder) + install_unity_config( project_folder) + base return base
def process(self, gitlab_cli): actions = [{ "action": "create", "file_path": report["file_path"], "content": report["content"], } for report in self.reports] gitlab_cli.create_commit(self.branch, self.title, actions) with open(EMAIL_TEMPLATE) as file_obj: template = Template(file_obj.read(), keep_trailing_newline=True, trim_blocks=True) content = template.render( NAME=f"app-interface-reporter-{self.ts}", SUBJECT=self.title, ALIASES=["all-service-owners"], BODY=pss(self.email_body), ) email_path = Path( "data") / "app-interface" / "emails" / f"{self.ts}.yml" gitlab_cli.create_file( branch_name=self.branch, file_path=str(email_path), commit_message=self.title, content=content, )
def cmd_standalone(project_folder, platform, api, test_platform_args, editor): base = _cmd_base(project_folder, platform, editor) base.extend([ pss(f''' ssh -i ~/.ssh/id_rsa_macmini -o "StrictHostKeyChecking=no" bokken@$BOKKEN_DEVICE_IP "export UPM_REGISTRY={VAR_UPM_REGISTRY}; echo \$UPM_REGISTRY; cd ~/{REPOSITORY_NAME}/{TEST_PROJECTS_DIR}/{project_folder} && ~/{REPOSITORY_NAME}/{TEST_PROJECTS_DIR}/{project_folder}/utr {test_platform_args}OSX --testproject=/Users/bokken/{REPOSITORY_NAME}/{TEST_PROJECTS_DIR}/{project_folder} --editor-location=/Users/bokken/.Editor --artifacts_path=/Users/bokken/{REPOSITORY_NAME}/{TEST_PROJECTS_DIR}/{project_folder}/{PATH_TEST_RESULTS} --timeout=2400{_get_extra_utr_arg(project_folder)}" UTR_RESULT=$? mkdir -p {TEST_PROJECTS_DIR}/{project_folder}/{PATH_TEST_RESULTS}/ scp -i ~/.ssh/id_rsa_macmini -o "StrictHostKeyChecking=no" -r bokken@$BOKKEN_DEVICE_IP:/Users/bokken/{REPOSITORY_NAME}/{TEST_PROJECTS_DIR}/{project_folder}/{PATH_TEST_RESULTS}/ {TEST_PROJECTS_DIR}/{project_folder}/{PATH_TEST_RESULTS}/ exit $UTR_RESULT''') ]) return base
def cmd_standalone(project_folder, platform, api, test_platform_args): base = _cmd_base(project_folder, platform["components"]) base.extend([ pss(f''' ssh -i ~/.ssh/id_rsa_macmini -o "StrictHostKeyChecking=no" bokken@$BOKKEN_DEVICE_IP \'cd ~/{REPOSITORY_NAME}/{TEST_PROJECTS_DIR}/{project_folder} && ~/{REPOSITORY_NAME}/{TEST_PROJECTS_DIR}/{project_folder}/utr {test_platform_args}OSX --testproject=/Users/bokken/{REPOSITORY_NAME}/{TEST_PROJECTS_DIR}/{project_folder} --editor-location=/Users/bokken/.Editor --artifacts_path=/Users/bokken/{REPOSITORY_NAME}/{TEST_PROJECTS_DIR}/{project_folder}/{PATH_TEST_RESULTS} --timeout=2400\' UTR_RESULT=$? mkdir -p {TEST_PROJECTS_DIR}/{project_folder}/{PATH_TEST_RESULTS}/ scp -i ~/.ssh/id_rsa_macmini -o "StrictHostKeyChecking=no" -r bokken@$BOKKEN_DEVICE_IP:/Users/bokken/{REPOSITORY_NAME}/{TEST_PROJECTS_DIR}/{project_folder}/{PATH_TEST_RESULTS}/ {TEST_PROJECTS_DIR}/{project_folder}/{PATH_TEST_RESULTS}/ exit $UTR_RESULT''') ]) return base
def cmd_standalone(project_folder, platform, api, test_platform_args): base = _cmd_base(project_folder, platform["components"]) base.extend([ f'%ANDROID_SDK_ROOT%\platform-tools\\adb.exe connect %BOKKEN_DEVICE_IP%', f'powershell %ANDROID_SDK_ROOT%\platform-tools\\adb.exe devices', f'NetSh Advfirewall set allprofiles state off', pss(f''' set ANDROID_DEVICE_CONNECTION=%BOKKEN_DEVICE_IP% utr --suite=playmode --platform=Android --editor-location=WindowsEditor --artifacts_path={PATH_TEST_RESULTS} --player-load-path={PATH_PLAYERS} --scripting-backend=il2cpp --timeout=1200''' ), f'start %ANDROID_SDK_ROOT%\platform-tools\\adb.exe kill-server' ]) return base
def _cmd_base(project_folder, platform, utr_flags, editor): return [ f'curl -s {UTR_INSTALL_URL}.bat --output {TEST_PROJECTS_DIR}/{project_folder}/utr.bat', f'pip install unity-downloader-cli --index-url {UNITY_DOWNLOADER_CLI_URL} --upgrade', f'cd {TEST_PROJECTS_DIR}/{project_folder} && unity-downloader-cli { get_unity_downloader_cli_cmd(editor, platform["os"], cd=True) } {"".join([f"-c {c} " for c in platform["components"]])} --wait --published-only', pss(f''' git rev-parse HEAD | git show -s --format=%%cI > revdate.tmp set /p GIT_REVISIONDATE=<revdate.tmp echo %GIT_REVISIONDATE% del revdate.tmp cd {TEST_PROJECTS_DIR}/{project_folder} && utr {" ".join(utr_flags)}''') ]
def _cmd_base(project, platform, utr_calls, editor): base = [ f'curl -s {UTR_INSTALL_URL}.bat --output {TEST_PROJECTS_DIR}/{project["folder"]}/utr.bat', f'choco install unity-downloader-cli -y -s https://artifactory.prd.it.unity3d.com/artifactory/api/nuget/unity-choco-local', f'NetSh Advfirewall set allprofiles state off', f'cd {TEST_PROJECTS_DIR}/{project["folder"]} && unity-downloader-cli { get_unity_downloader_cli_cmd(editor, platform["os"], cd=True) } {"".join([f"-c {c} " for c in platform["components"]])} --wait --published-only', ] for utr_args in utr_calls: base.append( pss(f''' git rev-parse HEAD | git show -s --format=%%cI > revdate.tmp set /p GIT_REVISIONDATE=<revdate.tmp echo %GIT_REVISIONDATE% del revdate.tmp''')) if 'HDRP_PerformanceTests' in project['name']: base.append(f'git checkout %GIT_BRANCH%') base.append( pss(f''' cd {TEST_PROJECTS_DIR}/{project["folder"]} && utr {" ".join(utr_args)}''' )) return base
def get_job_definition(self, editors, agent, target_branch, target_branch_editor_ci, abv): dependencies = [] for editor in editors: if str(editor['track']).lower() == 'custom-revision': continue dependencies.append( f'{editor_pinning_filepath()}#{editor_job_id_merge_revisions(editor["track"], abv)}' ) commands = [ f'sudo pip3 install pipenv --index-url https://artifactory.prd.it.unity3d.com/artifactory/api/pypi/pypi/simple', # Remove when the image has this preinstalled. f'python3 -m pipenv install --dev', f'curl -L https://artifactory.prd.it.unity3d.com/artifactory/api/gpg/key/public | sudo apt-key add -', f'sudo sh -c "echo \'deb https://artifactory.prd.it.unity3d.com/artifactory/unity-apt-local bionic main\' > /etc/apt/sources.list.d/unity.list"', f'sudo apt-get update', pss( f''' if [[ "$GIT_BRANCH" != "{target_branch_editor_ci }" ]]; then echo "Should run on '{ target_branch_editor_ci }' but is running on '$GIT_BRANCH'" exit 1 fi''' ), # This should never run on anything other than stable. If you try it then it will fail f'git config --global user.name "*****@*****.**"', # TODO f'git config --global user.email "*****@*****.**"', # TODO f'git checkout {target_branch}', f'git pull', f'pipenv run python3 .yamato/ruamel/build.py', f'git add .yamato/*.yml', f'git commit -m "[CI] Updated .ymls to new revision" --allow-empty', f'git push' ] # construct job job = YMLJob() if abv: job.set_name(f'Merge all [ABV] [CI]') job.set_trigger_on_expression( f'push.branch eq "{target_branch_editor_ci}" AND push.changes.any match "**/_latest_editor_versions*.metafile"' ) else: job.set_name(f'Merge all [no ABV] [no CI]') job.set_agent(agent) job.add_var_custom('CI', True) job.add_dependencies(dependencies) job.add_commands(commands) return job
def _cmd_base(project_folder, platform, utr_flags, editor): return [ f'curl -s {UTR_INSTALL_URL} --output {TEST_PROJECTS_DIR}/{project_folder}/utr', f'chmod +x {TEST_PROJECTS_DIR}/{project_folder}/utr', f'ssh -i ~/.ssh/id_rsa_macmini -o "StrictHostKeyChecking=no" bokken@$BOKKEN_DEVICE_IP "bash -lc \'pip3 install unity-downloader-cli --user --index-url {UNITY_DOWNLOADER_CLI_URL} --upgrade\'"', f'scp -i ~/.ssh/id_rsa_macmini -o "StrictHostKeyChecking=no" -r $YAMATO_SOURCE_DIR bokken@$BOKKEN_DEVICE_IP:~/{REPOSITORY_NAME}', f'scp -i ~/.ssh/id_rsa_macmini -o "StrictHostKeyChecking=no" ~/.ssh/id_rsa_macmini bokken@$BOKKEN_DEVICE_IP:~/.ssh/id_rsa_macmini', f'ssh -i ~/.ssh/id_rsa_macmini -o "StrictHostKeyChecking=no" bokken@$BOKKEN_DEVICE_IP \'$(/usr/local/bin/python3 -m site --user-base)/bin/unity-downloader-cli { get_unity_downloader_cli_cmd(editor, platform["os"], git_root=True) } {"".join([f"-c {c} " for c in platform["components"]])} --wait --published-only\'', pss(f''' ssh -i ~/.ssh/id_rsa_macmini -o "StrictHostKeyChecking=no" bokken@$BOKKEN_DEVICE_IP "export UPM_REGISTRY={VAR_UPM_REGISTRY}; echo \$UPM_REGISTRY; cd ~/{REPOSITORY_NAME}/{TEST_PROJECTS_DIR}/{project_folder} && ~/{REPOSITORY_NAME}/{TEST_PROJECTS_DIR}/{project_folder}/utr {" ".join(utr_flags)}" UTR_RESULT=$? mkdir -p {TEST_PROJECTS_DIR}/{project_folder}/{PATH_TEST_RESULTS}/ scp -i ~/.ssh/id_rsa_macmini -o "StrictHostKeyChecking=no" -r bokken@$BOKKEN_DEVICE_IP:/Users/bokken/{REPOSITORY_NAME}/{TEST_PROJECTS_DIR}/{project_folder}/{PATH_TEST_RESULTS}/ {TEST_PROJECTS_DIR}/{project_folder}/{PATH_TEST_RESULTS}/ exit $UTR_RESULT''') ]
def cmd_standalone(project, platform, api, test_platform, editor, build_config, color_space): base = [f'curl -s {UTR_INSTALL_URL} --output utr', f'chmod +x ./utr'] utr_calls = get_repeated_utr_calls(test_platform, platform, api, build_config, color_space, project["folder"]) for utr_args in utr_calls: base.append( pss(f''' export GIT_REVISIONDATE=`git rev-parse HEAD | git show -s --format=%cI` ./utr {" ".join(utr_args)}''')) return base
def create_app_interface_reporter_mr(self, reports, email_schema, email_body, reports_path): labels = ['automerge'] prefix = 'app-interface-reporter' target_branch = 'master' now = datetime.now() ts = now.strftime("%Y%m%d%H%M%S") isodate = now.isoformat() short_date = now.strftime('%Y-%m-%d') branch_name = 'app-interface-reporter-{}'.format(ts) commit_message = '[{}] reports for {}'.format( prefix, isodate ) self.create_branch(branch_name, target_branch) actions = [ { 'action': 'create', 'file_path': report['file_path'], 'content': report['content'], } for report in reports ] self.create_commit(branch_name, commit_message, actions) # add a new email to be picked up by email-sender msg = 'add email notification' email_path = f"data{reports_path}/emails/{branch_name}.yml" email = { '$schema': email_schema, 'labels': {}, 'name': branch_name, 'subject': f"[{prefix}] reports for {short_date}", 'to': { 'aliases': ['all-service-owners'] }, 'body': pss(email_body) } content = '---\n' + \ yaml.dump(email, Dumper=yaml.RoundTripDumper) self.create_file(branch_name, email_path, msg, content) return self.create_mr(branch_name, target_branch, commit_message, labels=labels)
def process(self, gitlab_cli): # add key to deleteKeys list to be picked up by aws-iam-keys raw_file = gitlab_cli.project.files.get(file_path=self.path, ref=self.main_branch) content = yaml.load(raw_file.decode(), Loader=yaml.RoundTripLoader) content.setdefault("deleteKeys", []) content["deleteKeys"].append(self.key) new_content = "---\n" new_content += yaml.dump(content, Dumper=yaml.RoundTripDumper) msg = "Add key to deleteKeys list to be picked up by aws-iam-keys" gitlab_cli.update_file( branch_name=self.branch, file_path=self.path, commit_message=msg, content=new_content, ) # add a new email to be picked up by email-sender with open(BODY_TEMPLATE) as file_obj: body_template = Template(file_obj.read(), keep_trailing_newline=True, trim_blocks=True) body = body_template.render(ACCOUNT=self.account, ACCESS_KEY=self.key) with open(EMAIL_TEMPLATE) as file_obj: email_template = Template(file_obj.read(), keep_trailing_newline=True, trim_blocks=True) email_name = f"{self.account}-{self.key}" ref = self.path[4:] if self.path.startswith("data") else self.path content = email_template.render(NAME=email_name, SUBJECT=self.title, AWS_ACCOUNTS=[ref], BODY=pss(body)) email_path = Path( "data") / "app-interface" / "emails" / f"{email_name}.yml" gitlab_cli.create_file( branch_name=self.branch, file_path=str(email_path), commit_message=self.title, content=content, )
def cmd_standalone(project_folder, platform, api, test_platform, editor, build_config, color_space): utr_args = extract_flags(test_platform["utr_flags"], platform["name"], api["name"], build_config, color_space, project_folder) scripting_backend = build_config["scripting_backend"] api_level = build_config["api_level"] base = [ f'curl -s {UTR_INSTALL_URL} --output utr', f'chmod +x ./utr', pss(f''' export GIT_REVISIONDATE=`git rev-parse HEAD | git show -s --format=%cI` ./utr {" ".join(utr_args)}''') ] return base
def cmd_not_standalone(project_folder, platform, api, test_platform_args): return [ f'git clone [email protected]:unity/utr.git {TEST_PROJECTS_DIR}/{project_folder}/utr', f'ssh -i ~/.ssh/id_rsa_macmini -o "StrictHostKeyChecking=no" bokken@$BOKKEN_DEVICE_IP "bash -lc \'pip3 install --user unity-downloader-cli --extra-index-url https://artifactory.internal.unity3d.com/api/pypi/common-python/simple --upgrade\'"', f'scp -i ~/.ssh/id_rsa_macmini -o "StrictHostKeyChecking=no" -r $YAMATO_SOURCE_DIR bokken@$BOKKEN_DEVICE_IP:~/{REPOSITORY_NAME}', f'scp -i ~/.ssh/id_rsa_macmini -o "StrictHostKeyChecking=no" ~/.ssh/id_rsa_macmini bokken@$BOKKEN_DEVICE_IP:~/.ssh/id_rsa_macmini', f'ssh -i ~/.ssh/id_rsa_macmini -o "StrictHostKeyChecking=no" bokken@$BOKKEN_DEVICE_IP \'/Users/bokken/Library/Python/3.7/bin/unity-downloader-cli --source-file ~/{REPOSITORY_NAME}/{PATH_UNITY_REVISION} {"".join([f"-c {c} " for c in platform["components"]])} --wait --published-only\'', pss(f''' set GIT_BRANCH=$GIT_BRANCH set GIT_REVISION=$GIT_REVISION set YAMATO_JOB_ID=$YAMATO_JOB_ID ssh -i ~/.ssh/id_rsa_macmini -o "StrictHostKeyChecking=no" bokken@$BOKKEN_DEVICE_IP 'cd ~/{REPOSITORY_NAME}/{TEST_PROJECTS_DIR}/{project_folder} && ~/{REPOSITORY_NAME}/{TEST_PROJECTS_DIR}/{project_folder}/utr/utr { test_platform_args } --testproject=/Users/bokken/{REPOSITORY_NAME}/{TEST_PROJECTS_DIR}/{project_folder} --editor-location=/Users/bokken/.Editor --artifacts_path=/Users/bokken/{REPOSITORY_NAME}/{TEST_PROJECTS_DIR}/{project_folder}/{PATH_TEST_RESULTS}' UTR_RESULT=$? mkdir -p {TEST_PROJECTS_DIR}/{project_folder}/{PATH_TEST_RESULTS}/ scp -i ~/.ssh/id_rsa_macmini -o "StrictHostKeyChecking=no" -r bokken@$BOKKEN_DEVICE_IP:/Users/bokken/{REPOSITORY_NAME}/{TEST_PROJECTS_DIR}/{project_folder}/{PATH_TEST_RESULTS}/ {TEST_PROJECTS_DIR}/{project_folder}/{PATH_TEST_RESULTS}/ exit $UTR_RESULT''') ]
def cmd_standalone(project_folder, platform, api, test_platform_args): return [ f'curl -s {UTR_INSTALL_URL} --output utr', f'chmod +x ./utr', f'scp -i ~/.ssh/id_rsa_macmini -o "StrictHostKeyChecking=no" -r ../{REPOSITORY_NAME}/ bokken@$BOKKEN_DEVICE_IP:~/{REPOSITORY_NAME}', f'scp -i ~/.ssh/id_rsa_macmini -o "StrictHostKeyChecking=no" ~/.ssh/id_rsa_macmini bokken@$BOKKEN_DEVICE_IP:~/.ssh/id_rsa_macmini', pss(f''' export GIT_BRANCH=$GIT_BRANCH export GIT_REVISION=$GIT_REVISION export YAMATO_JOB_ID=$YAMATO_JOB_ID export YAMATO_JOBDEFINITION_NAME=$YAMATO_JOBDEFINITION_NAME export YAMATO_PROJECT_ID=$YAMATO_PROJECT_ID ssh -i ~/.ssh/id_rsa_macmini -o "StrictHostKeyChecking=no" bokken@$BOKKEN_DEVICE_IP -T "./utr {test_platform_args}OSX --player-load-path=~/{REPOSITORY_NAME}/{PATH_PLAYERS} --artifacts_path=~/{REPOSITORY_NAME}/build/{PATH_TEST_RESULTS} --player-connection-ip=127.0.0.1" UTR_RESULT=$? mkdir -p build/{PATH_TEST_RESULTS}/ scp -i ~/.ssh/id_rsa_macmini -o "StrictHostKeyChecking=no" -r bokken@$BOKKEN_DEVICE_IP:~/{REPOSITORY_NAME}/build/{PATH_TEST_RESULTS}/ build/{PATH_TEST_RESULTS}/ exit $UTR_RESULT''') ]
def cmd_standalone(project_folder, platform, api, test_platform, editor, build_config, color_space): utr_args = extract_flags(test_platform["utr_flags"], platform["name"], api["name"], build_config, color_space, project_folder) base = [ f'curl -s {UTR_INSTALL_URL}.bat --output utr.bat', f'%ANDROID_SDK_ROOT%\platform-tools\\adb.exe connect %BOKKEN_DEVICE_IP%', f'powershell %ANDROID_SDK_ROOT%\platform-tools\\adb.exe devices', f'NetSh Advfirewall set allprofiles state off', pss(f''' set ANDROID_DEVICE_CONNECTION=%BOKKEN_DEVICE_IP% utr {" ".join(utr_args)}'''), f'start %ANDROID_SDK_ROOT%\platform-tools\\adb.exe kill-server' ] return base
def cmd_editmode(project, platform, api, test_platform, editor, build_config, color_space): base = [ f'brew tap --force-auto-update unity/unity [email protected]:unity/homebrew-unity.git', f'brew install unity/unity/unity-downloader-cli', f'unity-downloader-cli { get_unity_downloader_cli_cmd(editor, platform["os"]) } {"".join([f"-c {c} " for c in platform["components"]])} --wait --published-only', f'curl -s {UTR_INSTALL_URL} --output utr', f'chmod +x ./utr' ] utr_calls = get_repeated_utr_calls(test_platform, platform, api, build_config, color_space, project["folder"]) for utr_args in utr_calls: base.append( pss(f''' export GIT_REVISIONDATE=`git rev-parse HEAD | git show -s --format=%cI` ./utr {" ".join(utr_args)}''')) base = add_project_commands(project) + base return base