Skip to main content

Устранение неполадок GitHub Actions для предприятия

Устранение распространенных проблем, возникающих при использовании GitHub Actions в GitHub Enterprise Server.

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

Site administrators can troubleshoot GitHub Actions issues and modify GitHub Enterprise Server configurations.

Проверка работоспособности GitHub Actions

Вы можете проверить работоспособность GitHub Actions на ваш экземпляр GitHub Enterprise Server с помощью служебной ghe-actions-check программы командной строки. Дополнительные сведения см. в разделе [AUTOTITLE и Служебные программы командной строки](/admin/configuration/configuring-your-enterprise/accessing-the-administrative-shell-ssh).

Настройка локальных средств выполнения при использовании самозаверяющего сертификата для GitHub Enterprise Server

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

Установка сертификата на компьютере средства выполнения

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

Инструкции по установке сертификата см. в документации по операционной системе средства выполнения.

Настройка Node.JS для использования сертификата

Большинство действий пишутся на JavaScript и выполняются с помощью Node.js, так что хранилище сертификатов операционной системы не используется. Чтобы локальное приложение средства выполнения использовало сертификат, необходимо задать переменную среды NODE_EXTRA_CA_CERTS на компьютере средства выполнения.

Переменную среды можно задать как системную переменную среды или объявить ее в файле, вызываемом .env в каталоге приложений для локального запуска (то есть каталог, в который вы скачали и распаковали программное обеспечение runner).

Например:

NODE_EXTRA_CA_CERTS=/usr/share/ca-certificates/extra/mycertfile.crt

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

Настройка контейнеров Docker для использования сертификата

Если в рабочих процессах используются действия контейнеров Docker или контейнеры служб, возможно, потребуется также установить сертификат в образе Docker в дополнение к описанному выше заданию переменной среды.

Настройка параметров прокси-сервера HTTP для GitHub Actions

Если у вас есть http-прокси-сервер **, настроенный **на GitHub:

  • Необходимо добавить .localhostи 127.0.0.1``::1 в список исключений **** прокси-сервера HTTP (в этом порядке).
  • Если расположение внешнего хранилища не является маршрутизируемым, необходимо также добавить URL-адрес внешнего хранилища в список исключений.

Дополнительные сведения об изменении параметров прокси-сервера см. в разделе "Настройка сервера веб-прокси исходящего трафика".

Если эти параметры настроены неправильно, при настройке или изменении конфигурации GitHub Actions могут возникнуть такие ошибки, как Resource unexpectedly moved to https://IP-ADDRESS.

Средства выполнения не подключаются к GitHub Enterprise Server с новым именем узла

Warning

Не изменяйте имя узла для GitHub Enterprise Server после начальной настройки. Изменение имени узла приведет к непредвиденному поведению, вплоть до сбоя экземпляров и недопустимости ключей безопасности пользователей. Если вы изменили имя узла для экземпляра и столкнулись с проблемами, обратитесь к Поддержка GitHub Enterprise или Сведения о поддержке уровня "Премиум" GitHub.

Если вы развертываете GitHub Enterprise Server в среде с новым именем узла и старое имя узла больше не разрешается в экземпляр, локальные средства выполнения не смогут подключиться к старому имени узла и не будут выполнять задания.

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

  • В каталоге приложения локального средства выполнения измените файлы .runner и .credentials, заменив все упоминания старого имени узла новым именем узла, а затем перезапустите приложение локального средства выполнения.
  • Удалите средство выполнения из GitHub Enterprise Server с помощью пользовательского интерфейса и добавьте его повторно. Дополнительные сведения см. в разделе [AUTOTITLE и Удаление локальных средств выполнения](/actions/hosting-your-own-runners/managing-self-hosted-runners/adding-self-hosted-runners).

Зависание заданий, ограничения на использование памяти и загрузку ЦП в GitHub Actions

GitHub Actions состоит из нескольких служб, работающих на ваш экземпляр GitHub Enterprise Server. По умолчанию для этих служб настроены ограничения на использование ЦП и памяти по умолчанию, которые подходят для большинства случаев. Однако при активном использовании GitHub Actions может потребоваться настроить эти параметры.

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

1. Проверка общего использования ЦП и памяти в консоли управления

Откройте консоль управления и используйте панель мониторинга для проверки графиков общего потребления ресурсов ЦП и памяти в разделе "Работоспособность системы". Дополнительные сведения см. в разделе Troubleshooting GitHub Actions for your enterprise.

Если общее использование ЦП "Работоспособность системы" близко к 100%, или нет свободного объема памяти, то ваш экземпляр GitHub Enterprise Server выполняется в емкости и необходимо увеличить масштаб. Дополнительные сведения см. в разделе Увеличение ресурсов ЦП или памяти.

2. Проверка использования ЦП и памяти заданиями Nomad в консоли управления

Если общий уровень использования ЦП и памяти в разделе "Работоспособность системы" в порядке, прокрутите страницу панели мониторинга вниз до раздела "Задания Nomad" и просмотрите графики "Процент загрузки ЦП" и "Использование памяти".

Каждый график соответствует одной службе. Для служб GitHub Actions обратите внимание на следующее:

  • mps_frontend
  • mps_backend
  • token_frontend
  • token_backend
  • actions_frontend
  • actions_backend

Если какие-либо из служб имеют уровень загрузки ЦП 100 % или близко к этому либо если память почти исчерпана (объем по умолчанию 2 ГБ), то, возможно, необходимо выделить дополнительные ресурсы для этих служб. Запишите службы, для которых достигнут или почти достигнут предел ресурсов.

3. Увеличение объема ресурсов, выделенных для служб с исчерпанными ресурсами

  1. Войдите в административную оболочку с помощью SSH. Дополнительные сведения см. в разделе Доступ к административной оболочке (SSH).

  2. Выполните следующую команду, чтобы узнать, какие ресурсы доступны для выделения:

    nomad node status -self
    

    В выходных данных найдите раздел "Выделенные ресурсы". Похоже на следующий пример:

    Allocated Resources
    CPU              Memory          Disk
    7740/49600 MHZ   23 GiB/32 GiB   4.4 GiB/7.9 GiB
    

    Для ЦП и памяти здесь показано, сколько ресурсов выделено для общего числа всех служб (левое значение) и сколько ресурсов доступно (правое значение). В приведенном выше примере выделено 23 ГиБ памяти из 32 ГиБ. Это значит, что для выделения доступно 9 ГиБ памяти.

    Warning

    Будьте осторожны, чтобы не выделить больше общего объема доступных ресурсов, или службы не будут запускаться.

  3. Перейдите в каталог /etc/consul-templates/etc/nomad-jobs/actions.

    cd /etc/consul-templates/etc/nomad-jobs/actions
    

    В этом каталоге есть три файла, которые соответствуют службам GitHub Actions, перечисленным выше:

    • mps.hcl.ctmpl
    • token.hcl.ctmpl
    • actions.hcl.ctmpl
  4. Для служб, которые требуют корректировки, откройте соответствующий файл и найдите группу resources, которая выглядит следующим образом:

    resources {
      cpu = 512
      memory = 2048
      network {
        port "http" { }
      }
    }
    

    Для ресурсов ЦП значения указаны в МГц, а для ресурсов памяти — в МБ.

    Например, чтобы увеличить максимальный объем ресурсов в приведенном выше примере до 1 ГГц для ЦП и до 4 ГБ для памяти, измените значения следующим образом:

    resources {
      cpu = 1024
      memory = 4096
      network {
        port "http" { }
      }
    }
    
  5. Сохраните и закройте файл.

  6. Выполните ghe-config-apply, чтобы применить изменения.

    Если при выполнении команды ghe-config-apply вы получаете такой результат, как Failed to run nomad job '/etc/nomad-jobs/<name>.hcl', скорее всего, было выделено больше ресурсов ЦП или памяти, чем доступно. В этом случае снова измените файлы конфигурации, уменьшив выделяемый объем ресурсов ЦП или памяти, а затем повторно выполните команду ghe-config-apply.

  7. После применения конфигурации выполните команду ghe-actions-check , чтобы убедиться в том, что службы GitHub Actions работают.

Устранение неполадок при активации существующих рабочих процессов в Dependabot

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

По умолчанию запуски рабочих процессов GitHub Actions, которые активируются Dependabot при наступлении событий push, pull_request, pull_request_review или pull_request_review_comment, обрабатываются так, как если бы они были открыты из вилки репозитория. Это означает, что в отличие от рабочих процессов, активированных другими субъектами, они получают GITHUB_TOKEN только для чтения и не имеют доступа к секретам, которые обычно доступны. Это приводит к сбою любых рабочих процессов, которые пытаются выполнить запись в репозиторий при активации из Dependabot.

Существует три способа решения этой проблемы.

  1. Вы можете изменить рабочие процессы так, чтобы они больше не активировались из Dependabot, с помощью следующего выражения: if: github.actor != 'dependabot[bot]'. Дополнительные сведения см. в разделе Оценка выражений в рабочих процессах и действиях.
  2. Вы можете изменить рабочие процессы так, чтобы использовался двухэтапный процесс с событием pull_request_target, которое не имеет таких ограничений. Дополнительные сведения см. в разделе Автоматизация Dependabot с помощью GitHub Actions.
  3. Вы можете предоставить рабочим процессам, активируемым из Dependabot, доступ к секретам и разрешить термину permissions увеличивать область GITHUB_TOKEN по умолчанию. Дополнительные сведения см. в статье "Предоставление рабочих процессов, активированных Dependabot доступа к секретам и повышенным разрешениям ниже.

Предоставление рабочим процессам, активируемым из Dependabot, доступа к секретам и повышенному уровню разрешений

  1. Войдите в административную оболочку с помощью SSH. Дополнительные сведения см. в разделе Доступ к административной оболочке (SSH).

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

    ghe-config app.actions.disable-dependabot-enforcement true
    
  3. Примените конфигурацию.

    ghe-config-apply
    
  4. Вернитесь на GitHub Enterprise Server.

Устранение неполадок, связанных с пакетными действиями, в GitHub Actions

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

A part of the Actions setup had problems and needs an administrator to resolve.

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

  1. Определите организацию, которая будет хранить официальные объединенные действия и шаблоны рабочих процессов. Можно создать новую организацию или использовать существующую.

  2. Войдите в административную оболочку с помощью SSH. Дополнительные сведения см. в разделе Доступ к административной оболочке (SSH).

  3. Чтобы назначить организацию в качестве расположения для хранения пакетных действий, используйте команду ghe-config, заменив ORGANIZATION на имя своей организации.

    ghe-config app.actions.actions-org ORGANIZATION
    

    and:

    ghe-config app.actions.github-org ORGANIZATION
    
  4. Чтобы добавить пакетные действия в организацию, отмените SHA.

    ghe-config --unset 'app.actions.actions-repos-sha1sum'
    
  5. Примените конфигурацию.

    ghe-config-apply
    

После выполнения этих действий можно возобновить настройку GitHub Actions в Начало работы с GitHub Actions для сервера GitHub Enterprise.