首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GoCD从多个分支提取并部署到不同的环境

GoCD从多个分支提取并部署到不同的环境
EN

Stack Overflow用户
提问于 2019-06-28 10:30:39
回答 1查看 1.9K关注 0票数 2

我现在正在使用GoCD来自动化我们的部署。

这些是我正在使用的版本。

代码语言:javascript
复制
go-agent  17.10.0-5380
go-server 17.10.0-5380

我想揭露一个我无法通过配置GoCD修复的案例,我找不到任何能帮我解决这个问题的东西,很可能我漏掉了什么东西;-)

以下是我想要取得的成就:

我们有一个GIT存储库:frontend-app

在这个回购中,每个开发人员都可以按照以下命名约定将更改推送到不同的分支:dev-1dev-2、.

实现的目标是,每当开发人员将更改推入dev-1时,goCD将在该分支中接受这些更改,构建它并部署到我们的环境dev-1中。

如果developer 2将更改推入dev-2,goCD将接受这些更改,构建它们并部署到dev-2环境中。

我尝试过的第一个方法,就是只使用1种材料来配置管道,并尝试在分支名称上使用一些glob模式。正如你在附图中所看到的。

但是我没能做到这点。

我试过的第二件事是使用多种材料。为了能够拥有多个材料,您需要配置提供给它的特定目标目录的材料。正如您在附上的屏幕截图中所看到的:

通过这种方法,我能够让goCD拉出新的更改,并在特定的目标目录上签出repo。

对于我的管道,我已经配置了一个模板,在部署它之前,我已经配置了一组任务来构建项目,比如:npm installnpm testnpm run-script build等等……

但是,这些任务将在父目录(go-agent/pipelines/frontend-app/)上执行,而不是在目标目录(dev-1,dev-2,.)上执行。

代码语言:javascript
复制
go-agent/pipelines/frontend-app/
  |_ dev-1
  |_ dev-2
  |_ ...

我一直在阅读关于goCD环境变量的文章,但是我找不到任何保存目标目录的变量,所以我可以在任务中引用它。

当然,作为一种解决方案,您可以始终创建多个管道以实现这一点,即:

前部-app-dev-1,前端-app-dev-2,等等.

但我的问题是,我有8个开发环境和10个项目。因此,正如您可以想象的那样,单独配置所有这些东西是一项相当大的任务。

特别是,如果以后我们做了任何更改,这是大量的工作,手动和容易出错。

所以我的问题是:

  1. 如果使用第一种方法(分支glob模式),是否可以使用分支glob模式来实现这一目标?
  2. 如果我们使用第二种方法(几种材料),是否有人知道这是否可以实现?我想我快到了,但我在配置任务时可能遗漏了一些东西。
  3. 还有其他办法能让这件事奏效吗?
  4. 还有其他方法来实现我所需要的东西吗?

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2019-06-28 18:06:09

每个分支都需要一条管道。每个提交都会触发一个管道的新实例,如果您在一个管道中处理多个分支,历史视图就不会区分这些分支,您将在那里得到一堆断开连接的提交。

为了减少配置开销,可以使用GoCD的管道作为代码特性将管道作为数据结构写入git,并且可以使用模板生成回购

GoCD team 考虑使用此类模板来实现通配符分支支持。,但它还没有完成。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56805304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档