我们正在将动态部署添加到测试环境中,在该环境中每个合并请求都有自己的url,以便能够为不是开发人员的人手动进行前端测试。
这些实例docker-compose与GitLab CI / CD 一起部署,效果很好。
现在,合并请求合并后,我现在想自动关闭这些实例。
到目前为止,我还有额外的步骤可以手动关闭测试实例:
deploy-dynamic-down:
tags:
- docker
stage: deploy-dynamic
script:
- docker-compose down
when: manual
Run Code Online (Sandbox Code Playgroud)
这很好用,但是需要手动步骤,几乎肯定会不时地将其遗忘,这需要我们时不时地清理转轮。
因此,我的问题是:仅当合并请求合并时,我才能触发此管道步骤运行吗?
我不能仅将此管道限制为某些分支,例如master或develop,因为我们并不总是仅对这些分支创建合并请求。我不知道合并请求将预先定位到哪个分支。
continuous-integration continuous-deployment docker gitlab-ci
我有一个 vue.js SPA,我想将其部署在不同的服务器上,而无需为每次部署重新编译前端。SPA 连接到后端,其 URL 未知。有没有一种方法可以在运行时动态地告诉前端后端在哪里?
许多文章和论坛主题建议针对不同的环境使用不同的配置文件,并在构建时构建它们,但这对我来说不是一个选择,因为我根本不知道构建时前端/后端将部署在哪里。
编辑:该项目是一个开源项目,因此我无法真正假设人们将如何部署它。我总是“假设”它将部署在一个单独的子域上,前端可以访问/,后端可以通过代理访问/api,因为这就是我设置服务器的方式。然而,我见过人们将 api 部署在与前端完全不同的子域(有时甚至使用不同的端口)或子路径上,甚至是两者的混合上。
到目前为止我考虑过的事情:
conf.js然后通过或类似的方式公开后端 url ,并从标签window.config.backendUrl中加载该文件index.html<script>config.json,并在应用程序加载后向其发出获取请求,然后将其结果公开在window.config.backendUrl<script>window.config.backendUrl = 'http://api.example.com'</script>在我的index.html.express或类似)为前端提供服务,该服务器解析 env 或不同的配置文件,然后<script>动态创建来自 3. 的标签/api然后./api查看api.current-host.com等等”。然而,所有这些选项在我看来都有点老套,我认为必须有更好的方法。
我最喜欢的是第三个选项,因为恕我直言,它是可配置性和性能之间的最佳权衡。