Jenkins: 使用groovy + job-dsl 创建并触发job 背景: 我们的 Automation 测试脚本需要在10个不同语言的机器上跑,本地化测试产品. 我们用Jenkins启动测试执行,需要同时向1-10个机器发送文件和脚本运行命令,现有Jenkins的配置采用master/slave 机制如下: Dispatcher Job: 1. 启用参数化,每个语言机器传递两个参数: - Choice Parameter: slave Node 名,比如这里的NodeLabel1,表示第…
引子 我们用一段gradle的脚本做引子,理解这一段脚本与一般的groovy代码是怎么联系起来的 buildscript { repositories { jcenter() mavenLocal() //或者使用指定的本地maven 库 maven{ url "file://D:/repo" } } dependencies { classpath 'com.android.tools.build:gradle:1.2.3' } } DSL的定义 DSL(Domain Specifi…
一:DSL 概念 指的是用于一个特定领域的语言(功能领域.业务领域).在这个给出的概念中有 3个重点: 只用于一个特定领域,而非所有通用领域,比如 Java / C++就是用于通用领域,而不可被称为 DSL,同样也不可把 Groovy称为 DSL. 语言,必须经过编写后才可发挥它的功能.比如:五线谱编写后成乐谱: ANT编写用于编译: SVN命令编写后可对资源库进行操作: Shell编程: SQL编程: PL-SQL编程等等. 忽略具体的运行环境(媒介),可以是纸. XML文件.命令行. She…
此文需要有Jenkins pipeline job 的简单使用经验 场景 我们日常的测试函数, 一般是不能仅仅在本地跑的,还需要一个公共的跑测试的环境,作为合并新的PR的依据. 如果用Jenkins 作为自动跑新分支test任务的环境的话,就会面临一个问题:如何切换到PR请求对应的分支去跑test. Jenkins 不能直接获取触发事件的git分支 自己在网上查了一下,发现网上现有的 Jenkins自动切换分支的帖子 ,要么创建了多个Jenkins job,用过滤规则去实现不同的分支触发不同的J…
利用jenkins的远程构建功能,我们可以使用任何脚本,甚至定制一个Web页来控制Job的执行,但是远程构建你如果直接使用的话,老是需要登录才能执行,如何避免登录?稍微折腾了一下,调通了. 1.首先去系统管理->管理插件里边,搜索并安装插件 Build Authorization Token Root Plugin,不会安装插件的先去搜一下,安装好后如下图: 2.然后点击右上角,你登录的用户名,再点击设置,找到API Token,复制下来你这个用户的Token,用于远程访问Job用. 3.找到你…
利用jenkins的远程构建功能,我们可以使用任何脚本,甚至定制一个Web页来控制Job的执行,但是远程构建你如果直接使用的话,老是需要登录才能执行,如何避免登录?稍微折腾了一下,调通了. 1.首先去系统管理->管理插件里边,搜索并安装插件 Build Authorization Token Root Plugin,不会安装插件的先去搜一下,安装好后如下图: 2.然后点击右上角,你登录的用户名,再点击设置,找到API Token,复制下来你这个用户的Token,用于远程访问Job用. 3.找到你…
为了便于项目中对发布的版本进行回滚,所以我们每次发布完成以后自动创建git tag. 1,创建一个Jenkins任务,命名成为push_tag_demo: 2,配置<源码管理>,这里配置比较特殊的地方需要仓库的名字,后面创建tag的时候需要使用: 3,在<构建后操作>操作中选择"Git Publisher",来配置发布后执行的任务. 注意: 配置Git Publisher 时,需要我们勾选"Push Only If Build Succeeds&quo…
调用S/4HANA销售订单创建函数SD_SALES_DOCU_MAINTAIN创建一个销售订单时,会触发生产订单的创建. 销售订单的每个行项目对应一个独立的生产订单,SD_SALES_DOCU_MAINTAIN相当于CRM里的CRM_ORDER_MAINTAIN,在LOOP里处理每一个行项目: 观察这个函数内部的调用栈,发现一个subroutine EIGENFERTIGUNG_BEARBEITEN.: EIGENFERTIGUNG的意思是Own production: BEARBEITEN的意…
#pragma mark 控制器的view加载完毕的时候调用 //一般在这里进行界面的初始化 - (void)viewDidLoad { [super viewDidLoad]; NSLog(@"%s","ddffg"); //添加 //创建控件 UIButton *btn=[[UIButton alloc]init]; //添加控件 [self.view addSubview:btn]; //设置控件的frame btn.frame=CGRectMake(, ,…
现状:现在是这样的,每个开发push时,都触发jenkins进行构建 期望:只有当代码被push到master时才进行构建 (根据使用的git平台)做这些配置需要先了解一些概念: (github) pull request (gitlab) merge request 理解 GitHub 的 Pull Request 和 GitLab 的 Merge Request 有区别吗?看这篇 https://cloud.tencent.com/developer/article/1341633 个人理解…