作为Jenkins管道脚本的一部分,我需要执行一些SQL脚本来初始化数据库(mariadb)。这项工作在我拥有的Jenkins奴隶上运行。我维护Jenkins主实例,但不维护其运行的主机。
我的第一次尝试只是在脚本中包含内联代码以调用“ Sql.newInstance(…)”和“
sql.execute(…)”。之所以失败,是因为mariadb jar不在类路径中。
然后,我尝试为从属服务器设置CLASSPATH env var,向其中添加mariadb客户端jar,然后断开并重新连接从属服务器。这似乎没有效果。
然后,我尝试了@ GrapeConfig / @ Grab方法。我使用@GrapeConfig设置“ systemClassLoader =
true”。这失败,并显示“无法找到合适的类加载器”。因此,我然后尝试删除@GrapeConfig,这失败,并显示“
RuntimeException:无法创建类javax.xml.parsers.SAXParserFactory的提供程序”。
接下来,我想我将尝试直接通过“ sh”命令运行“ mysql”并将其输入我的sql脚本的内容。这似乎是合理的,但我不确定是否可行。
我看到过一些笔记,其中谈到了各种尝试,但是我从未听说有人成功地做到了这一点。
尽管以“ java方式”实现这一点似乎合乎逻辑,但我发现仅运行’ sh("mysql ... < file.sql")
‘
更直接。它避免了所有麻烦的类路径问题。它确实要求将数据库客户端安装在从属设备上,并且不允许数据库独立(不是很重要)。实际上,我实际上是在容器中运行mariadb的,所以生成的命令行更像是“
docker exec -i container mysql ... < file.sql
”(注意“ -i”,而不是通常的“
-it”,因为如果在文件)。
更新 :
从macg33zr的肘部开始,我发现将任务添加到现有的Gradle构建脚本中来操作数据库非常容易。我尚未完全实现所需的功能,只是验证它可以与简单的“
select”语句一起使用。
我已经在单独的Gradle配置中拥有JDBC驱动程序jar,因为我需要将这些工件存储在容器的lib目录中。
以下是对所需部分的完整总结:https :
//discuss.gradle.org/t/jdbc-driver-class-cannot-be-loaded-with-
gradle-2-0-but-worked-with-1 -12/2277。关键的细微事情是将JDBC驱动程序jar添加到类加载器。
问题内容: 我能够运行以下shell脚本,但无法从Jenkins管道代码运行。 尝试1。 输出: 尝试2: 尝试过sh“”“ 输出 : 美元符号后的非法字符串体字符;解决方案:要么转义文字美元符号,要么将值表达式括起来 有人能帮我吗? 问题答案: 这应该工作。 您还需要在调用下面的新subshell时转义$
问题内容: 我正在尝试从Jenkins运行PowerShell脚本,但是它似乎完全忽略了执行策略!通过直接执行powershell.exe或使用PowerShell插件来实现 附加信息: Jenkins作为Windows服务运行(使用本地系统帐户,非交互式)。连接到该服务器并检查执行策略确实是: 但是,在运行Jenkins构建时,情况并非如此。这是在构建步骤中执行的输出: 我还尝试从构建步骤明确设
问题内容: 我正在尝试在我的Jenkins版本中屏蔽密码。 我一直在尝试mask-passwords插件。 但是,这似乎不适用于我的Jenkins管道脚本,因为如果定义了密码,然后在这样的脚本中使用它,则会得到: 如果使用,则其值将解析为。 那么,如何在Jenkins管道脚本中屏蔽密码? 问题答案: 最简单的方法是使用Credentials插件。 您可以在此处定义不同类型的凭据,无论是单个密码(“
问题内容: 我有一个jenkins管道,该管道可以构建Java工件,将其复制到目录中,然后尝试执行外部脚本。 我在管道脚本中使用此语法来执行外部脚本 该脚本只是一个简单的Docker构建脚本,但是由于以下异常,构建将失败: 由于脚本不会创建任何目录,因此该错误令人困惑。它只是构建一个docker映像,并将新构建的java工件放置在该映像中。 如果我在jenkins中创建另一个作业,该作业执行外部脚
我使用Jenkins在docker容器中使用以下命令 码头工人拉詹金斯/詹金斯 docker run-p8080:8080--name=jenkins master jenkins/jenkins 获取此错误 calc.py/var/jenkins_home/workspace/pythoncalculator@tmp/耐用-b7e99e01/脚本。sh:1:/var/jenkins\u home