---
title: 'Облачный сервер с GitLab Runner'
sidebar_label: 'GitLab Runner'
sidebar_position: 3
toc_max_heading_level: 3
description: 'Как создать облачный сервер для автоматизации CI/CD'
---

import EditIcon from '@selectel/docux/icons/edit'
import CheckIcon from '@selectel/docux/icons/check'
import Tabs from '@theme/Tabs'
import TabItem from '@theme/TabItem'
import {TabItemLabel} from '@selectel/docux/components'
import {CustomTable} from '@selectel/docux/components'
import Formbricks from '@theme/MDXComponents/Formbricks'
import CreateServer from '@site/docs/_partials/cloud-servers/applications/create-server-for-apps.mdx'

# Облачный сервер с GitLab Runner

GitLab Runner — открытое программное обеспечение, используется для автоматизации и выполнения задач (пайплайнов) в GitLab CI/CD.
Работает как агент, который последовательно выполняет шаги, определенные в задачах пайплайна.
Позволяет запускать сборку, тестирование и развертывание приложений в автоматическом режиме и управлять всем процессом выполнения задач CI/CD в GitLab.

Вы можете [создать облачный сервер с готовым приложением GitLab Runner](#create-cloud-server-with-gitlab-runner).
Приложение запускается внутри Docker-контейнера облачного сервера.

Если вам нужно запустить несколько раннеров в одном Docker-контейнере, [увеличите количество раннеров](#add-runners).
Для запуска нескольких задач CI/CD [включите параллельное выполнение задач](#enable-simultaneous-jobs).

В России сервер работает с настроенной операционной системой [SelectOS 1 64-bit](https://selectos.selectel.ru/news/mega/).
В других [странах](/infrastructure/locations.mdx#country) — Ubuntu 22.04.

Перед созданием облачного сервера с приложением ознакомьтесь с [лицензионными соглашениями программного обеспечения](https://423.selcdn.ru/kb/license-agreements-for-application-images-LANG.pdf), которое входит в образ.

## Минимальные требования к ресурсам \{#minimum-requirements}

<CustomTable>
  <table>
    <tbody>
      <tr>
        <th>Количество vCPU</th>
        <td>2</td>
      </tr>

      <tr>
        <th>RAM</th>
        <td>2 ГБ</td>
      </tr>

      <tr>
        <th>Загрузочный диск</th>
        <td>8 ГБ</td>
      </tr>
    </tbody>
  </table>
</CustomTable>

## Создать облачный сервер с GitLab Runner \{#create-cloud-server-with-gitlab-runner}

Для работы GitLab Runner совместно с сервером GitLab из другой сети, облачный сервер с GitLab Runner должен быть доступен из интернета.
Для этого при создании сервера нужно создать приватную подсеть и подключить публичный плавающий IP-адрес.
Чтобы настроить GitLab Runner, при создании сервера необходимо указать параметры приложения.

1. Опционально: [создайте публичный плавающий IP-адрес](#create-floating-ip).

2. [Создайте облачный сервер с GitLab Runner](#create-gitlab-runner-server).

### 1. Опционально: создать публичный плавающий IP-адрес \{#create-floating-ip}

Создайте публичный плавающий IP-адрес, чтобы облачный сервер с GitLab Runner был доступен из интернета.

Используйте подраздел [Создать публичный плавающий IP-адрес](/cloud-servers/cloud-networks/public-floating-ip-addresses.mdx#create-public-floating-ip) инструкции [Публичные плавающие IP-адреса](/cloud-servers/cloud-networks/public-floating-ip-addresses.mdx).

### 2. Создать облачный сервер с GitLab Runner \{#create-gitlab-runner-server}

<CreateServer AppNameInPanel="Cloud GitLab Runner" MinConfig="2 vCPU, RAM от 2 ГБ и размером загрузочного диска от 8 ГБ" OptionalVolumes="Чтобы добавить дополнительный" VolumeSize="Укажите размер сетевого диска в ГБ или ТБ">
  4. Заполните параметры приложения:

     4.1. Введите URL сервера с GitLab, к которому будет подключен GitLab Runner.

     4.2. Введите токен регистрации раннера.
     Для получения токена используйте инструкцию [Create a project runner with a runner authentication token](https://docs.gitlab.com/ee/ci/runners/runners_scope.html#create-a-project-runner-with-a-runner-authentication-token) официальной документации GitLab.

     4.3. Опционально: укажите имя раннера для legacy-регистрации, для этого откройте блок **Дополнительные параметры приложения** и в поле **Имя раннера** введите его.

     4.4. Опционально: укажите максимальный размер лога сборки в килобайтах, для этого откройте блок **Дополнительные параметры приложения** и в поле **Лимит размера лога билда (КБ)** введите значение.
     Настройка в этом поле соответствует параметру `output_limit` в GitLab.
     Подробнее в подразделе [The \[\[runners\]\] section](https://docs.gitlab.com/runner/configuration/advanced-configuration/#the-runners-section) инструкции [Advanced configuration](https://docs.gitlab.com/runner/configuration/advanced-configuration/) документации GitLab.

     4.5. Опционально: укажите теги раннера, для этого откройте блок **Дополнительные параметры приложения** и в поле **Теги раннера** введите их через запятые.
</CreateServer>

## Увеличить количество раннеров \{#add-runners}

1. [Подключитесь к облачному серверу](/cloud-servers/manage/connect-to-server.mdx).

2. В файл `/opt/gomplate/templates/gitlab-runner-env.tpl` добавьте URL:

   ```bash
   echo 'export RUNNER_GITLAB_URL_2="https://<gitlab_server_url>"' >> /opt/gomplate/templates/gitlab-runner-env.tpl
   ```

   Укажите `<gitlab_server_url>` — URL сервера с GitLab, к которому подключается GitLab Runner.

3. Если второй раннер добавляется для другого GitLab сервера, в файл `/opt/gomplate/templates/gitlab-runner-env.tpl` добавьте токен раннера:

   ```bash
   echo 'export RUNNER_REGISTRATION_TOKEN_2="<runner_token>"' >> /opt/gomplate/templates/gitlab-runner-env.tpl
   ```

   Укажите `<runner_token>` — регистрационный токен для GitLab Runner. Можно получить по инструкции [Create a project runner with a runner authentication token](https://docs.gitlab.com/ee/ci/runners/runners_scope.html#create-a-project-runner-with-a-runner-authentication-token) официальной документации GitLab.

4. В скрипт `/opt/gitlab-runner-pre-flight.sh` добавьте регистрацию нового раннера:

   * в функцию `register_runner`:

     ```bash
     sed -i '/register_runner () {/,/^}/ {
     /^}/ i\
     echo "Register additional runner"\
     docker run -i --rm \\\
         -v /etc/gitlab-runner:/etc/gitlab-runner \\\
         gitlab/gitlab-runner:ubuntu-v17.5.4 register \\\
         --non-interactive \\\
         --url "\${RUNNER_GITLAB_URL_2}" \\\
         --token "\${RUNNER_REGISTRATION_TOKEN_2}" \\\
         --template-config /etc/gitlab-runner/config-template.toml \\\
         --executor "docker" \\\
         \${RUNNER_ADDITIONAL_PARAMS}
     }' /opt/gitlab-runner-pre-flight.sh
     ```
   * в функцию `register_legacy_runner`:

     ```bash
     sed -i '/register_legacy_runner () {/,/^}/ {
     /^}/ i\
     echo "Register additional runner"\
     docker run -i --rm \\\
         -v /etc/gitlab-runner:/etc/gitlab-runner \\\
         gitlab/gitlab-runner:ubuntu-v17.5.4 register \\\
         --non-interactive \\\
         --url "\${RUNNER_GITLAB_URL_2}" \\\
         --registration-token "\${RUNNER_REGISTRATION_TOKEN_2}" \\\
         --template-config /etc/gitlab-runner/config-template.toml \\\
         --executor "docker" \\\
         \${RUNNER_ADDITIONAL_PARAMS}
     }' /opt/gitlab-runner-pre-flight.sh
     ```

5. Перезагрузите сервис:

   ```bash
   sudo systemctl restart gitlab-runner
   ```

## Включить параллельное выполнение задач CI/CD \{#enable-simultaneous-jobs}

:::warning

Параллельное выполнения задач CI/CD может снизить производительность раннера.

:::

1. [Подключитесь к облачному серверу](/cloud-servers/manage/connect-to-server.mdx).

2. В файле `/etc/gitlab-runner/config.toml` укажите количество параллельных задач в параметре `concurrent`:

   ```bash
   sed -i '1 i\concurrent = 2' /etc/gitlab-runner/config.toml
   ```

<Formbricks />
