问题标签 [go-cd]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
622 浏览

ubuntu - 如何让 GoCD 服务器在 Docker 中持久运行以在 VM 中运行?

我正在尝试在 VM 中的 Docker 中运行 GoCD 服务器。为了测试设置,我在 VirtualBox 中创建了一个 Ubuntu 14.04 服务器,安装了 Docker,然后按照以下说明进行操作

https://github.com/gocd/gocd-docker & https://hub.docker.com/r/gocd/gocd-server/我跑了: docker run -tiP gocd/gocd-server

这行得通,但问题是如果我关闭终端(我必须在生产中这样做,因为我不能无限期地保持 SSH 终端打开),服务器就会死掉。我可以通过打开另一个终端到 VM 并运行 docker PS 来获取该服务器正在运行的端口。我能够从我的浏览器访问那个。当然,我需要一个允许我关闭终端的解决方案。

所以我再次尝试(在一个新的 VM 中),按 Ctrl+C,等待它关闭,然后运行:

docker rename randomDockerName gocd-server

接着

docker start gocd-server docker ps

然后我看到类似的东西

randomLetters gocd/gocd-server "/sbin/my_init" 25 minutes ago Up 10 minutes 0.0.0.0:32773->8153/tcp, 0.0.0.0:32772->8154/tcp gocd-server

所以我将我的 Ubuntu 14.04 主机上的 chrome 指向 ipaddress:32773 ,但我什么也没得到。现在,当 docker 映像与 docker run 一起运行时,它工作得很好,那么为什么这不能与 docker start 一起工作呢?我不能再次使用 run 因为这会创建一个新的 docker 映像,我必须保持终端打开以保持服务器运行。

所以我的问题是,我如何在虚拟机上的 Docker 中运行 GoCD 而不必保持登录到该虚拟机?

此外,Ubuntu VM 在 VirtualBox 中配置了 NAT 和桥接网卡。

0 投票
1 回答
1263 浏览

deployment - Go-CD:使用模板时管道的自动与手动触发

我们正在使用模板进行部署管道。我们有 3 个要部署的环境。我们面临的问题是触发管道。

理想的场景是自动部署到开发环境,我们在部署后运行 API 级别的功能测试,并在我们对手动和自动测试结果感到满意时手动部署到 UAT 和生产环境。

部署管道是相同的,我们使用环境名称作为参数从模板创建它们。有没有办法告诉 GO CD 有条件地从模板开始构建管道(类似于if dev start automatic else start manual元语言)?

0 投票
2 回答
4255 浏览

go-cd - GoCD - 如何跨机器/管道复制文件

我有两个在不同代理上运行的管道,一个用于构建并运行单元测试,另一个用于将工件部署到 tomcat。第一个管道被配置为存储工件,文件被复制到 server/artifacts/pipelines/xx 文件夹。如何让第二个管道复制第二个代理上的文件?

0 投票
2 回答
803 浏览

windows - 去 cd 配置问题

我在尝试从 Windows 服务器上的私人仓库添加 github 材料时遇到问题。

我见过很多人建议如何在基于 unix 的系统上添加 ssh 密钥和位置。尚未找到与 Windows 服务器相关的任何内容。

我正在使用 Go 最新版本,并在安装了 git 的 Windows Server 2008 上安装了 Go Server & Agent。

我可以使用 Git Bash 连接到私人仓库。

每当我尝试添加材料时,它一直在说 Checking Connection 并且看起来它会永远留在那里。

如果我使用基本身份验证它可以工作,但我想让它工作而不在 URL 中暴露我的密码。

有没有办法做到这一点?

0 投票
1 回答
1212 浏览

java - 如何在 Go SBT 任务中指定 JVM 标志?

我正在使用 Go CD 和gocd-sbt-plugin构建一个带有 SBT 的 Java+Scala 多模块项目。java.lang.OutOfMemoryError: Java heap space但是,当我尝试编译和打包模块时,内存不足 ( )。

在 Jenkins CI 中,SBT 插件为我提供了在构建操作中添加 JVM 标志和 sbt 标志的选项。目前我们正在使用这些 JVM 标志:

-Xmx2G -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -Xss2M

我没有在 Go 文档中找到答案,也没有尝试将上述参数放在“附加选项”文本框中。

编辑 SBT 任务截图

当我尝试后者时,我得到了这个堆栈跟踪:

我相信任务仍然失败,因为它没有使用这些导致 Jenkins 构建成功的标志。有人可以指出我可以在哪里将上述 JVM 标志传递到我的 Go SBT 任务中吗?

0 投票
0 回答
236 浏览

maven - 如何在任务和管道之间拆分 Maven 任务而不运行冗余的 Maven 任务

我正在尝试使用 GoCD 设置部署管道,如下所示:

  1. 编译、测试并部署到 Maven 仓库
    1. 查看 SVN 的源代码
    2. 运行 mvn clean compile test install
    3. 运行 mvn deploy 以将 WAR 工件部署到 Sonatype 存储库
  2. 部署到 Tomcat 服务器
    1. 从 Sonatype 存储库中检索 WAR 工件
    2. 运行 mvn tomcat7:redeploy 将其部署到我正在运行的 Tomcat 实例

问题是,我似乎无法拆分 1.2 和 1.3(例如),而不必在 1.3 中再次重新运行整个源代码检查。这对我来说似乎是多余的,因为我已经将它升级到了打包阶段,并且应该能够从那里继续运行。

在 1.3 和 2.2 之间,我可以看到它可以从 Sonatype 检索 WAR 工件,但我不能用 maven 做很多事情,因为我没有 pom.xml 可以用来执行 maven 任务。当然,我可以只添加源代码材料并再次运行整个 mvn 包 tomcat7:redeploy 循环,但我很确定这不是最初设计的目的。

我还可以编写一个 shell 脚本并要求 Go 运行它以将 WAR 文件复制到正确的位置,但同样,我本可以在一个 maven pass 中完成所有事情并节省一些精力,但这只会将整个管道减少到一个单个框对帮助可视化部署管道没有多大帮助。

如果我想将 maven 任务流拆分为不同的 Go 任务/管道,我能否就如何设计此管道获得一些建议?

谢谢黄

0 投票
1 回答
2492 浏览

go-cd - 如何以 root 权限运行 GoCD 的作业和任务?

我正在尝试将 shell 脚本作为 GoCD 中的任务运行,但该脚本似乎没有执行某些命令的 root 权限。

0 投票
1 回答
812 浏览

postman - 是否可以使用 GoCD 与 Postman 进行持续集成

目前,我正在探索 API 自动化的邮递员,并且我被持续集成过程所困扰。是否可以使用 GoCD 与 Postman 进行持续集成。我只得到 Jenkins 和 Postman 的 CI 文档。

0 投票
2 回答
108 浏览

git - 将新版本部署到容器

我在 AWS 上运行 CoreOS 集群。在 AWS 中的每个实例上,我运行一个 docker 容器。例如,我有 2 个名为 API 的实例,它们使用我们最新的软件版本运行 docker 映像。

我还有 6 个处理器实例,它们运行另一个最新版本的 docker 映像。

我想更新集群中的每个容器,所以今天我使用带有管道的GoCD来激活一个可以完成所有工作的 ansible-playbook。管道监听 github 项目,一旦我将更改推送到该分支,它就会激活管道。

它构建 API 和处理器新的 docker 镜像,将新更新的镜像上传到 dockerhub,然后连接到 AWS 实例并为刚刚上传的镜像发出 docker pull,最终使用新拉取的镜像启动容器。

这是我目前控制我的版本部署的方式。

问题是:

  1. 需要很长时间
  2. 它有时会因各种原因而失败
  3. 它不灵活(我需要硬编码特定分支以在 github 上收听并从中提取文件)

你有任何其他建议\工具来完成这项工作吗?有时我需要更新 3 台机器,有时需要更新 7 台机器,我需要一些可以扩展的东西。

0 投票
3 回答
1522 浏览

git - 如何从 gocd 获取最新提交并检测它是否更改了某些特定文件夹?

我正在使用 gocd 持续交付工具 + git。我的项目由许多子项目组成。我不想在每次提交时重建所有子项目,因此为每个子项目创建了一个管道。我知道,对于每个管道,比如 project1,我必须选择适当的工作目录并像这样运行:

  1. 获取触发 gocd 构建的 git commit。
  2. 检测该提交中的更改是否包含 project1 文件夹
  3. 如果整个项目的更改也影响了 project1 文件夹,则为 project1 运行自定义构建命令。

我如何从触发当前构建的 gocd 获得提交?是否只是 git 的最新提交?我认为最新提交在许多并发提交的情况下不是安全的选择,这就是为什么我想直接从 gocd 获取它 - 我希望它为每个构建触发事件存储它。如何检测提交对 bash 中的文件夹的影响?