2013-05-09 53 views
0

如何使用Jenkins/Maven插件生成模式名称以测试我的应用程序。 我需要此架构名称是唯一的(不存在于DB - Oracle/SQL中)。 是否有詹金斯独特的字符串生成器?为测试生成唯一模式名称

+0

您可以使用shell来生成这样的字符串,并将此步骤添加到您的工作中。示例shell脚本:var1 =($(openssl rand 100000 | sha1sum)); – patrungel 2013-05-09 07:49:33

回答

2

如果您使用的是Execute Shell命令,则可以使用BUILD_IDBUILD_NUMBER以及BUILD_TAG。 Jenkins版本中的BUILD_TAG将完全独一无二(它的编号为jenkins-${JOB_NAME}-${BUILD_NUMBER}),但可能过长或取决于您的作业名称,可能包含不适合您数据库的字符。

但是,这些变量可以用来构造唯一但可识别的名称,您可以稍后使用它来查看特定运行的数据库输出或清理某个作业之前的所有数据库。

如果你不使用Execute Shell,那么Inject environment variables to the build process选项会将这些相同的变量直接放到构建环境中,在那里它们可以被你的代码访问(假设你可以访问环境变量)。

数据库命名

对于Oracle,看来数据库名称仍限制为8个字符(作为最后一个参考,我发现的),因此你可能需要使用的短静态字符串附加在它后面的BUILD_NUMBER,这在shell中很容易创建。

如果您担心BUILD_NUMBER变得太大,那么您可以通过执行像十六进制编码这样的操作来减少空间(减少用于相同数字的字符并仍使用保证在ASCII中有效的字符)。

如果这是不够的,我已经使用base64编码来存储需要以ASCII存储的值,但是对于存储空间来说太大了。例如,如果您将3个二进制字节编码为base64,则会得到4个ASCII字节,您可以将其用作数据库名称的一半。这个范围大约有2400万个构建,这应该是足够的,并且解码很简单。当然,你必须先将数字转换为二进制数才能进行编码(数字的ASCII版本的base64没有任何用处)。

+0

这就是我们不使用它的原因。我们需要一些具有最大长度并且会过滤出非法字符的东西 – 2013-05-12 07:38:25