Использование скрипта для запуска бота Xcode

Есть ли способ вручную запустить существующих ботов Xcode с помощью сценариев оболочки? У меня есть ручной бот, и я хотел бы запустить его на основе определенных пользовательских логических критериев.

2 ответа

Решение

Да.

Вам нужно будет сделать пару вещей: во-первых, я собираюсь назвать IP-адрес вашего сервера XCode XCS_IP, обычно localhost, если вы находитесь на компьютере, где работает сервер XCode.

  • Узнайте идентификатор бота: в терминале запустите 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

И зацените мою статью о том, как найти "документацию" по API Xcode Server: http://honzadvorsky.com/blog/2015/5/4/under-the-hood-of-xcode-server.

TL; DR? На вашем Mac посмотрите на /Applications/Xcode.app/Contents/Developer/usr/share/xcs/xcsd/routes/routes.js, где вы можете найти доступные API.

Надеюсь, это помогло.

Apple добавила документацию для API сервера Xcode, которую вы можете использовать для запуска ботов.

https://developer.apple.com/library/tvos/documentation/Xcode/Conceptual/XcodeServerAPIReference/index.html

Ниже приведен пример кода о том, как создать скрипт на 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()
Другие вопросы по тегам