8

Я пытаюсь получить travis-ci для запуска специального сценария развертывания, который использует awscli для развертывания развертывания на моем промежуточном сервере.Как запустить aws configure в скрипте развертывания travis?

В моем .travis.yml файле у меня есть это:

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' 

И я поставил следующие переменные окружения:

AWS_ACCESS_KEY_ID 
AWS_SECRET_ACCESS_KEY 
AWS_DEFAULT_REGION 

с их соответствующими значениями в travis-ci веб-интерфейс.

Однако, когда запускается aws configure, он останавливается и ждет ввода пользователем. Как я могу сказать, что использовать переменные среды, которые я определил?

+2

Найдено этот вопрос при попытке установить awscli на Travis - в конце концов, что я закончил с было использовать 'пункт установить --user awscli' вместо выше before_deploy stanzas. – ankon

ответ

4

Вы можете установить их несколькими способами.

Во-первых, создав файл на ~/.aws/config (или ~/.aws/credentials).

Например:

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

Во-вторых, вы можете добавить переменные среды для каждого из параметров.

Например, можно создать следующие переменные окружения:

AWS_DEFAULT_REGION 
AWS_ACCESS_KEY_ID 
AWS_SECRET_ACCESS_KEY 

В-третьих, вы можете передать область в качестве аргумента командной строки. Например:

aws eb deploy --region us-west-2 

Вам не нужно будет запускать aws configure в этих случаях, как кли настроен.

Существует еще документация AWS по телефону this page.

+0

Не уверен, что у меня есть возможность создать файл '~/.aws/credentials' на Travis. Альтернативой является просто оставить настройки окружения окружающей среды и сбросить строку 'aws configure'. –

8

Решение Darbio прекрасно работает, но не принимает во внимание, что вы можете в конечном итоге нажать свои учетные данные AWS в своем репозитории.

Это плохой предмет особенно если докер пытается вытащить личное изображение из одного из ваших репозиториев ECR. Это означало бы, что вам, вероятно, пришлось хранить ваши учетные данные AWS в файле .travis.yml и это далеко не идеально.

К счастью, Travis дает вам возможность шифровать переменные среды, настройки уведомлений и развернуть ключи api.

gem install travis 

сделать travis login первую очередь, он попросит вас ввести учетные данные GitHub. После входа в корневую папку проекта (где находится ваш файл .travis.yml) и зашифруйте ключ доступа и секретный ключ доступа.

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 

Благодаря --add опции вы будете в конечном итоге с двумя новыми (зашифрованным) переменных окружения в файле конфигурации.Теперь просто открыть файл .travis.yml, и вы должны увидеть что-то вроде этого:

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

Теперь вы можете сделать Трэвис запустить скрипт, который создает файл ~/.aws/credentials для вас.

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 

Тогда вам просто нужно запустить ecr_credentials.sh скрипт из файла .travis.yml:

before_install: 
    - ./ecr_credentials.sh 

Готово! :-D

Источник:Encription keys on Travis CI