Настроить пользовательский (self-hosted) воркер для SourceCraft

Пользовательские (self-hosted) воркеры — личные серверы пользователей, как виртуальные, так и физические, на которых выполняются CI/CD-процессы. В этом случае для процессов будет доступно окружение пользовательского сервера.

На пользовательские воркеры не действуют ограничения на объем вычислительных ресурсов, а также не расходуется квота на суммарное время работы CI/CD-процессов.

Подробнее см. Воркеры.

Чтобы настроить пользовательский воркер:

  1. Подготовьте окружение.
  2. Создайте конфигурационный файл воркера.
  3. Запустите воркер.
  4. Выполните задание на воркере.

Подготовьте окружение

  1. Создайте персональный токен (PAT) с ролями Repository maintainer или Repository admin и доступом к репозиториям, в которых вы хотите запускать CI/CD-процессы на пользовательском воркере.

    Важно

    Не рекомендуется предоставлять доступ ко всем репозиториям организации.

  2. Скачайте исполняемый файл self-hosted-processor пользовательского воркера для вашей операционной системы и архитектуры:

  3. В macOS/Linux выдайте разрешения на запуск файла:

    chmod +x <путь_к_исполняемому_файлу>
    
  4. Добавьте исполняемый файл в PATH:

    export PATH=$PATH:<путь_к_исполняемому_файлу>
    
    $env:Path += ";<путь_к_исполняемому_файлу>"
    

Создайте конфигурационный файл воркера

Вы можете автоматически подготовить конфигурационный файл воркера с помощью команды self-hosted-processor init.

Поддерживаются следующие аргументы:

Ключ

Описание

Значение по умолчанию

-c,
--capacity

Максимальное количество заданий, которые могут параллельно выполняться воркером.

1

-r, --root-dir

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

Директория для временных файлов, например /tmp/ или /usr/tmp/.

-t,
--token

Персональный токен (PAT) для аутентификации в сервисе. С его помощью воркер получает задания, отчитывается о прогрессе, передает в SourceCraft логи и артефакты.

Не установлено.

--tags

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

[ ]

--ssl-no-verify

Опция для отключения верификации сертификата. Используйте, если на вашем устройстве отсутствует подходящий корневой сертификат (RootCA).

Отключено.
Используются корневые сертификаты, имеющиеся на устройстве.

Например, сгенерируйте конфигурацию для воркера, который параллельно может выполнять не более 3 заданий с тегами 4gb и go-builder:

self-hosted-processor init \
  --token <персональный_токен> \
  --capacity 3 \
  --tags 4gb,go-builder \
  > config.yaml

В результате будет создан файл config.yaml с конфигурацией воркера:

executor_type: shell
self_hosted:
  max_slots: 3
logger_type: json
endpoint:
  host: ci.sourcecraft.tech
  port: 443
  tls: true
tags:
- 4gb
- go-builder
auth:
  pat: <персональный_токен>

Создайте файл config.yaml со следующей конфигурацией:

executor_type: shell

self_hosted:
  # Путь до директории, в которой будут создаваться временные
  # рабочие директории заданий, выполняемых воркером
  root_dir: /Users/user1/sourcecraft
  # Максимальное количество заданий, которые могут параллельно 
  # выполняться воркером
  max_slots: 3

logger_type: json

# Адрес сервиса для получения задач и отправки логов и артефактов 
endpoint:
  host: ci.sourcecraft.tech
  port: 443
  ## Чтобы отключить верификацию сертификата, установите false
  tls: true

# Список тегов. На воркере будут выполняться задания, множество 
# тегов которых содержится в множестве тегов воркера
tags:
- 4gb
- go-builder

auth:
  # Персональный токен для аутентификации в сервисе
  pat: <персональный_токен>

Это конфигурация воркера, который параллельно может выполнять не более 3 заданий с тегами 4gb и go-builder и создавать временные рабочие директории по пути /Users/user1/sourcecraft.

Запустите воркер

Выполните команду:

self-hosted-processor run \
  --config-path <путь_к_конфигурационному_файлу>

Где --config-path — путь к конфигурационному файлу, созданному ранее. Также поддерживается краткое написание параметра — -c.

Совет

Логи воркера выводятся в стандартный поток вывода. Чтобы записывать логи в файл или передавать в сервис для сбора логов, перенаправьте вывод или используйте пайплайны |.

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

Чтобы запустить CI/CD-процесс на пользовательском воркере, в параметрах рабочего процесса (workflow) или задания (task) укажите runs_on: self-hosted.

Если в task не указан параметр runs_on, по умолчанию будет выставлен параметр из workflow:runs_on.

Пример:

workflows:
  my-awesome-workflow:
    runs_on: self-hosted
    
    tasks:
      - name: self-hosted-task
        cubes:
          - name: hello
            script:
              - echo "hello from self-hosted"

      - name: self-hosted-go-builder-task
        runs_on: [self-hosted, go-builder]
        cubes:
          - name: hello
            script:
              - echo "hello from self-hosted go builder"

В этом случае задания из рабочего процесса my-awesome-workflow, если у них не переопределен параметр runs_on, по умолчанию будут выполняться на любом из ваших пользовательских воркеров. А задание self-hosted-go-builder-task будет выполнено только на пользовательском воркере, которому при инициализации был присвоен тег go-builder.

См. также