2016-12-27 43 views
0

我正在使用Azure批处理Python API。当我创建一份新工作时,我会看到退出码128(附图)。我怎么知道这是什么原因?Azure批处理作业启动任务失败

exit code error

我使用此代码创建一个新的任务:

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 
                 ) 
                 ) 

回答

2

诊断,你可以看看stderr.txtstdout.txt的作业准备任务已经失败了Azure的门户网站,使用Azure Batch Explorer或通过代码使用SDK。如果您查看哪个节点运行了作业准备任务,请导航到该节点,然后导航到作业目录。在作业目录下,您应该看到一个jobpreparation目录。在该目录中将有stderr.txtstdout.txt

关于退出代码,也有可能导致这几个潜在的问题:

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

job_tasks阵列的几个注意事项:

  • 你不应该硬编码的路径/mnt/batch/tasks/shared。这个到“共享”目录的路径在Linux发行版之间可能不一样。您应该改用环境变量$AZ_BATCH_NODE_SHARED_DIR。您可以查看Azure Batch预填充环境变量here的完整列表。
  • 你不需要cd到每个命令的目录中,你只需要做一次。你可以重写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']
+0

我的Git仓库,私人,只有授权的人才能观看。我安装了所有的依赖项(git,cmake ..)。感谢您的回复 – liorko