На прошлой неделе я внес свой вклад в RedwoodJS и впервые столкнулся с Gitpod. Gitpod позволяет открывать любую ветку git в VSCode в браузере и автоматически настраивает среду разработки. С Gitpod мы можем пропустить рутинную работу, такую ​​как проверка зависимостей, проверка веток, запуск сборки или установка инструментов. В значительной степени я разработчик; дайте мне код.

Я заполнил # 2393, чтобы изучить использование Gitpod в Telescope. cindyledev и я были назначены, так как у нее также был пиар за то же самое в AWS.

Gitpod — это облачная среда разработки, доступная из браузера или локальной IDE. Gitpod позволяет командам разработчиков описывать свою среду разработки как код и запускать настраиваемые и свежие среды разработки для каждой новой задачи полностью в облаке.

Под капотом Gitpod использует стандартное изображение в качестве основы для рабочего пространства. Уже есть много инструментов и среды выполнения, установленных из коробки. Тем не менее, это не так просто, как описать Gitpod, как вы запустите свою локальную среду разработки. Пара проблем, с которыми я столкнулся и как указал Дэвид:

  • Сервисные порты должны быть больше 1024 , текущий веб-сервер Telescope работает на порту 80.
  • Опция Ulimit не разрешена из-за проблем с безопасностью подконтейнера. Поскольку нет возможности сбросить значение в переопределяющей конфигурации, мы решили установить его не в базовой конфигурации, а в development.yml и production.yml.
  • Мы хотим использовать компоновочный файл «devlopment.yml» в качестве основы для «gitpod.yml», но, как было проверено, переопределение из «development.yml» не сработало. Казалось, что мы можем переопределить только непосредственно из «docker-compose.yml».
  • URL-адреса рабочей области Gitpod нестабильны и могут быть неожиданно изменены, поскольку рабочая область считается недолговечной. Поэтому мы хотим снова просмотреть URL-адрес Gitpod при запуске рабочей области.
  • Если мы хотим подключиться к сервису по сети, мы должны использовать URL-адрес Gitpod, назначенный порту сервиса, запустив gp url PORT. Нам нужно передать эти URL-адреса внешнему интерфейсу NextJS во время сборки.

PR

Мне удалось заставить рабочее пространство Gitpod полностью работать с интерфейсом и работающими службами. Однако, чтобы передать URL-адреса Gitpod во внешний интерфейс, я перенаправил их в Dockerfile и скопировал в переменные среды Next. Это был не идеальный подход, потому что мы предпочитаем не трогать текущую конфигурацию докера, поскольку она связана с нашей локальной и производственной средой.

После некоторого обсуждения в Slack мы решили, что я должен зарегистрировать дополнительную проблему, чтобы найти другой способ передать env-var в Next во время сборки и удалить изменения в src/web, оставив рабочую область Gitpod только частично работающей. На данный момент, если при любом коммите в Telescope открывается рабочая область, Gitpod автоматически устанавливает зависимости, создает/запускает образы и запускает сервер разработки в одном терминале, другой терминал свободен. Единственная проблема заключается в том, что интерфейс отправляет запросы на неправильные URL-адреса.

Для документации по разработке на Gitpod открыта отдельная выпуск, по которому кто-то мог извлечь некоторую информацию из этого поста.

Заключение

Этот PR больше относится к DevOps со стороны Telescope. Поскольку серверная часть Telescope разбита на множество микросервисов, интеграция Gitpod заняла больше времени, чем я ожидал. В целом, это придало мне больше уверенности в использовании Docker и Docker-compose.

Если бы у Telescope Gitpod был полностью рабочим, это было бы здорово для наших участников. Мои бесплатные 50 часов за этот месяц уже исчерпаны. Одна крутая вещь — Gitpod с открытым исходным кодом; Я хотел бы внести свой вклад в их проект в ближайшее время.