Skip to main content

Включение GitHub Actions с хранением Amazon S3

Вы можете включить GitHub ActionsGitHub Enterprise Server и использовать хранилище Amazon S3 для хранения данных, генерируемых при запуске рабочих процессов.

Кто может использовать эту функцию?

Site administrators can enable GitHub Actions and configure enterprise settings.

О внешнем хранилище для 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

  1. Возьмите отпечаток пальца для экземпляр GitHub Enterprise Server.

    1. Используйте следующую команду OpenSSL, чтобы получить отпечаток пальца SHA1 для экземпляр GitHub Enterprise Server, замените HOSTNAME на публичное имя хоста для экземпляр GitHub Enterprise Server

      Shell
      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
      
    2. Удалите двоеточие (:) из значения отпечатка и сохраните значение для последующего использования.

      Например, отпечаток значения, возвращаемого на предыдущем шаге:

      AB1234567890ABCDEF1234567890ABCDEF123456
      
  2. Используя 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"
    

    Например:

    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 CLI см. в документации по Amazon.

    Предупреждение

    Если сертификат изменится экземпляр GitHub Enterprise Server в будущем, необходимо обновить значение отпечатка пальца в провайдере Amazon OIDC, чтобы траст OIDC продолжал работать.

2. Создание роли IAM

  1. Откройте консоль AWS и перейдите в службу управления удостоверениями и доступом (IAM).

  2. В меню слева в разделе "Управление доступом" щелкните "Роли", а затем нажмите кнопку "Создать роль".

  3. На странице "Выбор доверенной сущности" введите следующие параметры:

    • Для параметра "Тип доверенной сущности" щелкните веб-удостоверение.
    • В разделе "Поставщик удостоверений" используйте раскрывающееся меню "Выбор поставщика " и выберите поставщик OIDC, созданный на предыдущих шагах. Оно должно называться HOSTNAME/_services/token, где HOSTNAME — публичное имя хозяина для экземпляр GitHub Enterprise Server.
    • Для параметра "Аудитория" выберите sts.amazonaws.com.
  4. Нажмите кнопку Далее.

  5. На странице "Добавление разрешений" используйте фильтр для поиска и выбора AmazonS3FullAccess политики.

  6. Нажмите кнопку Далее.

  7. На странице "Имя, проверка и создание" введите имя роли и нажмите кнопку "Создать роль".

  8. На странице "Роли" IAM выберите только что созданную роль.

  9. В разделе "Сводка" обратите внимание на значение ARN для роли, так как это необходимо позже.

  10. Перейдите на вкладку "Отношения доверия", а затем нажмите кнопку "Изменить политику доверия".

  11. Измените политику доверия, чтобы добавить новое 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"
      }
    }
    ...
    
  12. Щелкните " Обновить политику".

3. Настройте GitHub Enterprise Server подключение к Amazon S3 с помощью OIDC

  1. В учетной записи администратора GitHub Enterprise Server, в правом верхнем углу любой страницы щелкните .

  2. Если вы еще не на странице "Администратор сайта", в левом верхнем углу щелкните Администратор сайта.

  3. На боковой панели " "Администратор сайта" щелкните Консоль управления.

  4. На боковой панели "Параметры" щелкните "Действия".

  5. В разделе "GitHub Actions" выберите "Включить действия GitHub".

  6. В разделе "Артефакт и хранилище журналов" рядом с "Amazon S3" нажмите кнопку "Настройка".

  7. В разделе "Проверка подлинности" выберите OpenID Connect (OIDC) и введите значения для хранилища:

    • Контейнер AWS S3: имя контейнера S3.
    • Роль AWS: ARN для роли, созданной в предыдущих процедурах. Например: arn:aws:iam::123456789:role/my-role-name.
    • Регион AWS: регион AWS для контейнера. Например: us-east-1.
  8. Нажмите кнопку "Проверить параметры хранилища"**, **чтобы проверить параметры хранилища.

    Если есть ошибки, проверяющие параметры хранилища, проверьте параметры с поставщиком хранилища и повторите попытку.

  9. На боковой панели "Параметры" нажмите кнопку "Сохранить параметры".

    Примечание.

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

  10. Подождите завершения запуска конфигурации.

Включение GitHub Actions хранилища Amazon S3 с помощью ключей доступа

  1. С помощью консоли AWS или CLI создайте ключ доступа для контейнера хранилища. GitHub Actions требуются следующие разрешения для ключа доступа, который будет обращаться к контейнеру:

    • s3:PutObject
    • s3:GetObject
    • s3:ListBucketMultipartUploads
    • s3:ListMultipartUploadParts
    • s3:AbortMultipartUpload
    • s3:DeleteObject
    • s3:ListBucket
    • kms:GenerateDataKey (если включено шифрование Key Management Service (KMS))
    • kms:Decrypt (если включено шифрование Key Management Service (KMS))

    Дополнительные сведения об управлении ключами доступа AWS см. в документации по управлению удостоверениями и доступом AWS.

  2. В учетной записи администратора GitHub Enterprise Server, в правом верхнем углу любой страницы щелкните .

  3. Если вы еще не на странице "Администратор сайта", в левом верхнем углу щелкните Администратор сайта.

  4. На боковой панели " "Администратор сайта" щелкните Консоль управления.

  5. На боковой панели "Параметры" щелкните "Действия".

  6. В разделе "GitHub Actions" выберите "Включить действия GitHub".

  7. В разделе "Артефакт и хранилище журналов" рядом с "Amazon S3" нажмите кнопку "Настройка".

  8. В разделе "Проверка подлинности" выберите "Учетные данные" и введите сведения о контейнере хранилища:

    • URL-адрес службы AWS. URL-адрес службы для контейнера. Например, если контейнер S3 был создан в регионе us-west-2, это значение должно быть https://s3.us-west-2.amazonaws.com.

      Дополнительные сведения см. в документации по AWS.

    • Контейнер AWS S3: имя контейнера S3.

    • Ключ доступа AWS S3 и секретный ключ AWS S3: идентификатор ключа доступа AWS и секретный ключ для контейнера.

  9. Нажмите кнопку "Проверить параметры хранилища"**, **чтобы проверить параметры хранилища.

    Если есть ошибки, проверяющие параметры хранилища, проверьте параметры с поставщиком хранилища и повторите попытку.

  10. На боковой панели "Параметры" нажмите кнопку "Сохранить параметры".

    Примечание.

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

  11. Подождите завершения запуска конфигурации.

Следующие шаги

После успешного завершения выполнения конфигурации GitHub Actions будет включен на GitHub. Для следующих действий, таких как управление разрешениями доступа GitHub Actions и добавление локальных средств выполнения, вернитесь в Начало работы с GitHub Actions for GitHub Enterprise Server.