bash - 使用 Jenkins 进行跨平台脚本编写

标签 bash batch-file ant jenkins cross-platform

我在我们的组织中经常使用 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/

相关文章:

regex - 如何从 Bash 中的正则表达式中提取多个环境变量?

Bash - 用 `set` 恢复位置参数有什么意义?

windows - 如何在 Windows 命令提示符中将命令的输出值分配给变量?

batch-file - 无法使用“FOR”命令设置变量

batch-file - 批处理文件处理文件夹名称中的符号 (&)

运行 Jar 后 Java Ant 无法完成任务

ant - TESTNG 无法在类路径中找到类问题

bash -\n 在 heredoc 中的变量中

ruby-on-rails - 如何让crontab成功启动WEBrick

JavaFX Self Installer With Inno Setup 5 - 修改后的 .iss 文件放在哪里?