Как провалить сборку AppCenter на код завершения скрипта? - PullRequest
1 голос
/ 21 февраля 2020

У меня есть куча скриптов, которые вызываются при вызове appcenter-pre-build. sh. Например, один из них - простая проверка, чтобы увидеть, существует ли текущий тег ветки в хранилище.

  #!/usr/bin/env bash

  set -e # Exit immediately if a command exits with a non-zero status (failure)

  # 1 Fetch tags
  git fetch --tags

  # See if the tag exists
  if git tag --list | egrep -q "^$VERSION_TAG$"
  then
    echo "Error: Found tag. Exiting."
    exit 1
  else
    git tag $VERSION_TAG
    git push origin $VERSION_TAG
  fi

Если тег найден, я хочу прервать сборку в AppCenter и завершить сбоем. Это прекрасно работало, когда я запускал все через Xcode Server, но по какой-то причине я не могу понять, как прервать сборку при сбое моего скрипта. Я не вижу много документации по этому конкретному вопросу, и люди из AppCenter в Microsoft отводят мне приятное время.

Каждый имеет опыт работы с этим и / или знает, как отказать в сборке AppCenter из их сценарии? Заранее спасибо за ваши мысли!

1 Ответ

1 голос
/ 21 февраля 2020

Ладно, разобрался. Похоже, что отправка запроса curl для отмены сборки с помощью переменной env "$ APPCENTER_BUILD_ID" решает проблему. Выход из сценария с ненулевым значением НЕ работает внутри AppCenter.

Вот пример того, что делать. Я просто поместил его в специальный скрипт "cancelAppCenterBuild. sh" и назвал его вместо моих выходов.

  API_TOKEN="<YourAppToken>"
  OWNER_NAME="<YourOwnerOrOrganizationName>"
  APP_NAME="<YourAppName>"

  curl -iv "https://appcenter.ms/api/v0.1/apps/$OWNER_NAME/$APP_NAME/builds/$APPCENTER_BUILD_ID" \
  -X PATCH \
  -d "{\"status\":\"cancelling\"}" \
  --header 'Content-Type: application/json' \
  --header "X-API-Token: $API_TOKEN"

Совет Pro: если вы когда-либо переименовывали свое приложение, у серверов AppCenter возникают проблемы ссылаясь на новое имя. Я получал 403 с запрещенным сообщением. Возможно, вам придется изменить имя приложения на прежнее или просто перестроить приложение с нуля в AppCenter.

...