使用 Jenkins 自动修改源代码 CI
Automating source code modification with Jenkins CI
我知道 Jenkins 可以制作成 运行 脚本,但我不确定这些脚本的可能性范围。
假设我在git中有一堆项目。我可以编写一个 bash 脚本来在本地自动执行拉取源代码、修改源代码、构建并将其部署到测试服务器等步骤。
我想用 Jenkins 达到同样的效果。可以通过 Jenkins 克隆存储库并构建二进制文件。是否也可以编写 Jenkins 脚本在构建源文件之前修改源文件的内容?
对于每个作业,您可以定义预构建步骤和 post-构建步骤。
一个步骤可以是一个脚本,你可以用 bash 做的所有事情都可以用 Jenkins 完成。极限是你的想象力。
我有一些建议给您:如果您正在使用构建工具(您应该使用一个),例如 Maven 或 gradle,请使用它来描述您所有的构建逻辑。仅使用 Jenkins 来启动自动测试、生成报告并可能部署到测试环境。
另一个建议:使用的脚本语言必须是服务器或节点可以理解的,这就是为什么我建议您使用像 Groovy (many samples here)
这样的脚本语言
更新
Maven/Gradle/... 为您提供了在任何计算机上重复构建过程的可能性,如果您将脚本与 Jenkins 一起使用,就会破坏它。
就我而言,我有两个测试环境:
- 一个是在本地构建的,带有嵌入式 tomcat、内存中的 activeMQ 和 HSQLDB 数据库,用于 运行 集成测试(所有计算机,包括 Jenkins server/nodes 执行它们)。 Jenkins 配置为在每次检测到新提交时启动构建过程(每小时多次)
- 另一个是 Jenkins 每晚构建的。它使用 Docker 构建和部署容器,一个使用 tomcat 和我的 Web 应用程序,另一个使用 RabbitMQ(它取代 ActiveMQ),另一个使用 PostgresQL(它取代 HSQLDB)。
如果我详细说明你的情况:
- 拉取源代码:必须由 Jenkins 执行以初始化作业
- 修改它:必须由 maven 执行
- 构建:必须由 maven 执行
- 部署到测试服务器:可以通过 Jenkins(脚本)或 maven(插件)完成
我知道 Jenkins 可以制作成 运行 脚本,但我不确定这些脚本的可能性范围。
假设我在git中有一堆项目。我可以编写一个 bash 脚本来在本地自动执行拉取源代码、修改源代码、构建并将其部署到测试服务器等步骤。
我想用 Jenkins 达到同样的效果。可以通过 Jenkins 克隆存储库并构建二进制文件。是否也可以编写 Jenkins 脚本在构建源文件之前修改源文件的内容?
对于每个作业,您可以定义预构建步骤和 post-构建步骤。 一个步骤可以是一个脚本,你可以用 bash 做的所有事情都可以用 Jenkins 完成。极限是你的想象力。
我有一些建议给您:如果您正在使用构建工具(您应该使用一个),例如 Maven 或 gradle,请使用它来描述您所有的构建逻辑。仅使用 Jenkins 来启动自动测试、生成报告并可能部署到测试环境。
另一个建议:使用的脚本语言必须是服务器或节点可以理解的,这就是为什么我建议您使用像 Groovy (many samples here)
这样的脚本语言更新
Maven/Gradle/... 为您提供了在任何计算机上重复构建过程的可能性,如果您将脚本与 Jenkins 一起使用,就会破坏它。
就我而言,我有两个测试环境:
- 一个是在本地构建的,带有嵌入式 tomcat、内存中的 activeMQ 和 HSQLDB 数据库,用于 运行 集成测试(所有计算机,包括 Jenkins server/nodes 执行它们)。 Jenkins 配置为在每次检测到新提交时启动构建过程(每小时多次)
- 另一个是 Jenkins 每晚构建的。它使用 Docker 构建和部署容器,一个使用 tomcat 和我的 Web 应用程序,另一个使用 RabbitMQ(它取代 ActiveMQ),另一个使用 PostgresQL(它取代 HSQLDB)。
如果我详细说明你的情况:
- 拉取源代码:必须由 Jenkins 执行以初始化作业
- 修改它:必须由 maven 执行
- 构建:必须由 maven 执行
- 部署到测试服务器:可以通过 Jenkins(脚本)或 maven(插件)完成