8

Sto cercando di ottenere travis-ci per eseguire uno script di distribuzione personalizzato che utilizza awscli per inviare una distribuzione al mio server di gestione temporanea.Come eseguire aws configure in uno script di distribuzione di travis?

Nel mio file .travis.yml ho questo:

before_deploy: 
    - 'curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"' 
    - 'unzip awscli-bundle.zip' 
    - './awscli-bundle/install -b ~/bin/aws' 
    - 'export PATH=~/bin:$PATH' 
    - 'aws configure' 

E ho impostare le seguenti variabili d'ambiente:

AWS_ACCESS_KEY_ID 
AWS_SECRET_ACCESS_KEY 
AWS_DEFAULT_REGION 

con i loro valori corretti nell'interfaccia travis-ci web.

Tuttavia, quando viene eseguito aws configure, si arresta e attende l'input dell'utente. Come posso dire di usare le variabili d'ambiente che ho definito?

+2

Trovato questa domanda durante il tentativo di installare l'awscli su Travis - in ultima analisi, quello che ho finito con era di usare 'PIP installare --user awscli' al posto del sopra before_deploy stanzas. – ankon

risposta

4

È possibile impostare questi in un paio di modi.

In primo luogo, creando un file a ~/.aws/config (o ~/.aws/credentials).

Ad esempio:

[default] 
aws_access_key_id=foo 
aws_secret_access_key=bar 
region=us-west-2 

In secondo luogo, è possibile aggiungere le variabili d'ambiente per ciascuna delle vostre impostazioni.

Ad esempio, creare le seguenti variabili d'ambiente:

AWS_DEFAULT_REGION 
AWS_ACCESS_KEY_ID 
AWS_SECRET_ACCESS_KEY 

In terzo luogo, è possibile passare in regione come argomento della riga di comando. Per esempio:

aws eb deploy --region us-west-2 

Non sarà necessario eseguire aws configure in questi casi come il CLI è configurato.

C'è ulteriore documentazione AWS su this page.

+0

Non sono sicuro di avere la possibilità di creare un file '~/.aws/credentials' su Travis. L'alternativa è lasciare semplicemente l'ambiente vars impostato e rilasciare la riga 'aws configure'. –

8

La soluzione di Darbio funziona bene ma non è necessario prendere in considerazione il fatto che potresti finire con il push delle credenziali AWS nel tuo repository.

Che è una cosa negativa in particolare se la finestra mobile sta tentando di estrarre un'immagine privata da uno dei repository ECR. Significa che probabilmente hai dovuto memorizzare le tue credenziali di produzione AWS nel file .travis.yml e questo è tutt'altro che ideale.

Fortunatamente, Travis offre la possibilità di crittografare le variabili di ambiente, le impostazioni di notifica e distribuire le chiavi API.

gem install travis 

fare un travis login prima di tutto, vi chiederà le credenziali Github. Una volta effettuato l'accesso, accedere alla cartella principale del progetto (dove si trova il file .travis.yml) e crittografare l'ID della chiave di accesso e la chiave di accesso segreta.

travis encrypt AWS_ACCESS_KEY_ID="HERE_PUT_YOUR_ACCESS_KEY_ID" --add 
travis encrypt AWS_SECRET_ACCESS_KEY="HERE_PUT_YOUR_SECRET_ACCESS_KEY" --add 

grazie all'opzione --add vi ritroverete con due nuovi (criptato) variabili d'ambiente nel file di configurazione.Ora basta aprire il file .travis.yml e si dovrebbe vedere qualcosa di simile:

env: 
    global: 
     - secure: encrypted_stuff 
     - secure: encrypted_stuff 

Ora è possibile effettuare Travis eseguire uno script di shell che crea il file ~/.aws/credentials per voi.

ecr_credentials.sh

#!/usr/bin/env bash 

mkdir -p ~/.aws 

cat > ~/.aws/credentials << EOL 
[default] 
aws_access_key_id = ${AWS_ACCESS_KEY_ID} 
aws_secret_access_key = ${AWS_SECRET_ACCESS_KEY} 
EOL 

Allora non vi resta che eseguire lo script ecr_credentials.sh dal file .travis.yml:

before_install: 
    - ./ecr_credentials.sh 

Fatto! :-D

Fonte:Encription keys on Travis CI