Аутентификация
Чтобы взаимодействовать с сервером, CLI должен аутентифицировать запросы с помощью bearer authentication. CLI поддерживает аутентификацию как пользователя, как учетной записи или с помощью маркера OIDC.
Как пользователь#
При использовании CLI локально на вашем компьютере мы рекомендуем аутентифицироваться как пользователь. Чтобы пройти аутентификацию в качестве пользователя, необходимо выполнить следующую команду:
tuist auth login
Команда проведет вас через веб-поток аутентификации. После аутентификации CLI
будет хранить долгоживущий токен обновления и короткоживущий токен доступа в
каталоге ~/.config/tuist/credentials. Каждый файл в этой директории
представляет домен, на котором вы аутентифицировались, по умолчанию это
tuist.dev.json. Информация, хранящаяся в этом каталоге, является
конфиденциальной, поэтому позаботьтесь о ее сохранности.
CLI будет автоматически искать учетные данные при выполнении запросов к серверу. Если срок действия маркера доступа истек, CLI будет использовать маркер обновления для получения нового маркера доступа.
Токены OIDC#
В средах CI, поддерживающих OpenID Connect (OIDC), Tuist может выполнять аутентификацию автоматически, не требуя от вас управления долговременными секретами. При работе в поддерживаемой среде CI CLI автоматически определяет поставщика токенов OIDC и обменивает предоставленный CI токен на токен доступа Tuist.
Поддерживаемые поставщики услуг CI#
- Действия GitHub
- CircleCI
- Bitrise
Настройка аутентификации OIDC#
-
Подключите свой репозиторий к Tuist: Следуйте руководству GitHub integration guide, чтобы подключить свой репозиторий GitHub к проекту Tuist.
-
Выполните команду
tuist auth login: В рабочем процессе CI выполнитеtuist auth loginперед любыми командами, требующими аутентификации. CLI автоматически определит среду CI и выполнит аутентификацию с помощью OIDC.
Примеры конфигурации для конкретного поставщика см. в руководстве Continuous Integration guide.
Области применения токенов OIDC#
Токены OIDC получают группу охвата ci, которая предоставляет доступ ко всем
проектам, подключенным к репозиторию. Подробную информацию о том, что включает в
себя область видимости ci, см. в разделе Группы областей
видимости.
Аутентификация OIDC более безопасна, чем долгоживущие токены, потому что:
- Никаких секретов для ротации или управления
- Токены недолговечны и привязаны к отдельным рабочим процессам
- Аутентификация привязана к идентификатору хранилища.
Жетоны счета#
Для сред CI, которые не поддерживают OIDC, или когда вам нужен тонкий контроль над разрешениями, вы можете использовать токены учетных записей. Токены учетных записей позволяют точно указать, к каким областям и проектам может получить доступ токен.
Создание маркера учетной записи#
tuist account tokens create my-account \
--scopes project:cache:read project:cache:write \
--name ci-cache-token \
--expires 1y
Команда принимает следующие параметры:
| Вариант | Описание |
|---|---|
-области |
Требуется. Список областей, разделенных запятыми, для предоставления токена. |
--имя |
Требуется. Уникальный идентификатор токена (1-32 символа, только буквенно-цифровые символы, дефисы и подчеркивания). |
-истекает |
Необязательно. Когда срок действия токена должен истечь. Используйте формат 30d (дни), 6m (месяцы) или 1y (годы). Если не указано, срок действия токена не истекает. |
-проекты |
Ограничьте доступ токена к определенным дескрипторам проектов. Если не указано, токен имеет доступ ко всем проектам. |
Доступные диапазоны#
| Область применения | Описание |
|---|---|
счет:члены:читать |
Читать членов учетной записи |
счет:члены:писать |
Управление членами учетной записи |
счет:реестр:читать |
Чтение из реестра пакетов Swift |
счет:реестр:запись |
Публикация в реестре пакетов Swift |
проект:превью:читать |
Скачать предварительные просмотры |
проект:превьюшки:писать |
Загружайте предварительные просмотры |
проект:администратор:читать |
Чтение настроек проекта |
проект:администратор:писать |
Управление настройками проекта |
проект:кэш:читать |
Загрузите кэшированные двоичные файлы |
проект:кэш:запись |
Загрузите кэшированные двоичные файлы |
проект:комплекты:читать |
Посмотреть комплекты |
проект:комплекты:писать |
Загрузка пакетов |
проект:тесты:читать |
Прочитать результаты тестирования |
проект:тесты:писать |
Загрузите результаты тестирования |
проект:сборки:читать |
Читайте аналитику сборки |
проект:сборки:писать |
Загрузите аналитику сборки |
проект:бегает:читает |
Выполнение команды чтения |
проект:бегает:пишет |
Создание и обновление командных запусков |
Группы охвата#
Группы диапазонов обеспечивают удобный способ предоставления нескольких связанных диапазонов с одним идентификатором. Когда вы используете группу диапазонов, она автоматически расширяется и включает все отдельные диапазоны, которые она содержит.
| Scope Group | Входящие в комплект прицелы |
|---|---|
ci |
project:cache:write, project:previews:write, project:bundles:write, project:tests:write, project:builds:write, project:runs:write |
Непрерывная интеграция#
Для сред CI, не поддерживающих OIDC, можно создать маркер учетной записи с
группой охвата ci для аутентификации рабочих процессов CI:
tuist account tokens create my-account --scopes ci --name ci
В результате создается токен со всеми областями, необходимыми для типичных
операций CI (кэш, предварительные просмотры, пакеты, тесты, сборки и запуски).
Сохраните созданный токен как секрет в вашей среде CI и задайте его в качестве
переменной окружения TUIST_TOKEN.
Управление токенами учетных записей#
Чтобы перечислить все токены для учетной записи:
tuist account tokens list my-account
Чтобы отозвать маркер по имени:
tuist account tokens revoke my-account ci-cache-token
Использование токенов учетных записей#
Токены учетных записей должны быть определены как переменная среды
TUIST_TOKEN:
export TUIST_TOKEN=your-account-token
Используйте жетоны счета, когда вам это необходимо:
- Аутентификация в средах CI, не поддерживающих OIDC
- Тонкий контроль над операциями, которые может выполнять токен
- Токен, с помощью которого можно получить доступ к нескольким проектам в рамках учетной записи
- Ограниченные по времени токены, срок действия которых автоматически истекает