Безопасен от внешнего мира, но гибок внутри вашей команды

GitHub Actions - это платформа CI / CD

Короче говоря, GitHub Actions - это платформа / сервис CI / CD, подобный Travis CI и CircleCI. Он отличается:

  1. Он создан GitHub, поэтому лучше интегрируется с платформой GitHub.
  2. Это компонентный CI / CD, поэтому вы можете повторно использовать и / или собирать CI / CD других людей.

Нам нравится CI / CD (или, по крайней мере, CD), потому что он упрощает процесс подготовки среды

Говоря о доставке приложений, мы, как разработчики, ненавидим несколько вещей:

  1. Получение файлов учетных данных для подписи кода (особенно для мобильных разработчиков).
  2. Получение файлов учетных данных сервера.
  3. Получение секретов сервера.
  4. Настройка файлов конфигурации для указания на 1, 2 и 3.
  5. После выполнения пунктов 1, 2, 3 и 4. Вы поняли, что пора обновить ноутбук, и вам придется делать все заново.

Хммм ... похоже, что большая часть нашей головной боли связана с учетными данными.

Учетные данные хранятся в репозиториях GitHub.

Приятно, что с GitHub Actions у нас наконец-то появился способ хранить наши учетные данные вместе с нашим кодом, чтобы другие люди не видели их, даже когда репозиторий является общедоступным. В наших репозиториях это выглядит так:

Вот небольшая демонстрация того, как добавляется секрет:

Безопасная загрузка файла учетных данных не поддерживается

Из видео вы могли заметить, что формат значения должен быть простым текстом. В большинстве случаев этого достаточно, но бывают случаи, когда ваши учетные данные представляют собой файл JSON или файл PEM и т. Д.

SWAG: используйте частный репозиторий. Он имеет контроль доступа и доступен в основном через CI / CD.

Хммм ... Может быть, использовать другой репозиторий?

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

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

Шаг 1. Создайте новый частный репозиторий

Пожалуйста, дважды убедитесь, что это личное. Иначе это будет бессмысленно.

Шаг 2: зафиксируйте файлы учетных данных в репозитории

В конце этого шага ваш репозиторий может выглядеть примерно так:

Шаг 3: получите личный токен доступа GitHub

Токен личного доступа используется для доступа к частным репозиториям. Вы можете получить его отсюда:

Шаг 4: добавьте токен личного доступа в качестве секрета

Примечание: даже если репозиторий является общедоступным, секреты остаются частными (доступными только для владельца).

Шаг 5: используйте частный репозиторий в GitHub Actions

В качестве примера возьмем подпись пакета Android. Для подписания пакета Android необходим ключевой файл. Невозможно добавить ключ как текстовый секрет, потому что это не ASCII (я правильно знаю?).

Вот как клонировать частный репозиторий (второй подчеркнут красным) с токеном доступа (первый подчеркнут красным) в рабочем процессе Действия GitHub:

Теперь у нас есть весь частный репозиторий, в котором будут находиться все наши файлы учетных данных (см. Рисунок выше, например, как они используются). LGTM, проблема решена.

Его необязательно использовать с GitHub Actions, но вам следует

Этот подход не обязательно использовать с GitHub Actions. Пока служба CI позволяет хранить текстовый секрет, вы можете его использовать. Тем не менее, я настоятельно рекомендую GitHub Actions, потому что он позволяет централизовать среду разработки (а также дешевле, лол).

Теперь вы знаете все секреты. Удачного кодирования;)