Bash 使用Jenkins编写跨平台脚本

Bash 使用Jenkins编写跨平台脚本,bash,batch-file,ant,jenkins,cross-platform,Bash,Batch File,Ant,Jenkins,Cross Platform,在我们的组织中,我经常使用Jenkins来构建和部署项目。我有一组经过微调的bash脚本,它们是模块化的,可用于多个项目。这些由Jenkins在部署作业期间触发 当部署环境从Linux更改为Windows时,问题就出现了。bash脚本不再是选项(在多台/随机部署计算机上安装cygwin也不是选项)。我可以批量重写所有bash脚本,但这会导致双重维护,并导致微小的bug溜进任何一个环境 我要寻找的是一种编写部署脚本的跨平台能力,Jenkins可以提供开箱即用的支持,而无需在目标环境中预安装。ANT

在我们的组织中,我经常使用Jenkins来构建和部署项目。我有一组经过微调的bash脚本,它们是模块化的,可用于多个项目。这些由Jenkins在部署作业期间触发

当部署环境从Linux更改为Windows时,问题就出现了。bash脚本不再是选项(在多台/随机部署计算机上安装cygwin也不是选项)。我可以批量重写所有bash脚本,但这会导致双重维护,并导致微小的bug溜进任何一个环境

我要寻找的是一种编写部署脚本的跨平台能力,Jenkins可以提供开箱即用的支持,而无需在目标环境中预安装。ANT出现在我的脑海中,因为Jenkins可以在Windows或Linux上运行ANT,而无需安装任何东西,但根据“声明性”语言的定义,ANT缺少编写部署脚本所需的一切


我的备选方案是什么?

不幸的是,没有本机跨平台脚本语言。但这并不意味着我们无法找到自己可怕的解决方案。比如杂种巴斯奇或巴什

混合A:

date > /dev/null # >nul <nul & goto Batch
#Bash
echo Hello World
exit 0

:Batch
@echo off
echo Hello World
exit /b 0

这仍然需要复制逻辑,但至少它们共享同一个文件。请注意,要使文件在Windows上正确运行,扩展名必须为.bat或.cmd。

我无法给出全面的答案。但是我想你要么重写你的脚本进行批处理,要么安装一些东西。但是,这里有一个主题相关的线程:
: '"
:: Batch
@echo off
echo Hello World
exit /b 0
"'

#Bash
echo Hello World
exit 0