Если вы не следили за этим, возможно, вам будет полезно ознакомиться с предыдущими публикациями Знакомство с API запросов VersionOne и Работа с API VersionOne. Краткая версия заключается в том, что V1 не так просто, как должно быть, выявлять рабочие элементы, данные которых не совсем точны, и, следовательно, по крайней мере искажает метрики, от которых вы зависите. Спасибо Брэндону Коллу за напоминание закрыть это кодом, который вы все можете использовать.

Частично задержка с выпуском этой последней части заключалась в том, что я не хотел просто выбрасывать какой-то код и желать вам всего наилучшего, чтобы он заработал. Я хотел помочь вам заставить его работать в контексте, к которому у всех нас есть доступ. Чтобы продолжить, если у вас еще нет своего собственного экземпляра VersionOne, вам нужно перейти на страницы VersionOne и запросить бесплатную пробную версию. После того, как вы его получите, не медлите, так как срок его действия истекает через 30 дней. Приносим извинения и благодарим CollabNet за непреднамеренную помощь в этом. После того, как у вас есть серверный экземпляр, следуйте инструкциям в разделе Работа с…, чтобы получить значение ключа API и ‹базовый URL-адрес сервера›.

Обзор решения

Я создал небольшой серверный сервис, используя Node 8.x (Carbon LTS), который работает в контейнере Docker. Вы можете запустить его без контейнера, если хотите, на своем рабочем столе, но я хотел, чтобы он работал в контейнере, чтобы он был готов к запуску в другом месте, если вы предпочитаете (мы запускаем его как контейнер Fargate на AWS). Этот сервис предназначен только для API, и вы можете использовать пользовательский интерфейс MVP, который я сделал, или создать что-то, что вы предпочитаете.

Другая часть — это очень простой пользовательский интерфейс, который использует Vue, чтобы предложить несколько простых в использовании пользовательских элементов. Это очень POC/MVP — даже не используется Vue CLI для построения всех типичных вещей. Ты получаешь то, за что платишь. ;-)

Сначала мы заставим службу работать, а затем подключим к ней пользовательский интерфейс.

Наладить санитарно-гигиеническую службу

Следуйте инструкциям в README.md в репозитории GitHub для проекта — просто не получится повторить их здесь, а потом пытаться поддерживать их в актуальном состоянии в обоих местах. Там также есть некоторое объяснение кода/подхода, если вам интересно.

Важные части резюмируются:

  1. Клонируйте проект в локальную систему.
  2. Запустите npm init, чтобы получить зависимости проекта.
  3. Установите ключ API в качестве переменной среды V1APIKEY (например, export V1APIKEY=1.Z2…Xyg=).
  4. Настройте свой v1ServerBaseUrl в config.js (не пытайтесь использовать мой, так как ваш ключ API не будет работать с ним). Сохраните config.js.
  5. Запустите npm start или команды контейнера (см. docker-cmds.txt), чтобы запустить экземпляр.

Предполагая, что к этому моменту все прошло хорошо, и что вы только что запустили npm start (вместо использования контейнера), потому что хотите приступить к работе, вы сможете нажать на конечную точку /healthcheck, чтобы убедиться, что она хотя бы прослушивает ( localhost:3000/healthcheck).

Мы прерываем эту программу для важного отступления…

Я предполагаю, что вы создали временный экземпляр V1, любезно предоставленный CollabNet, в следующих примерах/обсуждении. Потому что с этого момента речь идет о данных в вашей V1, и я не знаю, как эти данные выглядят. Временный бесплатный экземпляр от CollabNet поставляется с уровнем планирования «Образец: Компания», парой примеров команд и некоторыми примерами данных. Я предварительно установил некоторые параметры запроса, предполагая, что вы также используете образец по умолчанию V1. [Если вам нужна дополнительная помощь, мы можем поболтать, но для продолжения мне нужен какой-нибудь ЖК-дисплей.]

Тестирование вашего соединения

Предполагая, что ваш /healthcheck вернул несколько дерзкую «нормальную ситуацию», вы можете проверить подключение к V1 (и ваш ключ API), нажав localhost:3000/getteams. Вы должны увидеть что-то похожее на изображение ниже.

Если это сработало, мы можем перейти к добавлению пользовательского интерфейса. Если нет, просмотрите шаги, описанные выше, и повторите попытку.

Панель управления гигиеной, v.mvp

Сервисы и API — это прекрасно, но они не вызывают особого восторга у большинства пользователей. Справедливости ради, пользовательский интерфейс в сопутствующем репозитории GitHub — это всего лишь небольшой шаг вперед, но он может стать отправной точкой для чего-то большего или, по крайней мере, примером того, как работать с API.

README.md в репозитории, указанном выше, является лучшим местом для получения информации о том, как использовать код. Краткая версия: (1) клонируйте репозиторий в вашу систему, (2) обновите serviceUrl в load-config.js, чтобы указать, где находится служба, которую вы запустили выше. выполняется, (3) сохраните load-config.js, (4) откройте файл index.html в ваш любимый браузер (проверено только в Chrome). Вы должны увидеть что-то похожее на изображение ниже.

Примечание: это было создано для среды, в которой несколько команд используют один экземпляр V1. Получение правильного уровня планирования (объема) — это то, как мы ориентируемся на результаты для нашей команды (команд). Команды не связаны с определенным уровнем планирования в версии 1, поэтому нет разумного запроса, чтобы показать только те команды, которые подходят для уровня/области планирования. Большинство наших команд названы с префиксом организации, поэтому поле ввода «Фильтр команд» позволяет ограничить количество вариантов выбора команды. Я заполнил начальные элементы данных, чтобы они соответствовали примеру V1 по умолчанию.

Если вы это видите, дела идут хорошо. Пользовательский интерфейс запущен и подключен к вашему сервису, который отлично разговаривает с V1.

Чтобы просмотреть некоторые данные в запросах, выберите «Пример: выпуск 1.0» в качестве уровня планирования и «Пример: команда A» в качестве команды.

Элементы в результатах запроса — это все ссылки, которые будут открываться в новой вкладке при нажатии. Страница панели инструментов не будет автоматически обновляться (вероятно, нет необходимости повторно запускать все запросы) — справа есть кнопка «Обновить», которая повторно запускает только этот запрос и обновляет результаты. Продолжайте, пока все они не будут очищены — весь смысл этой панели инструментов в том, что эти элементы не проходят проверку данных.

Это о том, что важно для вас

Вы можете посмотреть на мои запросы и подумать: «Кого это волнует?». Достаточно справедливо (но люди, с которыми я работаю, явно так считают). Надеюсь, я предоставил достаточно контекста и достаточно примеров, чтобы вы могли понять, что для вас важно.

Как только я получу ранние комментарии, я внесу некоторые изменения, чтобы улучшить опыт. Комментарии, улучшающие код, будут описаны в соответствующем файле README.md на GitHub, но не здесь.

Боритесь с GIGO, убедившись, что ваши рабочие элементы находятся в хорошем состоянии данных.

Дополнение о контейнере

очень скоро… Я расскажу, как использовать контейнерные версии двух проектов.