Установите Hex-пакет
Tuist предоставляет пакет Hex — tuist_ex, который интегрируется с вашим Elixir-проектом и включает такие возможности, как аналитика сборок и аналитика тестов. В этом руководстве описаны шаги по установке и настройке.
Пакет требует Elixir версии 1.18 или новее. Командный интерфейс Tuist не нужен.
1. Создайте проект#
Создайте проект в панели управления Tuist и выберите Mix (Elixir) в качестве системы сборки. Его идентификатор, account/project, связывает ваш Mix-проект с проектом в Tuist.
2. Добавьте пакет#
Добавьте tuist_ex в зависимости вашего файла mix.exs:
defp deps do
[
{:tuist_ex, "~> 0.10", runtime: false}
]
end
Затем загрузите его:
mix deps.get
runtime: false исключает Tuist из работающего приложения. Перейдите к разделу Начало работы с Elixir, чтобы вместе настроить кэширование, аналитику сборок и аналитику тестов. Разделы ниже описывают аутентификацию и детали конфигурации.
3. Аутентифицируйте команду и непрерывную интеграцию#
Каждый участник команды выполняет следующую команду, чтобы получить доступ к возможностям Tuist на своём компьютере:
mix tuist.login
Команда выводит короткий код для входа, открывает браузер, куда нужно ввести этот код, и ожидает авторизации. Чтобы войти без браузера, передайте учётные данные:
Если вы используете собственный или локальный сервер Tuist, задайте его базовый URL в mix.exs или передайте через --url:
mix tuist.login --url http://localhost:8080
Сохраняйте единообразие в написании хоста. Например, логин, сохранённый для localhost, отличается от логина для 127.0.0.1.
В GitHub Actions, CircleCI и Bitrise этап входа не требуется. При первой отправке отчёта задача обменивает токен OpenID Connect провайдера на токен Tuist. Подключите репозиторий GitHub к проекту Tuist и предоставьте задаче в GitHub Actions разрешение id-token: write:
jobs:
test:
runs-on: ubuntu-latest
permissions:
contents: read
id-token: write
steps:
- uses: actions/checkout@v4
- uses: erlef/setup-beam@v1
with:
elixir-version: '1.18'
otp-version: '27'
- run: mix deps.get
- run: mix test
Для любого другого провайдера удостоверений OpenID Connect, например Fly.io Machines, настройте политику доверия рабочих удостоверений в разделе Рабочие удостоверения на странице Настройки → Аутентификация вашего аккаунта. Это даёт CI доступ ко всем текущим и будущим проектам этого аккаунта. Укажите в TUIST_OIDC_ACCOUNT аккаунт Tuist, которому принадлежит проект, и передайте свежий токен удостоверения с аудиторией политики через TUIST_OIDC_TOKEN. Интеграция автоматически обменивает его, если нет токена аккаунта или действующего сохранённого логина; mix tuist.login также принимает его вне CI. Автоматический обмен повторно использует незавершённую сессию только для того же сервера, аккаунта и переданного токена удостоверения. Смена удостоверения запускает новый обмен, а пустой токен приводит к ошибке вместо повторного использования предыдущей сессии. Сессии Tuist действуют один час без токенов обновления, поэтому для долгоживущих задач выпустите новый токен удостоверения и снова выполните mix tuist.login до истечения срока сессии. Следуйте инструкциям по настройке рабочего удостоверения и примеру для Fly.io.
Pull-запросы из форков не получают токен OpenID Connect, поэтому их запуски не отправляются в отчёты и завершаются успехом или неудачей как обычно. На других провайдерах установите переменную окружения TUIST_TOKEN в токен аккаунта. Следуйте руководству по аутентификации непрерывной интеграции, чтобы создать его.
4. Продолжайте использовать mix test и mix compile#
Общая настройка устанавливает алиасы компиляции и тестирования. mix test test/my_app_test.exs:12 --trace сообщает о запуске с тем же выводом и кодом выхода, а интеграция компиляции охватывает сборки, запускаемые через mix test или mix phx.server. Если компиляция не находит работы, отчёт не отправляется.
Задачи также работают при вызове по собственному имени. Mix запускает такую задачу в среде dev, поэтому для среды тестирования ей приходится запускаться заново во втором процессе. Добавьте задачи в предпочтительные среды, чтобы пропустить это:
def cli do
[preferred_envs: ["tuist.test": :test, "tuist.test.build": :test]]
end
Справочник конфигурации#
Следующие параметры доступны в разделе tuist настроек проекта в файле mix.exs:
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
project |
String |
нет (обязательно) | Идентификатор проекта в формате account/project. |
url |
String |
"https://tuist.dev" |
Базовый URL сервера Tuist. |
cache |
boolean или список ключевых слов |
отключено | Настройка включает кэширование зависимостей. См. кэш Elixir для исключений и дополнительных входных данных. |
test_retries |
integer |
0 |
Сколько раз повторять упавшие тесты; см. повторные запуски тестов. |
tags |
список String |
[] |
Теги, прикрепляемые к каждой сборке; см. пользовательские метаданные. |
values |
карта | %{} |
Данные «ключ-значение», прикрепляемые к каждой сборке. |
Переменные окружения имеют приоритет над mix.exs:
| Переменная | Описание |
|---|---|
TUIST_PROJECT |
Идентификатор проекта в формате account/project. |
TUIST_URL |
Базовый URL сервера Tuist. |
TUIST_TOKEN |
Токен для аутентификации вместо сохранённого входа. |
TUIST_OIDC_TOKEN |
Свежевыпущенный токен удостоверения OpenID Connect, обмениваемый на токен Tuist. Его аудиторией должно быть значение tuist для GitHub Actions и Bitrise или совпадать с рабочей идентичностью аккаунта для других провайдеров. Используется командой mix tuist.login или как запасной вариант, если нет токена аккаунта или действительного сохранённого входа. |
TUIST_OIDC_ACCOUNT |
Идентификатор аккаунта Tuist, которому принадлежит проект. Требуется при обмене токена через рабочую идентичность аккаунта. Он выбирает среди существующих рабочих идентичностей и сам по себе не предоставляет доступ. |
TUIST_TEST_RETRIES |
Количество повторных попыток запуска упавших тестов. |
TUIST_TAGS |
Теги, прикрепляемые к сборке, разделённые запятыми. |
TUIST_VALUES |
Пары key=value, разделённые запятыми, прикрепляемые к сборке. |
TUIST_DEBUG |
Установите значение 1, чтобы вывести причину, по которой отчёт не удалось отправить. |
Отправка отчётов никогда не меняет код выхода команд mix test или mix compile. Если отчёт не удаётся отправить, задача ничего не выводит, если не установлена переменная TUIST_DEBUG=1.
Дальнейшие шаги#
После установки и настройки пакета вы можете использовать:
- Кэширование зависимостей для повторного использования скомпилированных зависимостей локально и в сборках CI.
- Аналитика сборок для отслеживания времени компиляции, предупреждений и факторов, замедляющих сборки.
- Аналитика тестов для отслеживания производительности тестов вплоть до каждого отдельного теста.
- Нестабильные тесты для обнаружения и отслеживания тестов, которые периодически падают.
- Разделение тестов для распределения тестов между раннерами непрерывной интеграции.