我在我们的组织中经常使用 Jenkins 来构建和部署项目。我有一组经过微调的 bash 脚本,可以模块化并可重用于多个项目。这些是由 Jenkins 在部署作业期间触发的。
当部署环境从Linux更改为Windows时,就会出现问题。 bash 脚本不再是一个选项(在多个/随机部署计算机上安装 cygwin 也不再是一个选项)。我可以批量重写所有 bash 脚本,但这会导致双重维护,并且在任何一个环境中都会出现小错误。
我正在寻找的是编写部署脚本的跨平台能力,以及 Jenkins 可以开箱即用的支持,而无需在目标环境中预先安装某些东西。我想到了 ANT,因为 Jenkins 可以在 Windows 或 Linux 上运行 Ant,而无需安装任何东西,但根据“声明性”语言的定义,Ant 缺少编写部署脚本所需的一切。
我有什么选择?
最佳答案
不幸的是,没有原生的跨平台脚本语言。但这并不意味着我们不能拼凑出我们自己可怕的解决方案。例如混合 Bastch 或 Batsh...
混合体A:
date > /dev/null # >nul <nul & goto Batch
#Bash
echo Hello World
exit 0
:Batch
@echo off
echo Hello World
exit /b 0
混合体B:
: '"
:: Batch
@echo off
echo Hello World
exit /b 0
"'
#Bash
echo Hello World
exit 0
这仍然需要重复逻辑,但至少它们共享相同的文件。请注意,扩展名必须是 .bat 或 .cmd,文件才能在 Windows 上正确运行。
关于bash - 使用 Jenkins 进行跨平台脚本编写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22462013/