我们正在构建一个我们正在使用 GitLab 存储库的应用程序。手动将代码部署到测试服务器 Amazon AWS EC2实例是繁琐的,我计划自动化部署过程,这样当我们提交代码时,它应该反映在测试实例中。
据我所知,我们可以使用 AWS code-deploy 服务从 GitHub获取代码。但 代码部署服务不支持GitLab存储库。 有没有办法通过GitLab自动化代码部署过程到AWS Ec2实例。或者是否有shell脚本可能实现此目的?请教育我。
答案 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并将文件放置在其中。
是一个如何将gitlab .yml文件写入ssh到ec2实例的示例。