自动从Git lab到AWS EC2实例的代码部署

时间:2016-04-05 21:21:05

标签: amazon-web-services amazon-s3 amazon-ec2 gitlab

我们正在构建一个我们正在使用 GitLab 存储库的应用程序。手动将代码部署到测试服务器 Amazon AWS EC2实例是繁琐的,我计划自动化部署过程,这样当我们提交代码时,它应该反映在测试实例中。

据我所知,我们可以使用 AWS code-deploy 服务从 GitHub获取代码。 代码部署服务不支持GitLab存储库。 有没有办法通过GitLab自动化代码部署过程到AWS Ec2实例。或者是否有shell脚本可能实现此目的?请教育我。

2 个答案:

答案 0 :(得分:8)

使用AWS CodeDeploy实现此目的的一种方法是将S3选项与Gitlab-CI结合使用:http://docs.aws.amazon.com/codepipeline/latest/userguide/getting-started-w.html

根据项目的设置方式,您可以生成分发Zip(Gradle通过应用程序插件提供此功能)。如果您的项目不提供此类功能,您可能需要手动生成“分发”文件。

Gitlab不提供直接的S3集成,但是通过gitlab-ci.yml,您可以将其下载到容器中并运行必要的上传命令,以便根据AWS将生成的zip文件放在S3容器上触发部署的说明。

以下是brefore-script文件中gitlab-ci.yml的外观示例:

before_script:
  - apt-get update --quiet --yes
  - apt-get --quiet install --yes python
  - pip install -U pip
  - pip install awscli

有关如何将CodeDeploy与S3一起使用的AWS教程非常详细,因此我将跳过尝试在此处重现内容。

对于您当前正在手动执行的实际部署命令和操作,AWS CodeDeploy提供了通过app-spec文件中定义的脚本运行某些操作的功能,具体取决于应用程序的事件挂钩:

我希望这会有所帮助。

答案 1 :(得分:0)

这是我的旧帖子之一。但是我碰巧找到了答案。尽管我的问题是特定于代码部署的,但我会说不需要使用gitlab使用任何AWS要求。

我们根本不需要代码部署。不再需要使用像Team city或jenkins这样的外部CI服务器来从GitLab执行CI。

我们需要在分支的源目录中添加.gitlab-ci.yml文件,并在其中写入.yml脚本。 GitLab中有一些管道会自动执行CI / CD。

GitLab CI / CD的管道看起来更类似于Jenkins Server的工作功能。使用YML脚本,我们可以在EC2实例上执行SSH并将文件放置在其中。

https://docs.gitlab.com/ee/ci/yaml/README.html

是一个如何将gitlab .yml文件写入ssh到ec2实例的示例。