Инструменты AWS CLI в Circle CI: настроить: неизвестная команда

Я пытаюсь развернуть приложение Docker на Elastic Beanstalk из Circle CI.

Раздел развертывания моего Circle.yml:

deployment:
  hub:
    branch: [internal, production]
    commands:
      - pip install awscli
      - docker push company/web:$CIRCLE_SHA1
      - sudo bash deploy.sh $CIRCLE_SHA1 $CIRCLE_BRANCH $CIRCLE_BUILD_NUM

и мой deploy.sh вызывает aws cli следующим образом

aws --version
aws configure set aws_access_key_id $AWSKEY
aws configure set aws_secret_access_key $AWSSECRETKEY
aws configure set default.region us-west-2
aws configure set default.output json

echo "SAVING NEW DOCKERRUNFILE: $DOCKERRUN_FILE"
aws s3 cp $DOCKERRUN_FILE s3://$EB_BUCKET/$DOCKERRUN_FILE

Но я получаю ошибку

--version: метапараметр с ошибкой?

проверка работоспособности: /root/.awssecret: файл отсутствует. (Формат: AccessKeyID\nSecretAccessKey\n)

configure: неизвестная команда Использование: aws ACTION [--help]

Скрипт отлично работает локально на Mac OS, используя тот же ключ и секрет.

Обе версии (на круге и на моем Mac) awscli 1.7.14.


person Jacob Duval    schedule 18.03.2015    source источник


Ответы (1)


Я Кевин из CircleCI. Похоже, проблема здесь связана с тем, что при установке зависимостей Python CircleCI устанавливает их в виртуальную среду. Обычно это отличная вещь, поскольку она изолирует вашу среду Python от системного Python по умолчанию и поддерживает наше кэширование зависимостей. Проблема здесь в том, что вы запускаете свой deploy.sh скрипт с помощью sudo, который забивает среду virtualenv и запускает версию системы по умолчанию (которая в данном случае на самом деле является более старой альтернативой AWS CLI). Удаление sudo должно исправить ситуацию для вас. (Вам также лучше запустить pip install awscli==x.x.x на этапе «зависимости», так как тогда он будет кэшироваться.)

PS: пожалуйста, свяжитесь с [email protected] для своевременного ответа на вопросы в целом.

person bellkev    schedule 18.03.2015