Настроить пользовательский (self-hosted) воркер для SourceCraft
Пользовательские (self-hosted) воркеры — личные серверы пользователей, как виртуальные, так и физические, на которых выполняются CI/CD-процессы. В этом случае для процессов будет доступно окружение пользовательского сервера.
На пользовательские воркеры не действуют ограничения на объем вычислительных ресурсов, а также не расходуется квота на суммарное время работы CI/CD-процессов.
Подробнее см. Воркеры.
Чтобы настроить пользовательский воркер:
- Подготовьте окружение.
- Создайте конфигурационный файл воркера.
- Запустите воркер.
- Выполните задание на воркере.
Подготовьте окружение
-
Создайте персональный токен (PAT) с ролями Repository maintainer или Repository admin и доступом к репозиториям, в которых вы хотите запускать CI/CD-процессы на пользовательском воркере.
Важно
Не рекомендуется предоставлять доступ ко всем репозиториям организации.
-
Скачайте исполняемый файл
self-hosted-processor
пользовательского воркера для вашей операционной системы и архитектуры:-
Примечание
Исполняемый файл для Windows работает только с набором инструментов MinGW.
-
В macOS/Linux выдайте разрешения на запуск файла:
chmod +x <путь_к_исполняемому_файлу>
-
Добавьте исполняемый файл в
PATH
:macOS/LinuxWindowsexport PATH=$PATH:<путь_к_исполняемому_файлу>
$env:Path += ";<путь_к_исполняемому_файлу>"
Создайте конфигурационный файл воркера
Вы можете автоматически подготовить конфигурационный файл воркера с помощью команды self-hosted-processor init
.
Поддерживаются следующие аргументы:
Ключ |
Описание |
Значение по умолчанию |
|
Максимальное количество заданий, которые могут параллельно выполняться воркером. |
|
|
Путь до директории, в которой будут создаваться временные рабочие директории заданий, выполняемых воркером. |
Директория для временных файлов, например |
|
Персональный токен (PAT) для аутентификации в сервисе. С его помощью воркер получает задания, отчитывается о прогрессе, передает в SourceCraft логи и артефакты. |
Не установлено. |
|
Список тегов. На воркере будут выполняться задания, множество тегов которых содержится в множестве тегов воркера. |
|
|
Опция для отключения верификации сертификата. Используйте, если на вашем устройстве отсутствует подходящий корневой сертификат (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
.