О внешнем хранилище для GitHub Actions
GitHub Actions использует внешнее хранилище BLOB-объектов для хранения данных, созданных рабочими процессами. Сохраненные данные включают журналы рабочих процессов, кэши и артефакты сборки, отправленные пользователем. Дополнительные сведения см. в разделе Начало работы с GitHub Actions for GitHub Enterprise Server.
Существует два варианта настройки GitHub Enterprise Server для подключения к внешнему поставщику хранилища:
- OpenID Connect (OIDC)
- Традиционная проверка подлинности на основе учетных данных с помощью секретов
Мы рекомендуем использовать OIDC, если это возможно, так как вам не потребуется создавать конфиденциальные и длительные секреты учетных данных для поставщика хранилища и риск их предоставления. После определения доверия с помощью OIDC поставщик облачных хранилищ автоматически выдает маркеры доступа с коротким сроком действия к экземпляр GitHub Enterprise Server, которые автоматически истекают.
Совет
Если GitHub Actions он уже настроен и вам нужно переместить данные в новую корзину, аккаунт или регион на Amazon S3, смотрите Миграция внешнего хранилища GitHub Actions.
Необходимые компоненты
Примечание.
Единственные GitHubподдерживаемые провайдеры хранения S3 — Amazon S3 и MinIO Gateway for NAS.
Существуют другие продукты хранения, совместимые с API S3, которые партнеры GitHub самостоятельно проверяются как работа с GitHub Actions на GitHub Enterprise Server. Дополнительные сведения см. в репозитории партнеров службы хранилища GHES.
Для продуктов хранения, проверенных с помощью программы партнерства по технологии GitHub , поставщик хранилища отвечает за поддержку и документацию по использованию продукта хранилища с GitHub Actions.
Перед активацией GitHub Actionsубедитесь, что вы выполнили следующие шаги:
-
Создайте контейнер Amazon S3 для хранения данных, создаваемых при выполнении рабочих процессов.
-
Ознакомьтесь с требованиями к оборудованию для GitHub Actions. Дополнительные сведения см. в разделе Начало работы с GitHub Actions for GitHub Enterprise Server.
-
Протокол TLS должен быть настроен для домена GitHub Enterprise Server. Дополнительные сведения см. в разделе Настройка TLS.
Примечание.
Настоятельно рекомендуется настроить TLS в GitHub Enterprise Server с сертификатом, подписанным доверенным центром авторизации. Хотя самозаверяющий сертификат можно использовать, необходимо дополнительно настроить локальные средства выполнения тестов, и не рекомендуется использовать сертификат для рабочих сред.
-
Если у вас есть http-прокси-сервер **, настроенный **на GitHub:
-
Необходимо добавить
.localhostи127.0.0.1``::1в список исключений **** прокси-сервера HTTP (в этом порядке). -
Если расположение внешнего хранилища не является маршрутизируемым, необходимо также добавить URL-адрес внешнего хранилища в список исключений.
Дополнительные сведения об изменении параметров прокси-сервера см. в разделе Настройка сервера веб-прокси исходящего трафика.
-
Если вы используете OIDC для подключения к поставщику хранилища, необходимо предоставить следующие URL-адреса службы маркеров OIDC на экземпляр GitHub Enterprise Server в общедоступном Интернете:
https://HOSTNAME/_services/token/.well-known/openid-configuration https://HOSTNAME/_services/token/.well-known/jwksЭто гарантирует, что поставщик хранилища может связаться с экземпляр GitHub Enterprise Server для проверки подлинности.
Включение GitHub Actions с Amazon S3 через OIDC (рекомендую)
Чтобы настроить GitHub Enterprise Server использование OIDC с коркетом Amazon S3, сначала нужно создать провайдера Amazon OIDC, затем создать роль управления идентификацией и доступом (IAM) и, наконец GitHub Enterprise Server , настроить так, чтобы использовать провайдера и роль для доступа к вашему корзину S3.
1. Создание поставщика Amazon OIDC
-
Возьмите отпечаток пальца для экземпляр GitHub Enterprise Server.
-
Используйте следующую команду OpenSSL, чтобы получить отпечаток пальца SHA1 для экземпляр GitHub Enterprise Server, замените
HOSTNAMEна публичное имя хоста для экземпляр GitHub Enterprise ServerShell openssl s_client -connect HOSTNAME:443 < /dev/null 2>/dev/null | openssl x509 -fingerprint -noout -sha1 -in /dev/stdin
openssl s_client -connect HOSTNAME:443 < /dev/null 2>/dev/null | openssl x509 -fingerprint -noout -sha1 -in /dev/stdinНапример:
openssl s_client -connect my-ghes-host.example.com:443 < /dev/null 2>/dev/null | openssl x509 -fingerprint -noout -sha1 -in /dev/stdinКоманда возвращает отпечаток в следующем формате:
SHA1 Fingerprint=AB:12:34:56:78:90:AB:CD:EF:12:34:56:78:90:AB:CD:EF:12:34:56 -
Удалите двоеточие (
:) из значения отпечатка и сохраните значение для последующего использования.Например, отпечаток значения, возвращаемого на предыдущем шаге:
AB1234567890ABCDEF1234567890ABCDEF123456
-
-
Используя AWS CLI, используйте следующую команду для создания OIDC-провайдера для экземпляр GitHub Enterprise Server. Замените
HOSTNAMEна публичное имя хоста для экземпляр GitHub Enterprise Server, иTHUMBPRINTна значение отпечатка пальца из предыдущего шага.Shell aws iam create-open-id-connect-provider \ --url https://HOSTNAME/_services/token \ --client-id-list "sts.amazonaws.com" \ --thumbprint-list "THUMBPRINT"
aws iam create-open-id-connect-provider \ --url https://HOSTNAME/_services/token \ --client-id-list "sts.amazonaws.com" \ --thumbprint-list "THUMBPRINT"Например:
Shell aws iam create-open-id-connect-provider \ --url https://my-ghes-host.example.com/_services/token \ --client-id-list "sts.amazonaws.com" \ --thumbprint-list "AB1234567890ABCDEF1234567890ABCDEF123456"
aws iam create-open-id-connect-provider \ --url https://my-ghes-host.example.com/_services/token \ --client-id-list "sts.amazonaws.com" \ --thumbprint-list "AB1234567890ABCDEF1234567890ABCDEF123456"Дополнительные сведения об установке AWS CLI см. в документации по Amazon.
Предупреждение
Если сертификат изменится экземпляр GitHub Enterprise Server в будущем, необходимо обновить значение отпечатка пальца в провайдере Amazon OIDC, чтобы траст OIDC продолжал работать.
2. Создание роли IAM
-
Откройте консоль AWS и перейдите в службу управления удостоверениями и доступом (IAM).
-
В меню слева в разделе "Управление доступом" щелкните "Роли", а затем нажмите кнопку "Создать роль".
-
На странице "Выбор доверенной сущности" введите следующие параметры:
- Для параметра "Тип доверенной сущности" щелкните веб-удостоверение.
- В разделе "Поставщик удостоверений" используйте раскрывающееся меню "Выбор поставщика " и выберите поставщик OIDC, созданный на предыдущих шагах. Оно должно называться
HOSTNAME/_services/token, гдеHOSTNAME— публичное имя хозяина для экземпляр GitHub Enterprise Server. - Для параметра "Аудитория" выберите
sts.amazonaws.com.
-
Нажмите кнопку Далее.
-
На странице "Добавление разрешений" используйте фильтр для поиска и выбора
AmazonS3FullAccessполитики. -
Нажмите кнопку Далее.
-
На странице "Имя, проверка и создание" введите имя роли и нажмите кнопку "Создать роль".
-
На странице "Роли" IAM выберите только что созданную роль.
-
В разделе "Сводка" обратите внимание на значение ARN для роли, так как это необходимо позже.
-
Перейдите на вкладку "Отношения доверия", а затем нажмите кнопку "Изменить политику доверия".
-
Измените политику доверия, чтобы добавить новое
subутверждение. Значение дляConditionдолжно совпадать с следующим примером, заменяяHOSTNAMEна публичное имя хоста для экземпляр GitHub Enterprise Server:... "Condition": { "StringEquals": { "HOSTNAME/_services/token:aud": "sts.amazonaws.com", "HOSTNAME/_services/token:sub": "HOSTNAME" } } ...Например:
... "Condition": { "StringEquals": { "my-ghes-host.example.com/_services/token:aud": "sts.amazonaws.com", "my-ghes-host.example.com/_services/token:sub": "my-ghes-host.example.com" } } ... -
Щелкните " Обновить политику".
3. Настройте GitHub Enterprise Server подключение к Amazon S3 с помощью OIDC
-
В учетной записи администратора GitHub Enterprise Server, в правом верхнем углу любой страницы щелкните .
-
Если вы еще не на странице "Администратор сайта", в левом верхнем углу щелкните Администратор сайта.
-
На боковой панели " "Администратор сайта" щелкните Консоль управления.
-
На боковой панели "Параметры" щелкните "Действия".
-
В разделе "GitHub Actions" выберите "Включить действия GitHub".
-
В разделе "Артефакт и хранилище журналов" рядом с "Amazon S3" нажмите кнопку "Настройка".
-
В разделе "Проверка подлинности" выберите OpenID Connect (OIDC) и введите значения для хранилища:
- Контейнер AWS S3: имя контейнера S3.
- Роль AWS: ARN для роли, созданной в предыдущих процедурах. Например:
arn:aws:iam::123456789:role/my-role-name. - Регион AWS: регион AWS для контейнера. Например:
us-east-1.
-
Нажмите кнопку "Проверить параметры хранилища"**, **чтобы проверить параметры хранилища.
Если есть ошибки, проверяющие параметры хранилища, проверьте параметры с поставщиком хранилища и повторите попытку.
-
На боковой панели "Параметры" нажмите кнопку "Сохранить параметры".
Примечание.
Сохранение параметров в Консоль управления перезапускает системные службы, что может привести к простоям, видимым пользователем.
-
Подождите завершения запуска конфигурации.
Включение GitHub Actions хранилища Amazon S3 с помощью ключей доступа
-
С помощью консоли AWS или CLI создайте ключ доступа для контейнера хранилища. GitHub Actions требуются следующие разрешения для ключа доступа, который будет обращаться к контейнеру:
s3:PutObjects3:GetObjects3:ListBucketMultipartUploadss3:ListMultipartUploadPartss3:AbortMultipartUploads3:DeleteObjects3:ListBucketkms:GenerateDataKey(если включено шифрование Key Management Service (KMS))kms:Decrypt(если включено шифрование Key Management Service (KMS))
Дополнительные сведения об управлении ключами доступа AWS см. в документации по управлению удостоверениями и доступом AWS.
-
В учетной записи администратора GitHub Enterprise Server, в правом верхнем углу любой страницы щелкните .
-
Если вы еще не на странице "Администратор сайта", в левом верхнем углу щелкните Администратор сайта.
-
На боковой панели " "Администратор сайта" щелкните Консоль управления.
-
На боковой панели "Параметры" щелкните "Действия".
-
В разделе "GitHub Actions" выберите "Включить действия GitHub".
-
В разделе "Артефакт и хранилище журналов" рядом с "Amazon S3" нажмите кнопку "Настройка".
-
В разделе "Проверка подлинности" выберите "Учетные данные" и введите сведения о контейнере хранилища:
-
URL-адрес службы AWS. URL-адрес службы для контейнера. Например, если контейнер S3 был создан в регионе
us-west-2, это значение должно бытьhttps://s3.us-west-2.amazonaws.com. -
Контейнер AWS S3: имя контейнера S3.
-
Ключ доступа AWS S3 и секретный ключ AWS S3: идентификатор ключа доступа AWS и секретный ключ для контейнера.
-
-
Нажмите кнопку "Проверить параметры хранилища"**, **чтобы проверить параметры хранилища.
Если есть ошибки, проверяющие параметры хранилища, проверьте параметры с поставщиком хранилища и повторите попытку.
-
На боковой панели "Параметры" нажмите кнопку "Сохранить параметры".
Примечание.
Сохранение параметров в Консоль управления перезапускает системные службы, что может привести к простоям, видимым пользователем.
-
Подождите завершения запуска конфигурации.
Следующие шаги
После успешного завершения выполнения конфигурации GitHub Actions будет включен на GitHub. Для следующих действий, таких как управление разрешениями доступа GitHub Actions и добавление локальных средств выполнения, вернитесь в Начало работы с GitHub Actions for GitHub Enterprise Server.