> For the complete documentation index, see [llms.txt](https://docs.devolutions.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.devolutions.net/cli/es/para-devops-y-administradores/automate/install-on-runners.md).

# Instalar Devolutions CLI en los agentes de compilación

Instalar Devolutions CLI en agentes de compilación de CI desde un archivo, mantener separada la configuración de cada trabajo y controlar el proceso en segundo plano.

Devolutions CLI no necesita un runtime ni un servicio: extraiga el archivo para la plataforma de su agente, añada su carpeta al `PATH`, y el agente está listo. Esta página trata lo que cambia en un agente de compilación: elegir el archivo correcto, impedir que los trabajos compartan la configuración y limpiar después de un trabajo.

## Elija el paquete para su agente

<table><thead><tr><th width="160">PLATAFORMA</th><th width="160">ARQUITECTURA</th><th>COMANDO</th></tr></thead><tbody><tr><td>Windows</td><td>x64, Arm64</td><td><code>devo.exe</code></td></tr><tr><td>macOS</td><td>x64, Arm64</td><td><code>devo</code></td></tr><tr><td>Linux</td><td>x64, Arm64</td><td><code>devo</code></td></tr></tbody></table>

Cada plataforma y cada arquitectura tiene su propia compilación, disponible como archivo `.zip` o `.tar.gz`: use la que corresponda al agente. El archivo puede contener otros archivos junto a `devo`, como bibliotecas nativas, así que mantenga junta la carpeta extraída.

## Instálelo

{% tabs %}
{% tab title="Linux and macOS" %}

```bash
mkdir -p "$HOME/devo"
tar -xzf <archive>.tar.gz -C "$HOME/devo"
export PATH="$HOME/devo:$PATH"
devo --help
```

Use cualquier carpeta en la que el trabajo pueda escribir.
{% endtab %}

{% tab title="Windows" %}

```powershell
Expand-Archive <archive>.zip -DestinationPath "$env:TEMP\devo" -Force
$env:PATH = "$env:TEMP\devo;$env:PATH"
devo --help
```

Sustituya `$env:TEMP` por cualquier carpeta en la que el trabajo pueda escribir.
{% endtab %}
{% endtabs %}

## Mantener separada la configuración de cada trabajo

Devolutions CLI guarda sus contextos, las sesiones de inicio de sesión y el estado de su proceso en segundo plano en una carpeta de configuración del perfil del usuario. En un agente de compilación que ejecuta trabajos uno tras otro con la misma cuenta, cada trabajo compartiría esa carpeta: un trabajo podría usar un contexto creado por otro.

Establezca `DEVO_CLI_CONFIG_HOME` en una carpeta que pertenezca al trabajo, antes del primer comando `devo`:

{% tabs %}
{% tab title="Bash" %}

```bash
export DEVO_CLI_CONFIG_HOME="$(mktemp -d)"
```

{% endtab %}

{% tab title="PowerShell" %}

```powershell
$env:DEVO_CLI_CONFIG_HOME = Join-Path $env:TEMP "devo-config"
```

{% endtab %}
{% endtabs %}

Cada comando `devo` del trabajo usa entonces esa carpeta para sus contextos y su proceso en segundo plano, y los demás trabajos no la ven.

## Controlar el proceso en segundo plano

El primer comando `devo` que necesita su espacio de trabajo inicia un proceso en segundo plano y lo deja en ejecución para los comandos siguientes. Es el mismo archivo `devo`, que se ejecuta con la cuenta de usuario del trabajo. No mantiene abierta la salida de su trabajo, así que el paso que lo inició puede terminar con normalidad.

De forma predeterminada, el proceso en segundo plano se detiene por sí solo tras 60 minutos sin solicitudes. En un agente de compilación, normalmente quiere que desaparezca antes.

<table><thead><tr><th width="290">CONFIGURACIÓN</th><th>QUÉ HACE</th></tr></thead><tbody><tr><td><code>DEVO_DAEMON_IDLE_TIMEOUT</code></td><td>Cuánto tiempo espera el proceso en segundo plano sin solicitudes antes de detenerse, por ejemplo <code>30s</code>, <code>5m</code>, <code>1h</code> o <code>00:05:00</code>. El valor predeterminado es 60 minutos. <code>0s</code> desactiva la parada por inactividad. Si Devolutions CLI no puede leer el valor, el comando que iniciaría el proceso en segundo plano falla con <code>invalidParameterValue</code>.</td></tr><tr><td>opción <code>--daemon</code> o <code>DEVO_DAEMON_MODE</code></td><td><code>auto</code> (predeterminado): inicia el proceso en segundo plano cuando hace falta. <code>require</code>: usa uno que ya está en ejecución, sin iniciar nunca uno. <code>never</code>: no lo contacta, así que los comandos que lo necesitan fallan.</td></tr><tr><td>Opción <code>--no-daemon-autostart</code> o <code>DEVO_DAEMON_AUTOSTART</code></td><td>No inicie el proceso en segundo plano automáticamente. Defina la variable como <code>0</code>, <code>false</code> o <code>no</code> para desactivar el inicio automático.</td></tr></tbody></table>

Con `require`, o con el inicio automático desactivado, inicie usted mismo el proceso al principio del trabajo:

```bash
devo daemon ensure
```

{% hint style="info" %}
Defina las variables de entorno que Devolutions CLI lee más tarde, como la variable que contiene su secreto de aplicación, **antes** del primer comando `devo`. El proceso en segundo plano lee su entorno al iniciarse. Consulte [Iniciar sesión desde una canalización de CI](/cli/es/para-devops-y-administradores/automate/ci-sign-in.md).
{% endhint %}

## Limpiar al final del trabajo

Ejecute estos comandos en un paso que siempre se ejecuta, incluso cuando el trabajo falla:

```bash
devo logout <context-name>
devo daemon stop --wait
rm -rf "$DEVO_CLI_CONFIG_HOME"
```

* `devo logout` borra la autenticación almacenada del contexto.
* `devo daemon stop --wait` detiene el proceso en segundo plano de esta carpeta de configuración y espera hasta que desaparezca. Si no hay ninguno en ejecución, no hace nada.
* Elimine la carpeta de configuración al final: `devo daemon stop` la usa para encontrar el proceso en segundo plano.

En los agentes de compilación que se eliminan después de cada trabajo, como contenedores o máquinas virtuales temporales, la limpieza no es obligatoria, pero no cuesta nada.

## Bueno saberlo

* Compruebe que el agente está listo con `devo doctor`. Muestra una instantánea de diagnóstico sin iniciar el proceso en segundo plano. Consulte [Recopilar diagnósticos para el soporte](/cli/es/ayuda/troubleshooting/collect-diagnostics.md).
* Si un comando informa que el proceso en segundo plano no está disponible, consulte [El proceso en segundo plano no se inicia](/cli/es/ayuda/troubleshooting/daemon-wont-start.md).
* Todas las variables de entorno se enumeran en [Variables de entorno](/cli/es/referencia/environment-variables.md).

## Siguiente

* [Sign in from a CI pipeline](/cli/es/para-devops-y-administradores/automate/ci-sign-in.md)
* [Read results as JSON](/cli/es/para-devops-y-administradores/automate/json-output.md)
* [Install Devolutions CLI](/cli/es/referencia/installation.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.devolutions.net/cli/es/para-devops-y-administradores/automate/install-on-runners.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
