Scripted

Jenkins之jenkinsfile基础

有些话、适合烂在心里 提交于 2021-02-17 07:15:32
精华推荐 : 重磅发布 - 自动化框架基础指南pdf 在介绍jenkinsfile前先看下pipeline的概念。 jenkins官方文档:Jenkins Pipeline (or simply "Pipeline") is a suite of plugins which supports implementing and integrating continuous delivery pipelines into Jenkins. 即pipeline是一套jenkins官方提供的插件,它可以用来在jenkins中实现和集成持续交付。 通常情况,大多新手都是在jenkins界面下直接写pipeline,甚至还未尝试写pipline,一般大家这样写的: 笔者在工作中则是利用jenkinsfile来写,将所有的pipeline代码化,并托管在git上做版本管理。 从而实现像写代码一样,高度定制、封装pipeline,以提升pipeline的可用性、可维护性。 这也是笔者推荐大家掌握的姿势:代码化你的pipeline 下面我们看下jenkinsfile的基本介绍,后续持续的把pipeline系列写下去,使用jenkinsfile的好处有哪些? 可以对pipeline代码进行评审/迭代 可以对pipeline代码进行审计跟踪 pipeline中的单一可信数据源

BIRT 中根据参数实现动态日期分组

邮差的信 提交于 2020-08-13 04:03:39
BIRT一般擅长处理规则一致的数据,若条件不一致的动态运算在报表中是很难实现的。常规办法是创建scripted data sources, 在该脚本源上自行处理业务逻辑把数据准备好,然后直接传给BIRT展现。但SQL或scripted data sources的方式,代码写起来非常麻烦,而且工作量很大。 比如要处理这么个场景:按照开始日期、结束日期统计一段时间内订单,但要根据起止日期的跨度长短实现按天、按周、按月、按年动态分组显示结果。查询流程如下图所示: 建议使用集算器,其丰富的集合运算可以方便地完成这类计算和逻辑判断,比Java写的代码要短,比存储过程写起来更简单,比如类似的计算在集算器里可以这样写: A B 1 =[] 2 =demo.query@x("select ORDERID,ORDERDATE,ORDERAMOUNT from ORDERS where ORDERDATE>=? and ORDERDATE<=?",startDate,endDate) 3 =interval(startDate,endDate) 4 if A3>365 >A1=startDate|A3.(elapse@y(startDate,~)) 5 else if A3>30 >A1=startDate|A3.(elapse@m(startDate,~)) 6 else if A3>15 >A1

jenkins学习之Jenkins流水线

喜欢而已 提交于 2020-08-09 12:13:17
Jenkins pipeline 最近由于项目需要,接触到了Jenkins 2.0版本,其中最重要的特性就是提供了对pipeline的支持。 简单的来说,就是把Jenkins1.0版本中,Project中的相关配置信息,如SVN/Git的配置,Parameter的配置等都变成Code,即Pipeline as Code。 这样的优势为可以通过写代码的形式配置Project,且Jenkins中内置了常用的steps。实现了构建步骤代码化、构建过程视图化。 声明性管道与脚本管道 声明式管道 和 脚本化管道 的主要区别在于它们的语法和灵活性 声明性管道是一个相对较新的特性,它提出了pipeline as code的概念,它使管道代码更易于读写。管道代码是在 Jenkinsfile 文件中编写的,可以将其存放到源代码管理系统(如Git)。 脚本化管道是一个传统方式。在这个管道中,Jenkinsfile 被写在 Jenkins UI实例上。 虽然这两条管道都是基于Groovy DSL的,但是脚本化的流水线使用更严格的基于Groovy的语法,因为它是Groovy基金会上构建的第一条管道。由于这个Groovy脚本并不是所有用户都想要的,所以引入声明性管道是为了提供一种更简单、更具选择性的Groovy语法。 声明性管道在标记为“pipeline”的块中定义,而脚本化管道在“node”中定义。

使用Jenkins pipeline流水线构建docker镜像和发布

China☆狼群 提交于 2020-05-02 14:26:34
新建一个pipeline job 选择Pipeline任务,然后进入配置页面。 对于Pipeline, Definition选择 "Pipeline script from SCM". 需要注意的是Script Path, 这里要指定项目中Jenkinsfile文件的具体位置。默认是根目录。我这里是maven的一个子模块,所以嵌套一层。 项目中添加Jenkinsfile 关于Jenkinsfile可以查阅w3c翻译整理的文档: https://www.w3cschool.cn/jenkins/jenkins-qc8a28op.html 以下是我自己的Jenkinsfile,这里用作注释和备忘 node('slave001') { stage('Prepare') { echo "1.Prepare Stage" checkout scm pom = readMavenPom file: 'location/pom.xml' docker_host = "docker.ryan-miao.com" img_name = "${pom.groupId}-${pom.artifactId}" docker_img_name = "${docker_host}/${img_name}" echo "group: ${pom.groupId}, artifactId: ${pom

docker 中运行的 jenkins 使用 npm 构建 Node.js 应用

人盡茶涼 提交于 2020-04-30 17:31:01
一、jenkins 的安装 配置要求 最小 256MB 内存,推荐 512MB 以上 10GB硬盘空间,用于安装 Jenkins、Docker 镜像和容器 在 Docker 中运行 Jenkins 我们在服务器上面为 jenkins 准备数据目录,假设为 /home/data/www/jenkins.wzlinux.com ,前提是我们已经在服务器上面安装好了 docker。 docker run \ --name jenkins \ -u root \ -d \ -p 8080:8080 \ -p 50000:50000 \ -e TZ="Asia/Shanghai" \ -v /home/data/www/jenkins.wzlinux.com:/var/jenkins_home \ -v /var/run/docker.sock:/var/run/docker.sock \ --restart=on-failure:10 \ jenkinsci/blueocean 配置 jenkins 使用浏览器打开服务器的 8080 端口,并等待 Unlock Jenkins 页面出现。 可以使用如下命令获取管理员的密码: docker logs jenkins 关于插件的安装我这里也不介绍了,有什么不懂的可以微信联系我。 二、配置 pipeline 2.1、配置源 我们从 github

Jenkins pipeline之声明式的jenkinsfile

倾然丶 夕夏残阳落幕 提交于 2020-04-22 12:22:58
Jenkins pipeline之声明式的jenkinsfile 内置的关键字 pipeline : 是pipeline的跟节点 agent: 定义piple使用哪个账号在哪个机器上执行 post: 定义pipeline最后执行的一组任务,支持多种条件判断always, changed, fixed, regression, aborted,failure, success, unstable, unsuccessful, and cleanup. stages: 是多个stage的父节点。 stage: 代表整个pipleline里的一个阶段,stage里面才是具体的steps。 steps: 定义在stage的内部,表示具体如何执行。 environment: 定义公用的环境变量 options: 定义pipeline或者plugin的参数设置。 parameters: 定义了整个pipeline的外部参数,必须有默认值,用户也可以在启动时指定新的参数 triggers: 定义如何触发pipeline,例如cron,pollSCM,或者upstream。 tools: 定义需要安装的工具,且会自动加入到PATH input: 允许pipeline与用户交互,等待用户确认然后继续。 when: 条件语句 pipeline的实例代码 其实还是非常直观易懂的: pipeline {

Jenkins pipeline jenkinsfile的两种写作方式声明式和脚本式

生来就可爱ヽ(ⅴ<●) 提交于 2020-04-22 12:22:28
Jenkins pipeline jenkinsfile的两种写作方式,声明式和脚本式。 为什么需要pipeline? 在多年前Jenkins成为最流行的持续集成服务器的Jenkins 1.x时代,所有的新功能都是通过安装插件来增强,所有的配置都是通过网页界面来实现的。 在Jenkins迈入2.x的时代,为了跟随时代的步伐(everything is code),Jenkins引入了配置及代码的概念。用代码来表示流程是为了版本控制和自动化的方便,使得配置跟源代码一样可重现,更加容易地支持多分支开发部署。 具体地来说,就是Jenkins引入了pipeline的概念,可以使用groovy来编写Jenkinsfile。 为什么两种实现pipeline的方式呢? 真的是看戏的不嫌事大,同一功能两种实现,很多用户也会被搞迷吧。下面咱们就来捋一捋这个发展过程。 Jenkins是使用Java实现的,所以在很早的时候就引入了groovy作为DSL,管理员可以使用groovy来实现一些自动化和高级的管理功能。因为groovy引擎已经集成到Jenkins,所以在pipeline一开始很自然就使用groovy来编写Jenkinsfile。 但是groovy毕竟是一种语言,对于没有太多编程经验的小白这个学习曲线有点太陡峭。这个时候声明式的pipeline就出现了,主要是为了降低入门的难度。

YouTube will no longer restrict violent video game content

孤者浪人 提交于 2019-12-06 10:14:50
YouTube said today that it will no longer restrict violent video game content, after an evaluation that concluded there is a difference between the simulated violence of movies and games and the depiction of real world violence. I learned about this restriction when I posted a story about whether it was OK for Call of Duty: Modern Warfare developers to include a scene in their popular game that showed a child being forced to defend herself and kill a Russian soldier during a chemical attack on her village in a fictional Middle Eastern country. The scene also showed dead children and a dead dog

YouTube will no longer restrict violent video game content

倾然丶 夕夏残阳落幕 提交于 2019-12-04 17:35:49
YouTube said today that it will no longer restrict violent video game content, after an evaluation that concluded there is a difference between the simulated violence of movies and games and the depiction of real world violence. I learned about this restriction when I posted a story about whether it was OK for Call of Duty: Modern Warfare developers to include a scene in their popular game that showed a child being forced to defend herself and kill a Russian soldier during a chemical attack on her village in a fictional Middle Eastern country. The scene also showed dead children and a dead dog