Jenkins-Pipeline触发机制
设置好了功能强大的流水线后,接下来我们要做的就是去执行流水线,如果都靠手动去触发流水线,显然不符合带着自动化基因新一代工程师的风格,必须自动触发。那么Jenkins的Pipeline支持哪些触发机制呢。一起来看一下。
定时触发:croncron规则与crontab的规则是一样的
12345678910111213pipeline{ agent any triggers{ cron('0 0 * * *') } stages{ stage('半夜触发'){ steps{ echo "凌晨执行" } } }}
轮询代码仓库周期性检查代码,看代码是否有更新。这种方式需要使用
12345678910111213pipeline{ agent any triggers{ pollSCM('* * * * *') } stages{ stage(' ...
Jenkins-Pipeline语法实例
Jenkins Pipeline支持的指令
指令名
说明
作用域
agent
定义执行任务的代理
stage 或pipeline
environment
设置环境变量
stage或pipeline
tools
自动下载并安装指定的工具,并将其加入到PATH变量中
stage或pipeline
input
暂停pipeline,提示输入内容
stage
options
配置Jenkins pipeline本身,如options{retry(3}},指pipeline失败时再重试2次
stage 或 pipeline
parallel
并行执行多个step
stage
parameters
执行pipeline前传入一些参数
pipeline
triggers
定义执行pipeline的触发器
pipeline
when
定义阶段执行的条件
stage
build
触发其他的job
steps
options Jenkins Pipeline配置参数
参数名
说明
例子
buildDiscarder
保留最近历史构建记录的数量
b ...
Jmeter简单配置使用
创建Test Plan 测试计划File->New或者直接点击New图标
添加Thread Group 测试任务右击测试计划,Add->Threads(Users)->Thread Group
添加HTTP Cookie 请求Cookie管理右击Thread Group,Add->Config Element->HTTP Cookie Manager
添加HTTP Header 请求头管理右击Thread Group,Add->Config Element->HTTP Header Manager
添加HTTP Request 请求右击Thread Group,Add->Sampler->HTTP Request
添加User Defined Variables 用户定义变量右击Thread Group,Add->Config Element->User Defined Variable
添加报告Result Tree 结果树右击Thread Group,Add->Listener->View Resu ...
Mysql瓶颈分析方法
数据库往往会成为应用的最终瓶颈,而Mysql是被使用得最多的开源关系型数据库。如何分析执行Mysql数据库语句的性能就非常重要。但是很多开发人员并没有相关的意识与能力,但其实掌握了一些简单的常用手段,就可以让我们自己分析出数据库语句的问题。曾经看到过有对数据库查询语句中出现7个Select的语句,当时完全被震惊到了,这根本就是往系统里注入了一个大雷呀,数据量一旦增多,数据库挂,应用挂,服务挂,客户挂,公司挂。。。。还是不做破了一个鸡蛋就想着毁了一个养鸡场的推断了。我们收集下常见的数据库的分析手段。
查看当前数据库执行命令12mysql> select count(*) from information_schema.processlist where COMMAND != 'Sleep';mysql> select * from information_schema.processlist where COMMAND != 'Sleep' limit 5;
慢查询查看慢查询时间定义12345678910mysql> show ...
Nginx性能优化配置参考
系统优化
系统内核优化参考123456789101112131415161718192021222324$ cat /etc/sysctl.confnet.ipv4.tcp_max_syn_backlog = 65536net.core.netdev_max_backlog = 36768net.core.somaxconn = 36768 net.core.wmem_default = 8588608net.core.rmem_default = 8588608net.core.rmem_max = 16877216net.core.wmem_max = 16877216 net.ipv4.tcp_synack_retries = 2net.ipv4.tcp_syn_retries = 2 net.ipv4.tcp_tw_recycle = 1net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_mem = 94500000 915000000 927000000net.ipv4.tcp_max_orphans = 3376800net.ipv4.ip_lo ...
Openshift上使用Nginx-Pod作灰度发布
参考文章:使用 Nginx 实现灰度发布
什么是灰度发布
【百度百科】灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式。 在其上可以进行A/B testing,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。
除了AB test灰度发布另一种思想是,只发布给一小部分用户,如:App在发布之前,针对性的给一小批用户测试下新版本,用小流量发布的方式来检验新版会不会有问题。
灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。
Openshift上实现蓝绿部署
在openshift上的部署两个版本的Service:service01, service02。在创建Route的时候,可以非常简单地指定同一个Route流量访问两个service的百分比service01(25%流量), service02(75%流量)。所有请求该Route的流量会被按指定的比例访问后service。
对应的Route yaml配置文件如下:
12 ...
SOPS对配置文件数据进行加密
SOPS 是由Mozilla 开发的一款开源的文本编辑工具,它支持对YAML, JSON, ENV, INI 和BINARY 文本格式的文件进行编辑,并利用AWS KMS, GCP KMS, Azure Key Vault 或PGP 等加密方式对编辑的文件进行加密和解密。在当前它还可以与heml secret作用,为Kubernetes的secret资源数据进行加密。本篇主要介绍sops的基本用法,而helm secret的使用不做介绍。
##GPG进行加密
生成GPG文件1$ gpg --generate-key # 根据引导生成gpg加密文件
或者自动生成123456789101112131415gpg --batch --generate-key <<EOF%echo Generating a basic OpenPGP key for HELM SecretKey-Type: RSAKey-Length: 4096Subkey-Type: RSASubkey-Length: 4096Name-Real: MichaelName-Comment: Personal ...
Scrum敏捷开发
团队成员
一般情况人数在5~9个左右
团队要跨职能(包含开发人员、测试人员、用户介面设计师等)
团队成员构成在Sprint内不允许变化。
用户故事建模为开发任务需求编写用户故事
重要性
用户故事
测试方法
预估时间
30
做为一个会员,可以查看自己的购物清单,以便一起购买
登录,点击购买清单Tab
16h
Sprint计划会议(两周一次,4个小时)
设定本Sprint目标及优先级
挑选本Sprint所要开发的需求(Story)
逐一将Story细分成Task
确定每日站会时间和地点
确定演示会议和回顾会议日期计划会议输出:
Story
Task
Hour
A
1. 编写自动化验收测试2. 设计用户界面3. 编写用户界面程序代码 4. 编写数据库代码5. 编写单元测试 6. 人工测试
3h5h8h8h8h8h
B
1. 编写自动化验收测试2. 设计用户界面3. 编写用户界面程序代码 4. 编写数据库代码5. 编写单元测试 6. 人工测试
3h5h8h8h8h8h
第日立会为早上9:00至9:15
Demo演示时间为:2018-07-10 上 ...
SonarQube应用离线安装插件
SonarQube的插件地址为:https://binaries.sonarsource.com/Distribution/将下载的插件文件存放在SonarQube应用的/opt/sonarqube/extensions/plugins目录下。
参考文章Sonar 离线安装插件
Vagrant常用操作
查看安装的插件列表1$ vagrant plugin list
安装vagrant插件1$ vagrant plugin install vagrant-disksize vagrant-ignition vagrant-vbguest
查看box列表1$ vagrant box list
添加一个新的box1$ vagrant box add centos-76 centos-76.box
将一个虚拟机导出为box1$ vagrant package --output centos-7.6.box
删除一个box1$ vagrant box remove centos-76