我现在正在使用GoCD来自动化我们的部署。
这些是我正在使用的版本。
go-agent 17.10.0-5380
go-server 17.10.0-5380我想揭露一个我无法通过配置GoCD修复的案例,我找不到任何能帮我解决这个问题的东西,很可能我漏掉了什么东西;-)
以下是我想要取得的成就:
我们有一个GIT存储库:frontend-app
在这个回购中,每个开发人员都可以按照以下命名约定将更改推送到不同的分支:dev-1、dev-2、.
实现的目标是,每当开发人员将更改推入dev-1时,goCD将在该分支中接受这些更改,构建它并部署到我们的环境dev-1中。
如果developer 2将更改推入dev-2,goCD将接受这些更改,构建它们并部署到dev-2环境中。
我尝试过的第一个方法,就是只使用1种材料来配置管道,并尝试在分支名称上使用一些glob模式。正如你在附图中所看到的。

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

通过这种方法,我能够让goCD拉出新的更改,并在特定的目标目录上签出repo。
对于我的管道,我已经配置了一个模板,在部署它之前,我已经配置了一组任务来构建项目,比如:npm install、npm test、npm run-script build等等……
但是,这些任务将在父目录(go-agent/pipelines/frontend-app/)上执行,而不是在目标目录(dev-1,dev-2,.)上执行。
go-agent/pipelines/frontend-app/
|_ dev-1
|_ dev-2
|_ ...我一直在阅读关于goCD环境变量的文章,但是我找不到任何保存目标目录的变量,所以我可以在任务中引用它。
当然,作为一种解决方案,您可以始终创建多个管道以实现这一点,即:
前部-app-dev-1,前端-app-dev-2,等等.
但我的问题是,我有8个开发环境和10个项目。因此,正如您可以想象的那样,单独配置所有这些东西是一项相当大的任务。
特别是,如果以后我们做了任何更改,这是大量的工作,手动和容易出错。
所以我的问题是:
提前谢谢。
发布于 2019-06-28 18:06:09
每个分支都需要一条管道。每个提交都会触发一个管道的新实例,如果您在一个管道中处理多个分支,历史视图就不会区分这些分支,您将在那里得到一堆断开连接的提交。
为了减少配置开销,可以使用GoCD的管道作为代码特性将管道作为数据结构写入git,并且可以使用模板生成回购。
GoCD team 考虑使用此类模板来实现通配符分支支持。,但它还没有完成。
https://stackoverflow.com/questions/56805304
复制相似问题