1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/panda26-gitlab

Клонировать/Скачать
README.md 18 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 26.05.2025 02:09 64486eb

Запуски

В GitLab CI запуски выполняют код, определённый в .gitlab-ci.yml. Это изолированные (виртуальные) машины, которые получают задания через API координатора GitLab CI.

Запуск может быть специфическим для определённого проекта или обслуживать любой проект в GitLab CI. Запуск, который обслуживает все проекты, называется общим запуском.

Идеально, GitLab Runner не должен быть установлен на той же машине, что и GitLab. Для получения дополнительной информации прочитайте документацию по требованиям.

Общие и специфические запуски

После [установки запуска][install], вы можете зарегистрировать его как общий или специфический. Вы можете зарегистрировать общий запуск только если у вас есть права администратора на GitLab-экземпляре. Основные различия между общим и специфическим запуском следующие:- Общие запуски полезны для заданий, которые имеют похожие требования между несколькими проектами. Вместо того, чтобы иметь множество запусков, которые простаивают для многих проектов, вы можете иметь один или небольшое количество запусков, которые обрабатывают несколько проектов. Это делает их проще в поддержке и обновлении. Общие запуски обрабатывают задания с помощью очереди с ф fair usage. В отличие от специфических запусков, которые используют очередь FIFO, это предотвращает случаи, когда проекты создают сотни заданий, что может привести к исчерпанию всех доступных ресурсов общих запусков.

  • Специфические запуски полезны для заданий, которые имеют специальные требования или для проектов с особым спросом. Если задание имеет определённые требования, вы можете настроить специфический запуск с этим в виду, не требуя этого для всех запусков. Например, если вы хотите развернуть определённый проект, вы можете настроить специфический запуск с правильными учетными данными для этого. Использование тегов может быть полезным в этом случае. Специфические запуски обрабатывают задания с помощью [очереди FIFO].Запуск, который является специфическим, выполняет задания только для указанных проектов. Общий запуск может выполнять задания для каждого проекта, который включил опцию Разрешить общие запуски под Настройки ➔ Пайплайны.

Проекты с высоким спросом на CI-деятельность также могут выиграть от использования специфических запусков. Имея специализированные запуски, вы гарантируете, что запуск не будет задержан заданиями других проектов. Вы можете настроить конкретный Runner для использования несколькими проектами. Разница с общим Runner заключается в том, что вам нужно явно включить каждый проект для Runner, чтобы он мог запускать его задачи.

Конкретные Runners автоматически не передаются форкнутым проектам. Форк копирует настройки CI (задачи, разрешение на общие, и т. д.) клонированного репозитория.

Регистрация общего Runner

Вы можете зарегистрировать только общий Runner, если вы являетесь администратором GitLab.

  1. Получите токен общего Runner на странице admin/runners

    Область администрирования общих Runners

  2. [Зарегистрируйте Runner][register]

Общие Runners по умолчанию включены в GitLab 8.2, но могут быть отключены с помощью кнопки Отключить общие Runners, которая присутствует на странице Настройки ➔ Пайплайны каждого проекта. Предыдущие версии GitLab по умолчанию отключали общие Runners.## Регистрация конкретного Runner

Регистрация конкретного Runner может быть выполнена двумя способами:

  1. Создание Runner с токеном регистрации проекта
  2. Преобразование общего Runner в конкретный Runner (однонаправленно, только для администраторов)

Регистрация конкретного Runner с токеном регистрации проекта

Чтобы создать конкретный Runner без прав администратора на GitLab, перейдите в проект, для которого вы хотите настроить Runner:

  1. Перейдите в Настройки ➔ Пайплайны, чтобы получить токен
  2. [Зарегистрируйте Runner][register]

Преобразование существующего общего Runner в конкретный

Если вы являетесь администратором на вашем GitLab, вы можете преобразовать любой общий Runner в конкретный, но не наоборот. Учитывайте, что это однонаправленное преобразование.

  1. Перейдите в общие Runners в области администрирования Обзор ➔ Runners (/admin/runners) и найдите ваш Runner
  2. Включите любые проекты под Ограничение проектов для этого Runner для использования с Runner

С этого момента, общий Runner будет конкретным для этих проектов.

Заблокировать конкретный Runner от включения для других проектовВы можете настроить Runner так, чтобы он был привязан исключительно к одному проекту. Когда

Runner заблокирован таким образом, он больше не может быть включен для других проектов. Эта настройка может быть включена при первой регистрации Runner [register] и может быть изменена позже в настройках каждого Runner. Чтобы заблокировать/разблокировать Runner:1. Перейдите в Настройки ➔ Пайплайны вашего проекта

  1. Найдите Runner, который вы хотите заблокировать/разблокировать, и убедитесь, что он включен
  2. Нажмите кнопку редактирования (ручка)
  3. Включите опцию Заблокировать к текущим проектам
  4. Нажмите Сохранить изменения, чтобы изменения вступили в силу

Как общие Runners выбирают задачи

Общие Runners следуют процессу очереди, который мы называем справедливым использованием. Алгоритм справедливого использования пытается назначить задачи общим Runners из проектов, которые имеют наименьшее количество задач, выполняемых на общих Runners.

Пример 1

У нас есть следующие задачи в очереди:

  • Задача Yöntem 1 для Проекта 1
  • Задача Yöntem 2 для Проекта 1
  • Задача Yöntem 3 для Проекта 1
  • Задача Yöntem 4 для Проекта 2
  • Задача Yöntem 5 для Проекта 2
  • Задача Yöntem 6 для Проекта 3

С алгоритмом справедливого использования задачи назначаются в следующем порядке:

Пример 1

У нас есть следующие задачи в очереди:

  • Задача 1 для Проекта 1
  • Задача 2 для Проекта 1
  • Задача 3 для Проекта 1
  • Задача 4 для Проекта 2
  • Задача 5 для Проекта 2
  • Задача 6 для Проекта 3

С алгоритмом справедливого использования задачи назначаются в следующем порядке:1. Задача 1 выбирается первой, так как она имеет наименьший номер задачи из проектов, у которых нет выполняющихся задач (то есть все проекты).

  1. Задача 4 выбирается следующей, так как 4 теперь является наименьшим номером задачи из проектов, у которых нет выполняющихся задач (Проект 1 имеет выполняющуюся задачу).
  2. Задача 6 выбирается следующей, так как 6 теперь является наименьшим номером задачи из проектов, у которых нет выполняющихся задач (Проекты 1 и 2 имеют выполняющиеся задачи).
  3. Задача 2 выбирается следующей, так как из проектов с наименьшим количеством выполняющихся задач (каждый имеет по одной задаче), 2 является наименьшим номером задачи.
  4. Задача 5 выбирается следующей, так как Проект 1 теперь имеет две выполняющиеся задачи, и между Проектами 2 и 3, задача 5 является наименьшим оставшимся номером задачи.
  5. Наконец, выбирается задача 3... потому что это единственная оставшаяся задача.---

Пример 2

У нас есть следующие задачи в очереди:

  • Задача 1 для проекта 1
  • Задача 2 для проекта 1
  • Задача 3 для проекта 1
  • Задача 4 для проекта 2
  • Задача 5 для проекта 2
  • Задача 6 для проекта 3

С алгоритмом справедливого использования задачи назначаются в следующем порядке:

  1. Задача 1 выбирается первой, так как она имеет наименьший номер задачи из проектов, у которых нет выполняющихся задач (то есть все проекты).
  2. Завершаем задачу 1.
  3. Задача 2 следующая, так как, завершив задачу 1, все проекты снова имеют 0 выполняющихся задач, и 2 является наименьшим доступным номером задачи.
  4. Задача 4 следующая, так как с выполнением задачи в Проекте 1, 4 является наименьшим номером задачи из проектов, у которых нет выполняющихся задач (Проекты 2 и 3).
  5. Завершаем задачу 4.
  6. Задача 5 следующая, так как, завершив задачу 4, Проект 2 снова имеет 0 выполняющихся задач.
  7. Задача 6 следующая, так как Проект 3 является единственным проектом, у которого нет выполняющихся задач.
  8. Наконец, выбирается задача 3... потому что, снова, это единственная оставшаяся задача (кто сказал, что 1 — самая одинокая цифра?).

Эффективное использование общих Runners

Если вы планируете использовать общие Runners, следует учесть несколько моментов.

Использование теговВы должны настроить Runner так, чтобы он мог выполнять все различные типы задач, которые он может встретить в проектах, с которыми он связан. Это было бы проблематично для большого количества проектов, если бы не существовало тегов.Добавляя теги к Runner для типов задач, которые он может выполнять, вы можете убедиться, что общие Runners будут выполнять только те задачи, для которых они подготовлены.

Например, в GitLab у нас есть Runners, тегированные как "rails", если они содержат соответствующие зависимости для выполнения тестовых сценариев Rails.

Предотвращение выбора задач без тегов Runner-ами с тегами

Вы можете настроить Runner так, чтобы он не выбирал задачи без тегов, если у Runner нет тегов. Это настройка может быть включена при первом [регистрации Runner][register] и изменена позже в настройках каждого Runner.

Чтобы сделать Runner способным выбирать задачи с тегами или без:

  1. Перейдите в Настройки ➔ Пайплайны вашего проекта
  2. Найдите нужный Runner и убедитесь, что он включен
  3. Нажмите кнопку редактирования (карандаш)
  4. Установите опцию Выполнять задачи без тегов
  5. Нажмите Сохранить изменения, чтобы изменения вступили в силу

Будьте осторожны с конфиденциальной информацией

Если вы можете выполнить задачу на Runner, вы можете получить доступ к любому коду, который он выполняет, и получить токен Runner. С общими Runners это означает, что любой, кто выполняет задачи на этом Runner, может получить доступ к коду других пользователей, выполняющих задачи на этом Runner.

Кроме того, поскольку вы можете получить доступ к токену Runner, вы можете создать копию Runner и отправить ложные задачи, например.Вышеупомянутое легко избегается путем ограничения использования общих Runners на больших публичных GitLab-инстансах и контролем доступа к вашему GitLab-инстансу.

Форки

Каждый раз, когда проект форкируется, он копирует настройки задач, связанных с ним. Это означает, что если у вас есть общие Runners, настроенные для проекта, и кто-то форкирует этот проект, общие Runners будут выполнять задачи этого форка.

Векторы атак в Runners

Упомянуто кратко ранее, но следующие аспекты Runners могут быть использованы для атак. Мы всегда ищем вклады, которые могут уменьшить эти безопасные соображения.[установка]: http://docs.gitlab.com/runner/install/ [фио]: https://en.wikipedia.org/wiki/FIFO_(computing_and_electronics) [регистрация]: http://docs.gitlab.com/runner/register/

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/panda26-gitlab.git
git@api.gitlife.ru:oschina-mirror/panda26-gitlab.git
oschina-mirror
panda26-gitlab
panda26-gitlab
master