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.txt
和 stdout.txt
。如果您查看哪个节点 运行 作业准备任务,请导航至该节点,然后导航至作业目录。在作业目录下,您应该看到一个 jobpreparation
目录。在该目录中将有 stderr.txt
和 stdout.txt
.
关于退出代码,有一些潜在的问题可能会导致此问题:
- 您是否安装了
git
、cmake
和任何其他依赖项作为启动任务的一部分?
- 当我尝试导航到: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']
我正在使用 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.txt
和 stdout.txt
。如果您查看哪个节点 运行 作业准备任务,请导航至该节点,然后导航至作业目录。在作业目录下,您应该看到一个 jobpreparation
目录。在该目录中将有 stderr.txt
和 stdout.txt
.
关于退出代码,有一些潜在的问题可能会导致此问题:
- 您是否安装了
git
、cmake
和任何其他依赖项作为启动任务的一部分? - 当我尝试导航到: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']