为测试生成唯一模式名称

时间:2013-05-09 03:20:38

标签: database maven testing jenkins continuous-integration

如何使用Jenkins / Maven插件生成用于测试我的应用程序的模式名称。 我需要这个模式名称是唯一的(在DB-Oracle / SQL中不存在)。 是否有Jenkins唯一的字符串生成器?

1 个答案:

答案 0 :(得分:2)

如果您使用Execute Shell命令,则BUILD_IDBUILD_NUMBER可与BUILD_TAG一起使用。 BUILD_TAG在Jenkins构建中是完全唯一的(它是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没有用处)。