Как утверждать, если создание задания было успешным в сценарии оболочки - PullRequest
0 голосов
/ 18 февраля 2020

Я использую следующий скрипт оболочки для создания задания потока данных GCP. Этот скрипт затем вызывается из действий github для развертывания всякий раз, когда код передается мастеру. Проблема в том, что команда, которую я использую для создания задания потока данных, только выдает INFO, что задание создается, и это все.

Одна из недавних фиксаций завершилась неудачно, поскольку у задания не было соответствующей корзины хранения, но в этом сценарии не было журналов или указаний на то, что рабочий процесс github не выполнен (т. Е. Задание не было создано)

set -x
#get job_name of existing running jobs
job_info=$(gcloud dataflow jobs list --status=active --filter="name:${TOPICNAME}-projectname-*")
job_id=$(echo $job_info|awk '{print $7}')
git_sha=$(git rev-parse --short HEAD)

python -m createpipeline --project_id ${GOOGLE_PROJECT_ID} --topic_name ${TOPICNAME} --job_name "${TOPICNAME}-projectname-${git_sha}"
#use the job_name of existing running job to drain it out
if [ ! -z "$job_id" ]; then
      gcloud dataflow jobs drain ${job_id}
fi

В случае сбоя задания я получаю вывод такого рода из команды python -m

INFO:root:Creating dataflow pipeline for Topic: projects/projectname/topics/topicname Output Table: projectname:dataset.table

Но если задание выполнено успешно, базовая структура выводит много деталей. В конце этих подробностей (строк) он печатает

INFO:apache_beam.runners.dataflow.internal.apiclient:Create job: <Job
 createTime: '2020-02-18T20:39:44.885028Z'
 currentStateTime: '1970-01-01T00:00:00Z'
 id: '2020-02-18_12_39_43-1111222233333334444'
 location: '<gcp_region>'
 name: 'job_name'
 projectId: 'project_name'
 stageStates: []
 startTime: '2020-02-18T20:39:44.885028Z'
 steps: []
 tempFiles: []
 type: TypeValueValuesEnum(JOB_TYPE_STREAMING, 2)>

Итак, вопросы

  1. Как можно извлечь id и job_name из вышеприведенного вывода ( Либо все должно быть в порядке)
  2. если имя задания или идентификатор не существует, я хотел бы завершить работу сценария оболочки, чтобы действия github знали, что это не удалось. в противном случае скрипт должен сообщить действиям github, что он прошел
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...