如何使用AWS CodeDeploy / CodePipeline / S3将Gitlab-Ci部署到EC2

时间:2016-07-30 08:10:01

标签: gradle amazon-s3 amazon-ec2 gitlab-ci aws-code-deploy

我一直在使用Gradle开发基于Scala的SlackBot项目,并且一直在研究如何利用Gitlab-CI来部署到AWS EC2。

我可以使用Gitlab-CI完全构建和测试我的应用程序。

如何使用CodeDeploy和CodePipeline从Gitlab-CI到Amazon EC2进行部署?

回答以下作为指导。

1 个答案:

答案 0 :(得分:0)

autronix 的回答很棒,尽管在我的情况下,由于以下错误,我不得不放弃 CodePipeline 部分:The deployment failed because a specified file already exists at this location : /path/to/file。这是因为我在该位置已经有了文件,因为我使用的是一个现有实例,其中已经运行了一个服务器。

这是我的解决方法:

.gitlab-ci.yml 中,这是我更改的内容:

deploy:
  stage: deploy
  script:
    - curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" # Downloading and installing awscli
    - unzip awscliv2.zip
    - ./aws/install
    - aws deploy push --application-name App-Name --s3-location s3://app-deployment/app.zip # Adding revision to s3 bucket
    - aws deploy create-deployment --application-name App-Name --s3-location bucket=app-deployment,key=app.zip,bundleType=zip --deployment-group-name App-Name-Fleet --deployment-config-name CodeDeployDefault.OneAtATime --file-exists-behavior OVERWRITE # Ordering the deployment of the new revision
  when: on_success
  only:
    refs:
      - dev

重要的部分是带有标志 aws deploy create-deployment--file-exists-behavior 行。有 three options availableOVERWRITE 是我需要的,我无法使用 CodePipeline 设置此标志,所以我使用了 cli 选项。

我还对上传 .zip 的部分进行了一些更改。我没有自己创建 .zip,而是使用 aws deploy push 命令,它会在 s3 存储桶上为我创建一个 .zip。

真的没有什么可以修改的了。