---
metadata:
  - name: generator
    content: Diplodoc Platform v5.57.3
alternate:
  - https://sourcecraft.dev/portal/docs/en/sourcecraft/operations/self-hosted-worker.md
  - https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/self-hosted-worker.md
  - href: https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/self-hosted-worker.md
    type: text/markdown
    title: Markdown version
  - href: https://sourcecraft.dev/portal/docs/ru/llms.txt
    type: text/markdown
    title: llms.txt
---
> **Documentation Index:** Fetch the complete configuration index at https://sourcecraft.dev/portal/docs/ru/llms.txt

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

<!-- source: ru/_includes/sourcecraft/ci-cd/self-hosted-intro.md -->
_Пользовательские (self-hosted) воркеры_ — личные серверы пользователей, как виртуальные, так и физические, на которых выполняются CI/CD-процессы. В этом случае для процессов будет доступно окружение пользовательского сервера.

На пользовательские воркеры не действуют ограничения на [объем вычислительных ресурсов](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/workers.md#cloud-worker-resources), а также не расходуется [квота на суммарное время работы CI/CD-процессов](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/limits.md#ci-cd-quotas).
<!-- endsource: ru/_includes/sourcecraft/ci-cd/self-hosted-intro.md -->

Подробнее на странице [Воркеры CI/CD SourceCraft](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/workers.md).

Чтобы настроить пользовательский воркер:
1. [Подготовьте окружение](#prepare-environment).
1. [Создайте конфигурационный файл воркера](#config-file).
1. [Запустите воркер](#start-worker).
1. [Выполните задание на воркере](#run-tasks-on-worker).

Дополнительно:
* [Задать уровень логирования](#logging).
* [Обновить исполняемый файл воркера](#update-worker).

## Подготовьте окружение {#prepare-environment}

1. [Создайте](https://sourcecraft.dev/portal/docs/ru/sourcecraft/security/pat.md#create) персональный токен (PAT) с [ролью](https://sourcecraft.dev/portal/docs/ru/sourcecraft/security/index.md#src-repositories-admin) `Администратор репозитория` и доступом к репозиториям, в которых вы хотите запускать CI/CD-процессы на пользовательском воркере.

    {% note warning %}

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

    {% endnote %}

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

    {% list tabs group=operating_system %}

    - macOS ARM64 {#macos}

      [Скачать исполняемый файл self-hosted-processor для macOS ARM64](https://storage.yandexcloud.net/src-processor-downloads/self-hosted-processor-latest/darwin/arm64/self-hosted-processor)

    - Linux AMD64 {#linux}

      [Скачать исполняемый файл self-hosted-processor для Linux AMD64](https://storage.yandexcloud.net/src-processor-downloads/self-hosted-processor-latest/linux/amd64/self-hosted-processor)

      {% note info %}

      Для работы с воркером вам также понадобится библиотека [musl](https://musl.libc.org/). Установите ее с помощью вашего пакетного менеджера, например командой `sudo apt update && sudo apt install musl`.

      {% endnote %}

    - Linux ARM64 {#linux-arm64}

      [Скачать исполняемый файл self-hosted-processor для Linux ARM64](https://storage.yandexcloud.net/src-processor-downloads/self-hosted-processor-latest/linux/arm64/self-hosted-processor)

      {% note warning %}

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

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

      {% endnote %}

    - Linux ARM {#linux-arm}

      [Скачать исполняемый файл self-hosted-processor для Linux ARM](https://storage.yandexcloud.net/src-processor-downloads/self-hosted-processor-latest/linux/arm/self-hosted-processor)

      {% note warning %}

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

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

      {% endnote %}

    - Windows AMD64 {#windows}

      [Скачать исполняемый файл self-hosted-processor для Windows AMD64](https://storage.yandexcloud.net/src-processor-downloads/self-hosted-processor-latest/windows/amd64/self-hosted-processor.exe)

      {% note info %}

      Исполняемый файл для Windows работает только с набором инструментов [MinGW](https://www.mingw-w64.org/).

      {% endnote %}

    {% endlist %}

    Смотрите также [Обновить исполняемый файл воркера](#update-worker).

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

    ```bash
    chmod +x <путь_к_исполняемому_файлу>
    ```

1. Добавьте исполняемый файл в `PATH`:

    {% list tabs %}

    - macOS/Linux

      ```bash
      export PATH=$PATH:<путь_к_исполняемому_файлу>
      ```

    - Windows

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

    {% endlist %}

1. Посмотрите, какие команды доступны для воркера:

    ```bash
    self-hosted-processor --help
    ```

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

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

## Создайте конфигурационный файл воркера {#config-file}

{% list tabs %}

- Автоматически

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

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

  #|
  ||
  Ключ
  |
  Описание
  |
  Значение по умолчанию
  ||
  ||
  `-c`, 
  `--capacity`
  |
  Максимальное количество [заданий](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/ci-cd.md#tasks), которые могут параллельно выполняться воркером.
  |
  `1`
  ||
  ||
  `-r`, `--root-dir`
  |
  Путь до директории, в которой будут создаваться временные рабочие директории заданий, выполняемых воркером.
  |
  Директория для временных файлов, например `/tmp/` или `/usr/tmp/`.
  ||
  ||
  `-t`, 
  `--token`
  |
  Персональный токен (PAT) для аутентификации в сервисе. С его помощью воркер получает задания, отчитывается о прогрессе, передает в SourceCraft логи и артефакты.
  |
  Не установлено.
  ||
  ||
  `--tags`
  |
  Список [меток воркера](https://sourcecraft.dev/portal/docs/ru/sourcecraft/ci-cd-ref/self-hosted-tags.md). На воркере будут выполняться задания, все метки которых содержатся в метках воркера.

  <!-- source: ru/_includes/sourcecraft/ci-cd/self-hosted-tag-note.md -->
  {% note info %}

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

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

  {% endnote %}
  <!-- endsource: ru/_includes/sourcecraft/ci-cd/self-hosted-tag-note.md -->

  |
  `[ ]`
  ||
  ||
  `--ssl-no-verify`
  |
  Опция для отключения верификации сертификата. Используйте, если на вашем устройстве отсутствует подходящий корневой сертификат (RootCA).
  |
  Отключено.
  Используются корневые сертификаты, имеющиеся на устройстве.
  ||
  |#

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

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

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

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

- Вручную

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

  <!-- source: ru/_includes/sourcecraft/ci-cd/config-self-hosted-worker.md -->
  ```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
    ## Чтобы отключить верификацию сертификата, установите true.
    ssl_no_verify: false

  # Список меток. На воркере будут выполняться задания, все метки
  # которых содержатся в метках воркера.
  # Поддерживаются буквы латинского алфавита и символы «-», «.» и «_».
  # Метка «self-hosted» проставляется автоматически.
  tags:
    - 4gb
    - go-builder

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

  Это конфигурация воркера, который параллельно может выполнять не более 3 заданий с метками `4gb` и `go-builder` и создавать временные рабочие директории по пути `/Users/user1/sourcecraft`.
  <!-- endsource: ru/_includes/sourcecraft/ci-cd/config-self-hosted-worker.md -->

  [Подробнее о метках воркера](https://sourcecraft.dev/portal/docs/ru/sourcecraft/ci-cd-ref/self-hosted-tags.md)

{% endlist %}

## Запустите воркер {#start-worker}

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

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

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

{% note tip %}

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

{% endnote %}

## Выполните задание на воркере {#run-tasks-on-worker}

<!-- source: ru/_includes/sourcecraft/ci-cd/how-to-run-on-self-hosted.md -->
Чтобы запустить CI/CD-процесс на пользовательском воркере, в параметрах [рабочего процесса](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/ci-cd.md#workflows) (`workflow`) или [задания](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/ci-cd.md#tasks) (`task`) укажите `runs_on: self-hosted`.

Если в `task` не указан параметр `runs_on`, по умолчанию будет выставлен параметр из `workflow:runs_on`.
<!-- endsource: ru/_includes/sourcecraft/ci-cd/how-to-run-on-self-hosted.md -->

Пример:

<!-- source: ru/_includes/sourcecraft/ci-cd/config-self-hosted-ci.md -->
```yaml
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`.
<!-- endsource: ru/_includes/sourcecraft/ci-cd/config-self-hosted-ci.md -->

## Задать уровень логирования {#logging}

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

## Обновить исполняемый файл воркера {#update-worker}

В подразделе [Подготовьте окружение](#prepare-environment) представлены ссылки на актуальные версии исполняемых файлов воркера.

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

```bash
self-hosted-processor version
```

Результат:

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

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

#### Полезные ссылки {#see-also}

* [Воркеры CI/CD SourceCraft](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/workers.md)
* [Развертывание пользовательского (self-hosted) воркера SourceCraft на виртуальной машине Yandex Compute Cloud](https://sourcecraft.dev/portal/docs/ru/sourcecraft/tutorials/self-hosted-worker-sourcecraft.md)
* [Метки пользовательских (self-hosted) воркеров в SourceCraft](https://sourcecraft.dev/portal/docs/ru/sourcecraft/ci-cd-ref/self-hosted-tags.md)
* [Настроить выполнение заданий CI/CD SourceCraft в кластере Kubernetes](https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/self-hosted-worker-kubernetes.md)
* [Настроить CI/CD в репозитории SourceCraft](https://sourcecraft.dev/portal/docs/ru/sourcecraft/operations/ci-cd.md)
* [Справочник CI/CD](https://sourcecraft.dev/portal/docs/ru/sourcecraft/ci-cd-ref/index.md)
* [Непрерывная интеграция и непрерывное развертывание в SourceCraft](https://sourcecraft.dev/portal/docs/ru/sourcecraft/concepts/ci-cd.md)
