{{tag>[gitlab ]}}

====== Создание токена ======


===== СОЗДАНИЕ НОВОГО ТОКЕНА ЧЕРЕЗ КОНСОЛЬ =====

<code bash>
$ docker exec -ti gitlab-service-1 gitlab-rails console
</code>
<code ruby>
# Получите текущие настройки
setting = ApplicationSetting.current

# Сгенерируйте новый токен регистрации раннеров
setting.reset_runners_registration_token!

# Сохраните настройки
setting.save

# Покажите новый токен
puts "✅ Новый токен регистрации раннеров: #{setting.runners_registration_token_encrypted}"
</code>

<code ruby>
# Способ 1: Прямое создание через метод
new_token = ApplicationSetting.current.reset_runners_registration_token
puts "Токен: #{new_token}"

# Способ 2: Через Gitlab::CurrentSettings
Gitlab::CurrentSettings.reset_runners_registration_token!
puts "Токен: #{Gitlab::CurrentSettings.runners_registration_token}"

# Способ 3: Принудительное создание
setting = ApplicationSetting.current
setting.runners_registration_token = "glrt-#{SecureRandom.hex(16)}"
setting.save(validate: false)
puts "Токен: #{setting.runners_registration_token}"

# Токен для health checks
setting.reset_health_check_access_token!
puts "Health Check токен: #{setting.health_check_access_token}"

# Токен для error tracking
setting.reset_error_tracking_access_token!
puts "Error Tracking токен: #{setting.error_tracking_access_token}"

exit
</code>

===== ЕСЛИ ВОЗНИКАЮТ ОШИБКИ ПРИ СОХРАНЕНИИ =====


docker exec -ti gitlab-service-1 gitlab-rails dbconsole
<code sql>
-- Принудительно установите новый токен
UPDATE application_settings 
SET runners_registration_token_encrypted = 'glrt-' || substr(md5(random()::text), 1, 20),
    updated_at = NOW()
WHERE id = 1;

-- Проверьте
SELECT runners_registration_token_encrypted FROM application_settings;
</code>

===== ПРОВЕРКА УСПЕШНОСТИ =====


docker exec -ti gitlab-service-1 gitlab-rails console
<code ruby>
# Убедитесь, что токен установлен
ApplicationSetting.current.runners_registration_token

# Проверьте, что нет ошибок
ApplicationSetting.current.valid?
</code>

===== ИСПОЛЬЗОВАНИЕ ТОКЕНА =====


Полученный токен используйте для регистрации новых runners:

<code bash>
# Пример регистрации runner
$ gitlab-runner register \
  --url http://192.168.1.2/ \
  --registration-token "ВАШ_НОВЫЙ_ТОКЕН" \
  --description "Новый runner" \
  --executor "docker" \
  --docker-image alpine:latest
</code>