Instala el paquete Hex
Tuist ofrece un paquete de Hex, tuist_ex, que se integra con tu proyecto Elixir para habilitar funcionalidades como análisis de compilaciones y análisis de tests. Esta guía te acompaña en la instalación y configuración.
El paquete requiere Elixir 1.18 o posterior. No necesita la interfaz de línea de comandos de Tuist.
1. Crea el proyecto#
Crea un proyecto en el panel de Tuist y elige Mix (Elixir) como su sistema de compilación. Su identificador, account/project, es lo que conecta tu proyecto Mix con él.
2. Añade el paquete#
Añade tuist_ex a las dependencias en tu mix.exs:
defp deps do
[
{:tuist_ex, "~> 0.10", runtime: false}
]
end
Luego descárgalo:
mix deps.get
runtime: false mantiene a Tuist fuera de tu aplicación en ejecución. Continúa con Primeros pasos con Elixir para configurar la caché, los análisis de compilaciones y los análisis de tests juntos. Las secciones siguientes cubren los detalles de autenticación y configuración.
3. Autentica a tu equipo y a la integración continua#
Cada miembro del equipo ejecuta lo siguiente para acceder a las funcionalidades de Tuist en su máquina:
mix tuist.login
Imprime un código breve de inicio de sesión, abre un navegador donde lo introduces y espera a que autorices. Para iniciar sesión sin un navegador, pasa tus credenciales:
Cuando uses un servidor Tuist autoalojado o local, establece su URL base en mix.exs o pásala con --url:
mix tuist.login --url http://localhost:8080
Mantén consistente la escritura del nombre de host. Por ejemplo, un inicio de sesión guardado para localhost es distinto de uno guardado para 127.0.0.1.
En GitHub Actions, CircleCI y Bitrise, la integración continua no requiere un paso de inicio de sesión. La primera vez que una tarea envía un informe, intercambia el token OpenID Connect del proveedor por un token de Tuist. Conecta tu repositorio de GitHub a tu proyecto de Tuist y, en GitHub Actions, otorga al trabajo el permiso 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
Con cualquier otro proveedor de identidad OpenID Connect, como Fly.io Machines, configura una política de confianza de identidad de carga de trabajo en la sección Identidades de carga de trabajo de la página Configuración → Autenticación de tu cuenta, lo que concede acceso de CI a todos los proyectos actuales y futuros propiedad de esa cuenta. Establece TUIST_OIDC_ACCOUNT en la cuenta de Tuist propietaria del proyecto y proporciona un token de identidad recién generado con el público de la política a través de TUIST_OIDC_TOKEN. La integración lo intercambia automáticamente cuando no hay un token de cuenta ni un inicio de sesión almacenado válido; mix tuist.login también lo acepta fuera de CI. Los intercambios automáticos reutilizan una sesión no caducada solo para el mismo servidor, cuenta y token de identidad proporcionado. Cambiar esa identidad desencadena un nuevo intercambio y un token de identidad vacío falla en lugar de reutilizar una sesión anterior. Las sesiones de Tuist duran una hora sin tokens de actualización, así que para cargas de trabajo más largas, genera un nuevo token de identidad y ejecuta mix tuist.login de nuevo antes de que expire la sesión. Sigue la configuración de identidad de carga de trabajo y el ejemplo de Fly.io.
Las solicitudes de extracción desde forks no reciben un token OpenID Connect, por lo que sus ejecuciones no se informan y siguen pasando o fallando como de costumbre. En otros proveedores, establece la variable de entorno TUIST_TOKEN con un token de cuenta. Sigue la guía de autenticación para integración continua para crear uno.
4. Sigue usando mix test y mix compile#
La configuración compartida instala los alias de compilación y test por ti. mix test test/my_app_test.exs:12 --trace informa la ejecución con la misma salida y código de salida, y la integración de compilación cubre las compilaciones desencadenadas por mix test o mix phx.server. Una compilación que no encuentra nada que hacer no se informa.
Las tareas también funcionan cuando las llamas por su propio nombre. Mix inicia una tarea escrita de esa manera en el entorno dev, por lo que la tarea debe reiniciarse en un segundo proceso para el entorno de test. Añade las tareas a los entornos preferidos para omitir eso:
def cli do
[preferred_envs: ["tuist.test": :test, "tuist.test.build": :test]]
end
Referencia de configuración#
Las siguientes opciones están disponibles bajo tuist en las opciones del proyecto de mix.exs:
| Opción | Tipo | Predeterminado | Descripción |
|---|---|---|---|
project |
String |
ninguno (obligatorio) | El identificador del proyecto en formato account/project. |
url |
String |
"https://tuist.dev" |
La URL base del servidor de Tuist. |
cache |
boolean o lista de palabras clave |
deshabilitado | La configuración habilita la caché de dependencias. Consulta la caché de Elixir para exclusiones e entradas adicionales. |
test_retries |
integer |
0 |
Cuántas veces reintentar los tests que fallaron; consulta reintentos de test. |
tags |
lista de String |
[] |
Etiquetas para adjuntar a cada compilación; consulta metadatos personalizados. |
values |
mapa | %{} |
Datos clave-valor para adjuntar a cada compilación. |
Las variables de entorno tienen prioridad sobre mix.exs:
| Variable | Descripción |
|---|---|
TUIST_PROJECT |
El identificador del proyecto en formato account/project. |
TUIST_URL |
La URL base del servidor de Tuist. |
TUIST_TOKEN |
El token para autenticarse, en lugar del inicio de sesión almacenado. |
TUIST_OIDC_TOKEN |
Un token de identidad OpenID Connect recién generado, intercambiado por un token de Tuist. Su audiencia debe ser tuist para GitHub Actions y Bitrise, o coincidir con la identidad de carga de trabajo de la cuenta para otros proveedores. Lo utiliza mix tuist.login o como alternativa cuando no hay un token de cuenta ni un inicio de sesión válido almacenado disponible. |
TUIST_OIDC_ACCOUNT |
El identificador de la cuenta de Tuist que posee el proyecto. Es necesario al intercambiar un token mediante una identidad de carga de trabajo de la cuenta. Selecciona entre las identidades de carga de trabajo existentes y no concede acceso por sí sola. |
TUIST_TEST_RETRIES |
Cuántas veces reintentar los tests que fallaron. |
TUIST_TAGS |
Etiquetas separadas por comas para adjuntar a la compilación. |
TUIST_VALUES |
Pares key=value separados por comas para adjuntar a la compilación. |
TUIST_DEBUG |
Establece en 1 para imprimir por qué no se pudo enviar un informe. |
Los informes nunca cambian el código de salida de mix test ni de mix compile. Si no se puede enviar un informe, la tarea no muestra nada a menos que TUIST_DEBUG=1 esté establecido.
Próximos pasos#
Una vez instalado y configurado el paquete, puedes usar:
- Caché de dependencias para reutilizar dependencias compiladas localmente y en las compilaciones de CI.
- Análisis de compilaciones para rastrear tiempos de compilación, advertencias y lo que frena tus compilaciones.
- Análisis de tests para rastrear el rendimiento de los tests hasta cada test individual.
- Tests inestables para detectar y rastrear tests que fallan intermitentemente.
- Fragmentación de tests para distribuir tus tests entre ejecutores de integración continua.