> 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/fr/pour-le-devops-et-les-administrateurs/automate/ci-sign-in.md).

# Se connecter depuis un pipeline CI

Se connecter à Devolutions Cloud ou à Devolutions Server depuis un pipeline CI avec Devolutions CLI, au moyen d’une clé lue depuis une variable d’environnement ou un fichier.

Un pipeline ne peut pas ouvrir un navigateur ni taper un mot de passe. Devolutions CLI se connecte avec une clé à la place, et lit la partie secrète de cette clé depuis une variable d’environnement ou un fichier que votre système CI protège. Le secret n’est jamais écrit sur la ligne de commande.

## Choisir la bonne méthode de connexion

<table><thead><tr><th width="230">ESPACE DE TRAVAIL</th><th>MÉTHODE</th><th>OPTIONS</th></tr></thead><tbody><tr><td><strong>Devolutions Cloud</strong></td><td>Clé d’application et secret d’application</td><td><code>--application-key</code> avec <code>--application-secret-env</code> ou <code>--application-secret-file</code></td></tr><tr><td><strong>Devolutions Server</strong></td><td>Clé d’API</td><td><code>--api-key-env</code> or <code>--api-key-file</code></td></tr><tr><td><strong>Devolutions Server</strong></td><td>Utilisateur d’application</td><td><code>--as-application</code> avec <code>--username</code> et <code>--password-env</code> ou <code>--password-file</code></td></tr></tbody></table>

Créez d’abord la clé d’application, la clé d’API ou l’utilisateur d’application dans votre espace de travail, et ne lui donnez accès qu’aux coffres dont le pipeline a besoin. Ensuite, stockez son secret dans les variables protégées ou les fichiers de secrets de votre système CI.

{% hint style="warning" %}
Ne passez jamais un secret comme argument. Des options comme `--application-secret-env`, `--api-key-env` et `--password-env` prennent le **nom** d’une variable d’environnement, pas sa valeur. `devo login` n’a aucune option qui accepte le secret lui-même.
{% endhint %}

## Se connecter

{% tabs %}
{% tab title="Devolutions Cloud" %}

```bash
devo login ci-cloud --cloud https://<your-organization>.devolutions.app \
  --application-key <application-key> \
  --application-secret-env DEVO_APP_SECRET
```

`DEVO_APP_SECRET` est le nom de la variable qui contient le secret d’application. Pour le lire depuis un fichier à la place, utilisez `--application-secret-file <path>`.
{% endtab %}

{% tab title="Devolutions Server (API key)" %}

```bash
devo login ci-server --server https://<your-server-address> \
  --api-key-env DEVO_API_KEY
```

Pour lire la clé d’API depuis un fichier à la place, utilisez `--api-key-file <path>`.
{% endtab %}

{% tab title="Devolutions Server (application user)" %}

```bash
devo login ci-server --server https://<your-server-address> \
  --as-application --username <application-user> \
  --password-env DEVO_APP_PASSWORD
```

Pour lire le secret depuis un fichier à la place, utilisez `--password-file <path>`.
{% endtab %}
{% endtabs %}

Le contexte auquel vous vous connectez devient le contexte actuel, donc les commandes suivantes l’utilisent. Ajoutez `--json` pour obtenir un résultat qu’un script peut vérifier. Consultez [Lire les résultats en JSON](/cli/fr/pour-le-devops-et-les-administrateurs/automate/json-output.md).

## Garder le secret disponible pendant toute la tâche

Devolutions CLI ne copie pas le secret dans sa configuration. Il enregistre **où** se trouve le secret, le nom de la variable ou le chemin du fichier, et le relit chaque fois qu’il se connecte à votre espace de travail, y compris depuis son processus en arrière-plan. Donc :

* Définissez la variable, ou créez le fichier, **avant** la première commande `devo` de la tâche.
* Gardez-la définie, ou gardez le fichier en place, jusqu’à la dernière commande `devo`.
* Si vous faites tourner un secret conservé dans un fichier, remplacez le contenu du fichier : la prochaine connexion lit la nouvelle valeur, sans une nouvelle connexion.

Si la variable ou le fichier manque plus tard, les commandes échouent avec `secretReferenceUnavailable`.

## Exemple : une tâche CI générique

Cette tâche se connecte à Devolutions Cloud, exécute un script de déploiement avec un mot de passe de base de données provenant du coffre, puis fait le nettoyage. Adaptez les noms de variables à votre système CI : la plupart exposent les variables protégées comme variables d’environnement.

```bash
#!/usr/bin/env bash
set -euo pipefail

# Keep this job's contexts separate from other jobs on the same runner.
export DEVO_CLI_CONFIG_HOME="$(mktemp -d)"
# Fail instead of waiting for an answer.
export DEVO_NON_INTERACTIVE=1

# DEVO_APP_SECRET is provided by the CI system as a protected variable.
devo login ci-cloud --cloud "https://<your-organization>.devolutions.app" \
  --application-key "<application-key>" \
  --application-secret-env DEVO_APP_SECRET \
  --json > /dev/null

devo secret run \
  --env-ref DB_PASSWORD="<reference>" \
  --timeout-seconds 900 \
  -- ./deploy.sh

devo logout ci-cloud --json > /dev/null
devo daemon stop --wait
rm -rf "$DEVO_CLI_CONFIG_HOME"
```

Pour exécuter le nettoyage même quand une étape échoue, placez les trois dernières commandes dans l’étape « always run » de votre système CI ou dans un `trap` de shell. Plus de détails sur le dossier de configuration et le processus en arrière-plan se trouvent dans [Installer Devolutions CLI sur les agents de build](/cli/fr/pour-le-devops-et-les-administrateurs/automate/install-on-runners.md).

## Se connecter sur un ordinateur sans navigateur

Sur un serveur ou une session à distance où *vous* êtes présent mais où aucun navigateur ne peut s’ouvrir, utilisez le flux de code d’appareil avec `--oauth --use-device-code`. Devolutions CLI affiche une adresse web et un code ; ouvrez l’adresse sur n’importe quel appareil et connectez-vous. Définir la variable d’environnement `DEVO_CLI_USE_DEVICE_CODE` à `1` a le même effet que `--use-device-code`. Dans les deux cas, cela ne s’applique qu’à une connexion avec `--oauth`.

```bash
devo login my-server --server https://<your-server-address> --oauth --use-device-code
```

Ce flux a besoin d’une personne pour le terminer, donc il ne convient pas à un pipeline sans surveillance.

{% hint style="warning" %}
Sur Devolutions Cloud, une connexion par code d’appareil ne peut pas lire vos données : elle ne permet que `devo status` et `devo logout`. Pour les commandes de données sur Devolutions Cloud, connectez-vous avec le navigateur (`--oauth` sans `--use-device-code`) ou avec une clé d’application.
{% endhint %}

## Si cela ne fonctionne pas

* L’erreur dit que la variable ou le fichier est introuvable : vérifiez le nom que vous avez passé (le **nom** de la variable, sans `$`), et que le système CI l’expose à cette étape.
* La connexion échoue ou la session expire : consultez [La connexion échoue ou la session a expiré](/cli/fr/aide/troubleshooting/sign-in-fails.md).
* Toutes les méthodes et options de connexion : [Se connecter à Devolutions Cloud](/cli/fr/guides/connect/devolutions-cloud.md), [Se connecter à Devolutions Server](/cli/fr/guides/connect/devolutions-server.md).

## Suivant

* [Install Devolutions CLI on build agents](/cli/fr/pour-le-devops-et-les-administrateurs/automate/install-on-runners.md)
* [Run without prompts](/cli/fr/pour-le-devops-et-les-administrateurs/automate/non-interactive.md)
* [Run a command with its secrets](/cli/fr/guides/secrets/run-with-secrets.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/fr/pour-le-devops-et-les-administrateurs/automate/ci-sign-in.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.
