Есть ли способ вручную запустить существующих ботов Xcode с помощью сценариев оболочки? У меня есть ручной бот, и я хотел бы запустить его на основе определенных критериев пользовательской логики.
Использование скрипта для запуска бота Xcode
Ответы (2)
да.
Вам нужно будет сделать несколько вещей: во-первых, я собираюсь назвать IP-адрес вашего Xcode-сервера XCS_IP, обычно это localhost, если вы находитесь на машине, на которой работает Xcode-сервер.
Узнать ID бота: в Терминале запустить
curl -k "https://XCS_IP:20343/api/bots"
. Скопируйте вывод в какой-нибудь редактор и найдите значение ключа_id
для вашего бота, будет что-то вроде6b3de48352a8126ce7e08ecf85093613
. Назовем егоBOT_ID
.Запустите интеграцию, запустив
curl -k -X POST -u "username:password" "https://XCS_IP:20343/api/bots/BOT_ID/integrations" -i
Где username
и password
— учетные данные пользователя, которому разрешено создавать ботов на сервере, подойдет администратор.
Если вас интересуют подробности, у меня есть приложение на Swift, которое использует этот API и многое другое: https://github.com/czechboy0/Buildasaur/blob/master/BuildaCIServer/XcodeServer.swift#L324
И ознакомьтесь с моей статьей о том, как найти «документацию» по API Xcode Server: http://honzadvorsky.com/blog/2015/5/4/under-the-hood-of-xcode-server.
ТЛ; ДР? На вашем Mac посмотрите /Applications/Xcode.app/Contents/Developer/usr/share/xcs/xcsd/routes/routes.js
, где вы можете найти доступные API.
Надеюсь, это помогло.
Apple добавила документацию по API-интерфейсу сервера Xcode, который можно использовать для запуска ботов.
Ниже приведен пример кода того, как вы можете создать скрипт Python, который запускает бота.
import requests
xcodeIP = '1.2.3.4.5'
def main():
botName = "name of bot"
runBot(botName)
def runBot(botName):
requests.post(xcodeIP + '/api/bots/' + getBot(botName)["_id"] + '/integrations', auth=('username', 'password'), verify=False)
def getBot(botName):
botIDRequest = requests.get(xcodeIP + '/api/bots', auth=('username', 'password'), verify=False)
bots = botIDRequest.json()["results"]
for bot in bots:
if bot["name"] == botName:
return bot
if __name__ == "__main__":
main()