Рубрики
Uncategorized

Мне просто не нравятся действия GitHub.

Действия GitHub кажутся потрясающей концепцией, но реализация просто не сделала это для меня. Tagged с GitHub, DevOps, автоматизацией.

Я попробовал, я действительно сделал. Кто -нибудь чувствует то же самое?

Github Actions была запущена в 2018 году как средство автоматизации повторяющихся задач. В 2019 году он был обновлен с помощью первоклассной поддержки непрерывной интеграции (CI) и непрерывной доставки (CD). Предпосылка звучит очень «GitHub»:

  • Разработчики могут писать действия, которые живут в репо GitHub.
  • Другие разработчики могут потреблять действия в своих собственных рабочих процессах на основе событий GitHub и веб -крюков.
  • Разработка и развертывание программного обеспечения включает в себя работу на разных платформах, поэтому интеграции являются первоклассными.
  • Все это «просто работает», с отполированным опытом адаптации, который может создавать и проверять многие проекты без ручной конфигурации.

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

Я начал с выбора Docker Build/Push Шаблон рабочего процесса и его редактирование. Я хотел сохранить версии инструментов в соответствии с тем, которые используются для локальной разработки, поэтому я использовал Docker-Compose Build Чтобы построить изображения. Я выдвинул свой новый рабочий процесс, и он потерпел неудачу из -за опечатки. Никакой большой, я исправил опечатку и дал ему минуту, чтобы рабочий процесс запустил, но это не так. Может, мне нужно было нажать кнопку повторного запуска?

Нет никаких средств для легкости вызвать повторный процесс рабочего процесса против кончика ветви. Мало того, что это проблема при работе с переходными сбоями (например, проблемой сети во время установки npm или docker pull ), но также затрудняет разработку новых рабочих процессов или тестирования в существующих рабочих процессах.

Можно обойти это, добавив дополнительные триггеры, но это похоже на странное упущение.

Это ограничение кажется общим для многих платформ CI: нет очевидного способа запустить рабочий процесс локально, чтобы убедиться, что он работает. Сторонние инструменты, такие как Акт проделал большую работу, чтобы приблизительно окружающую среду, но это нелегко сделать это точно.

ACT работает, выполняя ваши рабочие процессы действия GitHub в контейнере. Минимальные изображения Debian, которые он использует по умолчанию, не сможет запустить большинство рабочих процессов, но можно указать свое собственное изображение контейнера. К сожалению, Изображения, которые пытаются воспроизвести среду действий стать очень большим. Контейнер Docker 12 ГБ не идеален.

Чтобы понять, почему мы должны заглянуть за занавеску. К счастью, Изображения, используемые виртуальной средой являются открытым исходным кодом. Небольшое сверление, мы можем увидеть Много сценариального программного обеспечения Анкет

Доставка так много SDK по умолчанию, безусловно, улучшает опыт работы в большинстве случаев — это уменьшит количество настроек, необходимой для начала просмотра результатов. Я полагаю, что стандартизация облегчает разработчикам действий внедрить новые инструменты сборки, личинки и тестирования в экосистему.

К сожалению, это также снижает предсказуемость сборки, поскольку разработчики мало контролируют то, что установлено в окружающей среде. Это имеет пару эффектов:

  • В рабочих процессах CI становится все труднее устранение сбоев теста, так как труднее повторить окружающую среду локально. Это также делает ваши сборки более восприимчивыми к изменениям упаковки, внесенных к изображениям, так как есть гораздо больше изменений для проверки, чтобы определить основную причину сбоя.
  • При сборке и публикации рабочих процессов затрудняют доверие, что среда безопасна. Надежно аудит GitHub все программное обеспечение, которое они устанавливают?

Чтобы обойти это, я мог выполнить все свои действия в контейнерах. Это будет означать потерять доступ к существующей библиотеке действий, за исключением тех, которые напрямую взаимодействуют с Docker. Я думаю, что есть лучший способ.

Минимальное базовое изображение с надстройками SDK?

Вместо или, может быть, в дополнение к большим изображениям со всеми предварительно установившимися временем пробега, почему бы не отправить легкое базовое изображение с возможностью добавлять только необходимые компоненты? Рабочие процессы могут указать, что они хотят SDK следующим образом:

name: Docker images

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  build:
    runs-on: ubuntu-latest
    # Just list your SDKs here
    runs-with:
      - docker

    steps:
      - uses: actions/checkout@v2
      - name: Build the Docker images
        run: docker-compose -f docker-compose.build.yml build

Разработчики действий также должны быть в состоянии указать зависимости SDK, поэтому пользователи действий могут оставаться не замечать внутренней работы.

Поскольку этого еще не существует, давайте пока перейдем к другому варианту …

Действия обеспечивают возможность размещать собственных бегунов, чтобы ваши задания могли работать на вашей собственной инфраструктуре и были запускаются из GitHub. Это позволило бы нам создать собственное минимальное изображение!

К сожалению, в отличие от таких услуг, как Buildkite, который может Запустите свои задания по интеграции по своей собственной подписке AWS , Действия не дают возможности динамически распределять агентов по мере необходимости.

Я хотел бы видеть поддержку для предоставления бегунов из моих собственных изображений в моей подписке Azure или AWS. Несмотря на то, что дополнительный контроль над окружающей средой более дорогим, позволил бы мне работать вокруг многих из этих проблем.

Я знаю свои зависимости, и я бы предпочел создавать и развернуть свои приложения в максимально минимальной среде, чем имел столько предварительного установки. Я думаю, что у Github Actions есть некоторые серьезные перспективы, даже несмотря на то, что они не предоставляют более минимальную среду для выполнения задач. Дизайн может быть расширен, чтобы сделать его более жизнеспособным для расширенных вариантов использования:

  • Поддержка запуска рабочих процессов в общедоступных облачных средах обеспечит использование пользовательских изображений гораздо более доступными и обеспечит довольно элегантный обходной путь для большинства проблем здесь.
  • Более минимальное базовое изображение должно быть доступно, по крайней мере, в качестве опции. Я думаю, что будет трудно задним числом добавить поддержку SDK, так как действия необходимо обновить, чтобы подробно описать их зависимости или риск просто не работать, что наносит ущерб опыту адаптации для большинства.
  • Более простой способ запуска прогонов рабочего процесса из Интернета был бы идеальным. Возможно, редакторы для файлов рабочего процесса должны запустить запуск автоматически, хотя нам по-прежнему нужна возможность повторно запустить задания, которые могли потерпеть неудачу из-за переходных сбоев.

*[AWS]: Amazon Web Services *[CD]: непрерывная доставка * [CI]: непрерывная интеграция *[SDK]: Комплект для разработки программного обеспечения

Оригинал: «https://dev.to/lukecarrier/i-just-don-t-like-github-actions-3h64»