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

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

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

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

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

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

См. также:

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

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

    Важно

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

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

    Скачать исполняемый файл self-hosted-processor для Linux ARM64

    Важно

    Linux ARM64 является нестандартной платформой для выполнения CI/CD-процессов. Это экспериментальная тестовая версия пользовательского воркера под эту платформу.

    Не рекомендуется использовать эту версию в production-окружении.

    Скачать исполняемый файл self-hosted-processor для Linux ARM

    Важно

    Linux ARM является нестандартной платформой для выполнения CI/CD-процессов. Это экспериментальная тестовая версия пользовательского воркера под эту платформу.

    Не рекомендуется использовать эту версию в production-окружении.

    Скачать исполняемый файл self-hosted-processor для Windows AMD64

    Примечание

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

    См. также Обновить исполняемый файл воркера.

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

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

    export PATH=$PATH:<путь_к_исполняемому_файлу>
    
    $env:Path += ";<путь_к_исполняемому_файлу>"
    
  5. Посмотрите, какие команды доступны для воркера:

    self-hosted-processor run --help
    

    Чтобы посмотреть информацию и доступные параметры для конкретной команды, выполните:

    self-hosted-processor <команда> --help
    

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

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

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

Ключ

Описание

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

-c,
--capacity

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

1

-r, --root-dir

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

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

-t,
--token

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

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

--tags

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

Примечание

В строковых значениях метки может содержаться ограниченный набор символов: буквы латинского алфавита (a-zA-Z), а также -, . и _.

Метка self-hosted проставляется в параметрах пользовательского воркера автоматически. Ее не надо добавлять дополнительно в поле tags файла config.yaml.

[ ]

--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
logger_level: info
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
logger_level: info

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

# Список меток. На воркере будут выполняться задания, все метки
# которых содержатся в метках воркера.
# Поддерживаются буквы латинского алфавита и символы «-», «.» и «_».
# Метка «self-hosted» проставляется автоматически.
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.

Задать уровень логирования

Чтобы задать уровень логирования воркера, отредактируйте значение поля logger_level в файле config.yaml. Поддерживаются следующие значения:

  • fatal — вывод только ошибки, которая была залогирована с уровнем fatal и стала причиной падения приложения.
  • error — вывод ошибок, которые могут сигнализировать о проблемах в работе приложения, например: нет возможности подключиться к оркестратору, ошибки сети, недостаточно места на диске и пр.
  • warn — ошибки уровня fatal и error, а также ошибки, которые могут возникнуть при нормальной работе приложения, например: не получилось создать симлинк при копировании артефакта и пришлось выполнять полноценное копирование, не получилось найти файл .ENV первого или последнего кубика в задании и пр.
  • info — ошибки уровня fatal, error и warn, а также сообщения о том, что происходит в приложении:
    • запросы на получение заданий (раз в несколько секунд);
    • отправка отчетов о статусе задания;
    • вывод скрипта и информации о выполняемом шаге.
  • debug — ошибки уровня fatal, error и warn, сообщения info, а также прочая отладочная информация, например значения передающихся между кубиками переменных.

Обновить исполняемый файл воркера

В подразделе Подготовьте окружение представлены ссылки на актуальные версии исполняемых файлов воркера.

Чтобы узнать версию исполняемого файла воркера, установленного в вашем окружении, выполните команду:

self-hosted-processor version

Результат:

<``>SourceCraft<``> Processor
Version: 0.9.1
Build date: 10 June 2025
Target OS: darwin
Target Arch: arm64

Чтобы обновить исполняемый файл воркера, скачайте новый файл и замените старый.

См. также