Skip to main content

Эта версия GitHub Enterprise Server была прекращена 2024-03-26. Исправления выпускаться не будут даже при критических проблемах безопасности. Для повышения производительности, повышения безопасности и новых функций выполните обновление до последней версии GitHub Enterprise Server. Чтобы получить справку по обновлению, обратитесь в службу поддержки GitHub Enterprise.

Выполнение заданий в контейнере

Используйте контейнер для выполнения шагов задания.

Примечание. В GitHub Enterprise Server в настоящее время не поддерживаются средства выполнения тестов, размещенные в GitHub. Дополнительные сведения о планируемой поддержке в будущем см. в GitHub public roadmap.

Обзор

Используйте jobs.<job_id>.container для создания контейнера для выполнения всех этапов задания, для которых еще не указан контейнер. При наличии этапов, которые используют действия скрипта и контейнера, действия контейнера будут выполняться как одноуровневые контейнеры в той же сети с теми же подключениями томов.

Если container не задан, все этапы будут выполняться непосредственно на узле, указанном, runs-on, если только этап не относится к действию, настроенному на выполнение в контейнере.

Примечание. Оболочка по умолчанию для этапов run внутри контейнера — sh вместо bash. Это значение может быть изменено на jobs.<job_id>.defaults.run или jobs.<job_id>.steps[*].shell.

Пример. Выполнение задания в контейнере

YAML
name: CI
on:
  push:
    branches: [ main ]
jobs:
  container-test-job:
    runs-on: ubuntu-latest
    container:
      image: node:18
      env:
        NODE_ENV: development
      ports:
        - 80
      volumes:
        - my_docker_volume:/volume_mount
      options: --cpus 1
    steps:
      - name: Check for dockerenv file
        run: (ls /.dockerenv && echo Found dockerenv) || (echo No dockerenv)

При указании только образа контейнера можно опустить ключевое слово image.

jobs:
  container-test-job:
    runs-on: ubuntu-latest
    container: node:18

Определение образа контейнера

Используйте jobs.<job_id>.container.image для определения образа Docker, который будет использоваться в качестве контейнера для выполнения действия. Значением может быть имя образа Docker Hub или имя реестра.

Определение учетных данных для реестра контейнеров

Если реестру контейнеров образа требуется проверка подлинности для извлечения образа, можно использовать jobs.<job_id>.container.credentials, чтобы настроить map для username и password. Учетные данные являются теми же значениями, которые будут предоставлены команде docker login.

Пример: определение учетных данных для реестра контейнеров

container:
  image: ghcr.io/owner/image
  credentials:
     username: ${{ github.actor }}
     password: ${{ secrets.github_token }}

Использование переменных среды с контейнером

Используйте jobs.<job_id>.container.env для задания map переменных среды в контейнере.

Предоставление сетевых портов в контейнере

Используйте jobs.<job_id>.container.ports для задания array портов для использования в контейнере.

Подключение томов в контейнере

Используйте jobs.<job_id>.container.volumes для задания array томов, которые будет использовать контейнер. Тома можно использовать для совместного использования данных между службами или другими этапами в задании. Можно указать именованные тома Docker, анонимные тома Docker или подключения привязок на узле.

Чтобы указать том, укажите путь к источнику и назначению:

<source>:<destinationPath>.

<source> — это имя тома или абсолютный путь на хост-компьютере, а <destinationPath> — это абсолютный путь в контейнере.

Пример. Подключение томов в контейнере

volumes:
  - my_docker_volume:/volume_mount
  - /data/my_data
  - /source/directory:/destination/directory

Настройка параметров ресурса контейнера

Используйте jobs.<job_id>.container.options для настройки дополнительных параметров ресурса контейнера Docker. Список параметров см. в статье "Параметры docker create".

Предупреждение. Параметры --network и --entrypoint параметры не поддерживаются.