2017-01-18 1 views
0

J'utilise Drone 0.4 pour mon CI. En essayant de migrer d'un registre privé auto-hébergé vers ECS/ECR d'AWS, j'ai rencontré un problème d'authentification en référençant ces images dans mon fichier .drone.yml en tant que service composé.Authentification AWS ECR pour le service de composition sur drone 0.4

par exemple

build: 
    image: python:3.5 
    commands: 
     - some stuff 
compose: 
    db: 
     image: <account_id>.dkr.ecr.us-east-1.amazonaws.com/reponame:latest 

lorsque la construction de drone fonctionne il est la moindre erreur, comme il se doit, en disant Authentication required à tirer de ecr. Comme je comprends lorsque vous vous authentifiez pour AWS ECR vous utilisez quelque chose comme aws-cli ecr get-login qui vous donne un mot de passe temporaire. Je sais que je pourrais injecter cela dans mon fichier secret drone et utiliser cette valeur dans auth_config mais cela signifierait que je devrais mettre à jour le fichier de mes secrets toutes les douze heures (ou aussi longtemps que dure ce jeton). Existe-t-il un moyen pour le drone d'effectuer lui-même le processus d'authentification?

+1

L'authentification du nom d'utilisateur et du mot de passe que Drone implémente est générique entre les fournisseurs (DockerHub, GCR, etc.), ce qui signifie qu'il ne connaît pas les exigences d'expiration et d'actualisation des mots de passe spéciaux. Il n'y a pas de solution pour le moment. La meilleure option consiste à ajouter un patch à Drone pour ajouter cette fonctionnalité. –

+0

@BradRydzewski quand je suis allé au drone github je n'ai pas vu de branche pour 0.4, j'ai seulement vu master et feature/mq il y a un autre endroit où je devrais regarder. En ce moment Drone est sur la version 0.5 je crois. – Nimnam1

Répondre

0

Vous pouvez exécuter la commande d'authentification dans le même shell avant d'exécuter votre build/composes commande:

comment nous le faisons dans notre configuration avec docker est, nous avons cette partie de script shell en dehors pipeline Jenkins (cette coquille script fonctionne avec ou sans Jenkins, tout ce que vous devez faire est de configurer vos informations d'identification SSFE):

`aws ecr get-login --region us-east-1` 
${MAVEN_HOME}/bin/mvn clean package docker:build -DskipTests 
docker tag -f ${DOCKER_REGISTRY}/c-server ${DOCKER_REGISTRY}/c-server:${RELEASE_VERSION 
docker push ${DOCKER_REGISTRY}/c-server:${RELEASE_VERSION} 

Ainsi lors de l'exécution de la commande maven qui crée l'image ou les commandes suivantes pour le pousser dans ECR, il utilise le authentification il obtient à partir de la première commande.

+0

Hmm ... Ce n'était pas tout à fait ce que je demandais, mais on dirait que ce que je demande n'est pas possible actuellement. Votre réponse pourrait être utile à d'autres si. – Nimnam1