Exemple #1
0
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
Exemple #2
0
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
Exemple #3
0
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)
Exemple #5
0
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
Exemple #8
0
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
Exemple #9
0
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
Exemple #10
0
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
Exemple #11
0
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
Exemple #12
0
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
Exemple #14
0
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
Exemple #15
0
    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,
        )
Exemple #16
0
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
Exemple #17
0
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
Exemple #18
0
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
Exemple #19
0
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)}''')
    ]
Exemple #20
0
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
Exemple #21
0
    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
Exemple #22
0
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''')
    ]
Exemple #23
0
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
Exemple #24
0
    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,
        )
Exemple #26
0
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
Exemple #27
0
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''')
    ]
Exemple #28
0
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''')
    ]
Exemple #29
0
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
Exemple #30
0
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