web-dev-qa-db-fra.com

Accès aux informations d'identification dans Jenkins avec le plug-in Credentials Parameter

Ma boîte Jenkins doit accéder à Stash et Jira via leurs REST apis. Pour cela, j'ai besoin de stocker leurs informations d'identification.

La façon dont je fais est via le paramètre des informations d'identification, qui me demande un nom, un type d'informations d'identification, obligatoire, une valeur par défaut et une description.

Je définis un nom comme CREDENTIAL_PARAMETER, dans le type que je lui ai défini comme "Nom d'utilisateur avec mot de passe", puis je choisis une information d'identification dans la liste dans la valeur par défaut.

Ensuite, dans la section Build, je définis qu'un Shell doit être exécuté, ce qui est quelque chose comme

echo $CREDENTIAL_PARAMETER

Je m'attendais à obtenir quelque chose comme "nom d'utilisateur: mot de passe" comme CREDENTIAL_PARAMETER. Cependant, je reçois un hachage qui, selon moi, permet de récupérer le nom d'utilisateur et le mot de passe.

Comment puis-je obtenir les informations d'identification basées sur le hachage à l'aide de bash?

16
Alexandre Santos

Juste une note pour moi, et j'espère que cela aidera les autres, je vais aller un peu plus en profondeur que @Alexandre Santos, bien que sa réponse soit extrêmement utile.

La chose importante à noter est qu'il existe une différence entre le paramètre Credentials et le Binding Credentials Binding .

Si vous utilisez une génération paramétrée, vous pouvez ajouter un paramètre d'informations d'identification qui fait référence à une liaison d'informations d'identification. Lorsque vous exécutez la génération, vous remarquerez qu'il existe une variable d'environnement qui est en corrélation avec GUID GUID $ === dans votre magasin d'informations d'identification).

Pour que cela soit réellement utile vous devez injecter une "liaison d'informations d'identification" dans votre environnement.

Dirigez-vous vers la section Build Environment de la définition de votre travail. Cochez Utilisez des textes ou fichiers secrets . Cela en fait injectera le secret dans votre environnement de construction. Le "Paramètre d'informations d'identification" créé précédemment peut être utilisé ici pour vous permettre de sélectionner différents paramètres d'informations d'identification.

Pour les fichiers, il déposera le fichier quelque part dans l'espace de travail (?), Puis injectera une variable d'environnement secrète avec le chemin d'accès complet au fichier.

Ce blog de Cloudbees devrait aider avec le reste.

21
Breedly

C'est possible, mais le plugin https://wiki.jenkins-ci.org/display/JENKINS/Credentials+Binding+Plugin doit être installé. Sans cela, tout ce que vous obtenez est un hachage où les informations d'identification peuvent être trouvées.

Une fois que vous avez les informations d'identification, Jenkins les placera comme des environnements de session, qui peuvent être récupérés.

Notez que les informations d'identification ne sont disponibles que lorsque "Utiliser des textes ou fichiers secrets" est activé dans la section "Environnement de génération".

Une fois que tout est défini, le nom d'utilisateur et le mot de passe peuvent être transmis soit comme deux champs différents, soit comme un seul champ séparé par ":"

13
Alexandre Santos