Azure 批处理作业启动任务失败

Azure batch job start tasks failed

我正在使用 Azure 批处理 python API。当我创建新作业时,我看到退出代码 128(附图片)。我怎么知道这是什么原因?

我正在使用此代码创建新工作:

def wrap_commands_in_shell(commands):
    return "/bin/bash -c 'set -e; set -o pipefail; {}; wait'".format(';'.join(commands))

job_tasks = ['cd /mnt/batch/tasks/shared/ && git clone https://github.com/cryptobiu/OSPSI.git',
             'cd /mnt/batch/tasks/shared/OSPSI && git checkout cloud',
             'cd /mnt/batch/tasks/shared/OSPSI && cmake CMake',
             'cd /mnt/batch/tasks/shared/OSPSI && mkdir -p assets'
             ]

job_creation_information = batch.models.JobAddParameter(job_id, batch.models.PoolInformation(pool_id=pool_id),
                                                        job_preparation_task=batch.models.JobPreparationTask(
                                                            command_line=wrap_commands_in_shell(
                                                                job_tasks),
                                                            run_elevated=True,
                                                            wait_for_success=True
                                                        )
                                                        )

要进行诊断,您可以使用 Azure Batch 资源管理器或通过代码使用 SDK 查看 Azure 门户中失败的作业准备任务的 stderr.txtstdout.txt。如果您查看哪个节点 运行 作业准备任务,请导航至该节点,然后导航至作业目录。在作业目录下,您应该看到一个 jobpreparation 目录。在该目录中将有 stderr.txtstdout.txt.

关于退出代码,有一些潜在的问题可能会导致此问题:

  1. 您是否安装了 gitcmake 和任何其他依赖项作为启动任务的一部分?
  2. 当我尝试导航到:https://github.com/cryptobiu/OSPSI 时收到 404。这个回购协议存在吗?如果它是私有存储库,您是否提供了正确的凭据?

关于您的 job_tasks 数组的几点注意事项:

  • 您不应该对路径进行硬编码 /mnt/batch/tasks/shared。 "shared" 目录的路径在 Linux 发行版之间可能不同。您应该改用环境变量 $AZ_BATCH_NODE_SHARED_DIR。您可以查看 Azure Batch 预填充环境变量的完整列表 here.
  • 您不需要为每个命令都进入目录,只需执行一次。您可以将 job_tasks 重写为: ['cd $AZ_BATCH_NODE_SHARED_DIR', 'TODO: INSERT YOUR COMMANDS TO SETUP AUTH WITH GITHUB FOR PRIVATE REPO', 'git clone https://github.com/cryptobiu/OSPSI.git', 'cd OSPSI', 'cmake CMake', 'mkdir -p assets']