2016-12-27 91 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