2016-12-26 1 views

Répondre

5

Si vous souhaitez utiliser une clé ssh dans le cadre de votre construction, vous pouvez ajouter la clé ssh au magasin secret de l'aide la commande suivante:

drone secrets add --image=<image> <repo> SSH_KEY @/path/to/.ssh/id_rsa 

Notez que la notation @ est similaire à friser. La raison de cette fonctionnalité est que la création du secret à l'aide de cat (ou d'un autre type de canal) semble entraîner le téléchargement d'un fichier mal formé.

Une fois que le fichier est ajouté, vous pouvez faire référence dans votre YAML:

pipeline: 
    image: busybox 
    environment: 
    - SSH_KEY: ${SSH_KEY} 
    commands: 
    - mkdir /root/.ssh && echo "$SSH_KEY" > /root/.ssh/id_rsa && chmod 0600 /root/.ssh/id_rsa 

Notez qu'il est important de chat SSH_KEY entre guillemets afin de préserver de nouvelles lignes.

Vous devrez peut-être également ajouter l'hôte à known_hosts afin d'éviter les problèmes de clé hôte; changer bitbucket.org à tout hôte vous tirez de la suivante, et l'ajouter à commands (après la commande ci-dessus, afin d'assurer que le répertoire /root/.ssh existe):

ssh-keyscan -H bitbucket.org >> /root/.ssh/known_hosts 

(Vous aurez également besoin installer openssh-client ou équivalent, si ce n'est pas déjà disponible dans votre image build.)

et par "convienient" Je veux dire évidemment sans avoir à taper mkdir,> ou chmod

Nope

+0

yup, c'est exactement ce que je faisais. Puisque vous dites que cela ne peut être fait autrement, il est bon d'obtenir une confirmation. – fommil

+0

Drone possède un script d'initialisation (en quelque sorte) qui effectue l'installation de l'environnement. Je vais certainement envisager de chercher 'SSH_KEY' et de créer automatiquement le répertoire' .ssh' et le fichier 'id_rsa' dans le futur. –

+0

ohh, cela cite autour du SSH_KEY. Merci pour cette réponse! –

1

En Drone 0.7+ lors de l'utilisation Github oauth2 pour authentifier en Drone il ajoute automatiquement le nom d'utilisateur et mot de passe Github au builds .netrc.

Le mot de passe est en réalité un jeton instead of a password. Le .netrc regardera comme tel:

machine github.com 
    login <SOME_SECRET> 
    password x-oauth-basic 

Cela signifie que vous pouvez cloner repo Github privé via HTTPS sans avoir à spécifier le nom d'utilisateur/mot de passe, à savoir git clone https://github.com/USER/REPO/git.

Vous pouvez également obtenir le même effet localement en ajoutant un fichier ~/.netrc et en ajoutant quelque chose comme:

machine github.com 
    login <GITHUB_USERNAME> 
    password <GITHUB_PERSONAL_TOKEN> 

machine api.github.com 
    login <GITHUB_USERNAME> 
    password <GITHUB_PERSONAL_TOKEN> 

Vous devrez generate a personal token.

Par exemple, si vous utilisez la crèche paquet Ruby bundler, vous pouvez ajouter ce qui suit à la Gemfile:

gem 'documas', git: 'https://github.com/Propheris/documas-core.git' 

La construction peut faire bundle install avec succès car il clone le repo ci-dessus via HTTPS en utilisant le jeton Github . Le seul problème est que lorsque vous faites bundle install localement, il vous demandera un nom d'utilisateur/mot de passe. Pour surmonter cela, ajoutez un fichier ~/.netrc à votre machine de développement comme dans l'exemple ci-dessus.