AWS CLI инструменти на Circle CI: configure: unknown команда

Опитвам се да разположа докер приложение върху 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: неправилно изписан мета параметър?

sanity-check: /root/.awssecret: файлът липсва. (Формат: AccessKeyID\nSecretAccessKey\n)

configure: неизвестна команда Използване: aws ДЕЙСТВИЕ [--help]

Скриптът работи напълно добре локално на mac os, използвайки абсолютно същия ключ и тайна.

И двете версии (на Circle и моя mac) на awscli са 1.7.14


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


Отговори (1)


Аз съм Кевин от CircleCI. Изглежда, че проблемът тук е свързан с факта, че когато инсталирате зависимости на Python, CircleCI ги инсталира във virtualenv. Това обикновено е страхотно нещо, тъй като изолира вашата среда на Python от системния Python по подразбиране и поддържа нашето кеширане на зависимости. Проблемът тук е, че изпълнявате своя deploy.sh скрипт със sudo, който пречиства средата virtualenv и изпълнява системната версия по подразбиране (която в този случай всъщност е по-стара алтернатива на AWS CLI). Премахването на sudo трябва да поправи нещата за вас. (Също така би било по-добре да стартирате pip install awscli==x.x.x във фазата "зависимости", тъй като тогава ще бъде кеширан.)

PS: Моля, свържете се с [email protected] за навременен отговор на въпроси като цяло.

person bellkev    schedule 18.03.2015