从gitlab管道将node.js应用程序部署到AWS EB时遇到问题

时间:2019-05-15 02:54:37

标签: node.js amazon-web-services continuous-integration gitlab amazon-elastic-beanstalk

我在gitlab上托管了一个现有的node.js应用程序。我尝试使用gitlab的ci / cd并创建gitlab-ci.yml。有3个阶段,分别是buildtestdeploy,前两个阶段确实有效,但将其部署到aws弹性beantalk上,却在管道中显示错误,提示...

ERROR: This directory has not been set up with the EB CLI
You must first run "eb init".
ERROR: Job failed: exit code 1

希望你能帮助我解决我的问题:(

这是我在deploy阶段的示例配置:

  deploy_aws:
  stage: deploy
  image: coxauto/aws-ebcli
  script:
    - mkdir ~/.aws
    - touch ~/.aws/config
    - chmod 600 ~/.aws/config
    - echo "[profile eb-cli]" >> ~/.aws/config
    - echo "aws_access_key_id=${AWS_ACCESS_KEY_ID}" >> ~/.aws/config
    - echo "aws_secret_access_key=${AWS_SECRET_ACCESS_KEY}" >> ~/.aws/config
    - git checkout master
    - eb deploy sample-sails-app-dev

AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY在我的gitlab的ci / cd变量中声明。

2 个答案:

答案 0 :(得分:0)

AWS访问和秘密密钥存储在名为凭据的文件中。 (〜/ .aws / credentials)。

配置文件具有默认值,例如AWS区域和cli输出格式(json)

[default]
region = us-east-1
output = json

凭据文件具有访问权限和秘密ID

[default]
aws_access_key_id = xx
aws_secret_access_key = xxx

因此,在您的部署脚本中,将配置目录更改为凭据

- echo "aws_access_key_id=${AWS_ACCESS_KEY_ID}" >> ~/.aws/credentials

答案 1 :(得分:0)

eb命令要求对PWD进行eb init编辑,就像git命令要求对PWD进行git init编辑。

eb deploy sample-sails-app-dev之前,添加eb init <APP NAME> --platform <PLATFORM NAME>。这样可以解决您的问题。