如何使用Jenkins/Maven插件生成模式名称以测试我的应用程序。 我需要此架构名称是唯一的(不存在于DB - Oracle/SQL中)。 是否有詹金斯独特的字符串生成器?为测试生成唯一模式名称
回答
如果您使用的是Execute Shell
命令,则可以使用BUILD_ID
和BUILD_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没有任何用处)。
这就是我们不使用它的原因。我们需要一些具有最大长度并且会过滤出非法字符的东西 – 2013-05-12 07:38:25
- 1. 生成唯一名称?
- 2. 的Xcode 8测试版:可测试名称必须是唯一
- 3. 如何为每个JSON值生成唯一名称
- 4. 如何为Tk顶层窗口路径生成唯一名称?
- 5. 为PrimeFaces remoteCommand生成并使用唯一的名称
- 6. 生成唯一的名称为每个在Django表单字段的模板
- 7. 如何为django模型生成唯一的文件名.FileField
- 8. Rake测试期望将表名称定义为模型名称?
- 9. Twilio试图为会议名称设置一个唯一的名称
- 10. 生成唯一
- 11. 使用AngularJS动态生成CSS类(使用唯一名称)
- 12. 从字符串生成唯一文件夹名称的问题
- 13. 给动态生成的文本框唯一的名称
- 14. 从文件名生成唯一散列
- 15. 生成唯一的用户名(omniauth + devise)
- 16. MPMediaItem生成唯一的文件名
- 17. 如何在TestNG中使用不同名称生成测试?
- 18. SBT:按名称生成测试源的输入任务
- 19. 如何为options_from_collection_for_select中的每个选项动态生成唯一的名称?
- 20. 为命名管道生成名称
- 21. 基于一个模式生成唯一的ID
- 22. 生成唯一值
- 23. ValidationRule为了实现唯一名称
- 24. 为luaL_newmetatable选择唯一名称
- 25. 用新名称生成T4模板库
- 26. node.js中的花式名称生成器
- 27. 以自动递增6-8模式生成唯一编号mysql
- 28. 在Bndtools/Bnd中运行名称模式的测试
- 29. LINQ:唯一名称列表
- 30. 唯一事件名称
您可以使用shell来生成这样的字符串,并将此步骤添加到您的工作中。示例shell脚本:var1 =($(openssl rand 100000 | sha1sum)); – patrungel 2013-05-09 07:49:33