GoCD 的开发环境创建

乔梁 | 2022-04-22

GoCD 是什么

GoCD 是一个持续交付服务器。GoCD 帮助您自动化,并优化构建测试发布周期,从而无需担心、持续交付你的软件产品。

GoCD 开发环境的建立

官方声明的软件环境

GoCD 需要下列软件包

Git >= 2.20 (https://git-scm.com/downloads)

64-bit JDK 17+ (We recommend downloading it from OpenJDK, or Adoptium)

NodeJS >= 16 (https://nodejs.org/en/download/)

Yarn v1 package manager

Generally, `npm install -g yarn` will suffice;

otherwise, see https://yarnpkg.com/en/docs/install

C/C++ build toolchain: certain node packages might need to build native extensions

gcc/g++ (linux only)

Microsoft Visual C++ Build Tools 2015 (Windows only).

Microsoft Build Tools 2015 (Windows only).

以下内容在 MacOS上验证通过

第一步:准备工作

使用 homebrew安装

$> brew install git yarn openjdk nodejs
  • MacOS Big Sur V11.6.5
  • gradle version Gradle 7.4.2
  • IntelliJ Idea 2022.1 CE
  • Java Version “17.0.2” 2022-01-18 LTS
  • node.js version 17.9.0
  • Perforce Version: P4D/MACOSX1010X86_64/2020.1/1953492 (2020/04/24) License: none(免费版本)
  • Git version 2.35.3
  • SVN V1.14.1 (r1886195)

第二步:获取代码

The main repository is: https://github.com/gocd/gocd

第三步:验证可以本地构建 Zip 安装包

在 Terminal 进入刚下载的 gocd 目录,并运行构建命令

cd gocd
$> gradle clean agentGenericZip serverGenericZip

或者

$> gradle clean agentGenericZip serverGenericZip

成功构建后,通过下面的命令查看, 得到类似如下输出

$ ls installers/target/distributions/zip/
go-agent-16.7.0-3795.zip  go-server-16.7.0-3795.zip

解压后使用下面命令查看,你会得到类似如下输出

$ find . -name target -type d
./addon-api/database/target
./agent/target
...
./tfs-impl/target
./util/target

如下一切正常,我们就可以设置 IDE了。

第四步:设置 IntelliJ Idea

对于TypeScript、JavaScript、Sass、Ruby和其他部分, 有人会使用其他编辑器,例如 VS code、Sublime Text、Vim等,这些都是完全可选的。

1. IDEA 准备工作

使用下面命令,先组织一下工作目录

gradle clean prepare

2. 通过 Build.gradle 导入项目

在准备阶段成功后,启动 IDEA,并通过选择gocd目录下的 build.gradle 文件打开该项目。

build.gradle 文件位于工作目录gocd下。

此时,IntelliJ IDEA可能会提示你:单击导入 gradle 项目 (import gradle project)

3. 设置 JDK

点击菜单「File」-> 「Project Structure」 ,在界面中选择装好的 JDK 17

4. 设置 Gradle Settings

点击菜单「IntelliJ IED」,在界面中选择 Gradle,并设置如下。

5. 设置 Junit 模板

  • 点击菜单 「Run」 -> 「Edit configurations...」 -> 「Edit Configuration Templates…」
  • 左侧列表中点击 JUnit 5,然后再点击右侧出现的选项 add new configuration

  • 点击「Modify Options」,出现下拉菜单,点击「Add VM Options

  • 在带有 -ea文字的 VM Option 一栏中添加参数,如下所示
 -ea --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED

Junit 模板设置完成,以后在 IDEA 中运行 Junit 5 测试用例时,都会使用这个模板。

第五步: 在 IntelliJ Idea 中直接启动 DevelopmentServer

  • 找到类文件 DevelopmntServer.java,选择函数 main()后,运行它。 此次会失败。

  • 失败后,打开 「Run」-> 「Edit Configration」,加入下面的参数,如下图所示。

--add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED -Xmx2g

  • DevelopmentServerWorking Directory 设置为 Server,见上图。

此时,即可再次运行 DevelopmentServer,结果应如下图所示。

  • 打开浏览器,访问 http://localhost:8153,可见如下页面。

第六步: 在 IntelliJ Idea 中直接启动 DevelopmentAgent

  • DevelopmentServer的步骤一样,但仅需要设置 Working DirectoryAgent,见下图。

  • 在 IDEA 中执行 DevelopmentAgent.main(),可见下图。

  • 打开浏览器,访问 http://localhost:8153,点击页面上方的Agent,可见刚刚启动并自动注册的Agent。

注意需要保持 DevelopmentServer 运行。

第七步:运行 Javascript 测试用例

在开发环境中运行 Javascript 测试用例(运行非常快,分钟级)

  • 首先在 IDEA 中启动 DevelopmentServer
  • 在浏览器中打开 http://localhost:8153/go/assets/webpack/_specRunner.html

可以看到如下界面。

如果想在浏览器上要运行老的 Javascript Spec,先运行下面的命令:

$> gradle jasmineOldServer

然后,打开浏览器,访问http://localhost:8888/

可以看到如下界面。

在CI环境中运行 Javascript 测试用例(运行非常慢)

在命令行中运行 下面的命令

$> gradle jasmine