mysql 如何将JDBC驱动程序添加到Jenkins管道?

0yg35tkg  于 2022-12-03  发布在  Mysql
关注(0)|答案(3)|浏览(143)

我想在一个管道脚本中创建一个数据库,以供部署的应用程序使用。但首先我开始测试连接。我遇到了以下问题:

java.sql.SQLException: No suitable driver found for jdbc:mysql://mysql:3306/test_db

我安装了数据库插件和MySQL数据库插件。
如何获取JDBC驱动程序?

import groovy.sql.Sql
node{

    def sql = Sql.newInstance("jdbc:mysql://mysql:3306/test_db", "user","passwd", "com.mysql.jdbc.Driver")
    def rows = sql.execute "select count(*) from test_table;"
    echo rows.dump()
}

在albciff回答后更新:

我的版本:

Jenkins = 2.19.1

Database plugin = 1.5

Mysql database plugin = 1.1

最新的测试脚本。

import groovy.sql.Sql

Class.forName("com.mysql.jdbc.Driver")

会掷回:

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
ql3eal8s

ql3eal8s1#

MySQL DataBase Plugin文档中,您可以看到包含 MySQLjdbc 驱动程序:
请注意MySQL JDBC驱动程序在GPLv 2下,但FOSS例外。此插件本身符合FOSS例外,但如果您要重新分发此插件,请务必检查许可条款。Drizzle(+MySQL)数据库插件可作为此插件的替代,并且该插件在BSD许可下。
更具体地说,此插件的实际最新版本(1.1)包含连接器版本5.1.38:
版本1.1(2016年5月21日)mysql-连接器版本5.1.38
所以可能为了让驱动程序可用,你必须强制驱动程序注册。
为此,请在代码中示例化连接之前使用Class.forName("com.mysql.jdbc.Driver")

import groovy.sql.Sql
node{
    Class.forName("com.mysql.jdbc.Driver")
    def sql = Sql.newInstance("jdbc:mysql://mysql:3306/test_db", "user","passwd", "com.mysql.jdbc.Driver")
    def rows = sql.execute "select count(*) from test_table;"
    echo rows.dump()
}

更新日期:

为了在 Jenkins pipeline groovy脚本中提供 JDBC 连接器类,您需要将DataBase plugin更新为最新版本:
版本1.5(2016年5月30日)管道支持

ercv8c1e

ercv8c1e2#

您只需在Java类路径中添加Java连接器即可。
如果jenkins运行的是java〈9,你可能会在里面找到合适的位置:<java_home>/jre/lib/ext
如果jenkins运行的是java〉= 9,你可能会在里面找到正确的位置:/usr/share/jenkins/jenkins.war
要查找路径,您可以检查:

  • http://your.jenkins.host/systemInfo(或通过GUI导航系统信息路径)并搜索java.ext.dirsjava.class.path
  • http://your.jenkins.host/script(运行控制台脚本,如System.getProperty("java.ext.dirs")System.getProperty("java.class.path")

下面的代码片段可以帮助你在docker中运行jenkins.war:

#adding extra jars to default jenkins java classpath (/usr/share/jenkins/jenkins.war)
RUN sudo mkdir -p /usr/share/jenkins/WEB-INF/lib/
RUN whereis jar #just to find full jar command classpath to use with sudo
COPY ./jar-ext/groovy/mysql-connector-java-8.0.21.jar /usr/share/jenkins/WEB-INF/lib/
RUN cd /usr/share/jenkins && sudo /opt/java/openjdk/bin/jar -uvf jenkins.war ./WEB-INF/lib/mysql-connector-java-8.0.21.jar
qjp7pelc

qjp7pelc3#

对于在Java〉= 9上运行的Jenkins,在${JENKINS_HOME}/war/WEB-INF/lib--webroot目录下添加jdbc驱动程序。

相关问题