我一直在使用Gradle开发基于Scala的SlackBot项目,并且一直在研究如何利用Gitlab-CI来部署到AWS EC2。
我可以使用Gitlab-CI完全构建和测试我的应用程序。
如何使用CodeDeploy和CodePipeline从Gitlab-CI到Amazon EC2进行部署?
回答以下作为指导。
答案 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 available,OVERWRITE
是我需要的,我无法使用 CodePipeline 设置此标志,所以我使用了 cli 选项。
我还对上传 .zip 的部分进行了一些更改。我没有自己创建 .zip,而是使用 aws deploy push
命令,它会在 s3 存储桶上为我创建一个 .zip。
真的没有什么可以修改的了。