Jenkins build trigger、logRotator、buildDiscarder etc

Declarative Pipeline 与Job DSL的同一个功能的语法命令有些差异,不能直接套用,需要查对应的官方文档。

1.Jenkins Declarative Pipeline

语法如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//Jenkinsfile (Declarative Pipeline)
pipeline {
agent { label 'sbt' }
options{
buildDiscarder(logRotator(numToKeepStr:'5'))
disableConcurrentBuilds()
}
triggers{
pollSCM('H/2 * * * 1-5')
}
environment {
MYBRANCH = "${env.BRANCH_NAME}"
NEXUS_URL = '117.121.xxx.xx:443'
BASE_IMAGE_TAG = "${NEXUS_URL}/${GROUP_NAME}/${SERVICE_NAME}"
BRANCH_IMAGE_TAG = "${NEXUS_URL}/${GROUP_NAME}/${SERVICE_NAME}-${MYBRANCH}"
}
...
}

1.1 triggers

1.2 buildDiscarder

1.3 disableConcurrentBuilds

  • daysToKeepStr: history is only kept up to this days.
  • numToKeepStr: only this number of build logs are kept.
  • artifactDaysToKeepStr: artifacts are only kept up to this days.
  • artifactNumToKeepStr: only this number of builds have their artifacts kept.

1.4 environment

2.Jenkins Job DSL

语法如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
pipelineJob("${AndroidFolder}/nightly-build") {
description """
<h3>
Android Build for nightly build
</h3>
"""
//@midnight This will run at some point between 0:00 and 2:59
triggers{
cron '''TZ=Asia/Shanghai
@midnight
'''
}
logRotator {
artifactNumToKeep(30)
numToKeep(30)
}
throttleConcurrentBuilds {
maxTotal(1)
}
environmentVariables {
env('GIT_URL', gitUrl)
env('GIT_BRANCH', gitBranch)
env('GIT_CREDENTIAL_ID', 'xxxx-git-ssh-private')
}

2.1 triggers

2.2 logRotator

  • artifactDaysToKeep: If specified, artifacts from builds older than this number of days will be deleted, but the logs, history, reports, etc for the build will be kept.
  • artifactNumToKeep: If specified, only up to this number of builds have their artifacts retained.
  • daysToKeep: If specified, build records are only kept up to this number of days.
  • numToKeep: If specified, only up to this number of build records are kept.

2.3 throttleConcurrentBuilds
throttleConcurrentBuilds 需要单独给Jenkins安装插件 Throttle Concurrent Builds

2.4 environmentVariables

More Ref:

  1. https://jenkins.io/doc/book/pipeline/syntax/#available-options
  2. https://jenkinsci.github.io/job-dsl-plugin/#path/pipelineJob-logRotator
  3. https://jenkinsci.github.io/job-dsl-plugin/#path/pipelineJob-triggers

反摩尔定理 = 学如逆水行舟

1.什么是反摩尔定理?

Google(谷歌)的 CEO 埃里克•施密特在一次采访中指出,如果你反过来看摩尔定理, 一个 IT 公司如果今天和十八个月前卖掉同样多的、同样的产品,它的营业额就要降一半。IT 界把它称为 反摩尔定理

2.如何解释反摩尔定理

反摩尔定理的前提是摩尔定理(即当价格不变时,集成电路上可容纳的晶体管数目,约每隔18个月便会增加一倍,性能也将提升一倍。换言之,每一美元所能买到的电脑性能,将每隔18个月翻两倍以上。)

打个比方: 小蓝公司 2018年6月,生产了1000万台手机,每台销售1000元,等过了18个月,由于摩尔定理的存在,硬件价格大大下降只有原来的一半即500元,在同样多的、同样的产品的情况下,营业额自然减半了。

3.通俗解释

别人都在努力学习,而有个成绩优异的小忧同学现在成绩很好,等过了一年半载,其他人都进步很快,相对而言,那个成绩优异的小忧就退步了。

4.影响

  • 消极影响:
    反摩尔定律对于所有的IT公司来讲,都是非常可怕的,因为一个IT公司花了同样的劳动,却只得到以前一半的收入。反摩尔定律逼着所有的硬件设备公司必须赶上摩尔定律所规定的更新速度
  • 积极影响:
    反摩尔定律促成科技领域质的进步,并为新兴公司提供生存和发展的可能。和所有事物的发展一样,IT领域的技术进步也有量变和质变两种。为了赶上摩尔定律预测的发展速度,光靠量变是不够的。每一种技术,过不了多少年,量变的潜力就会被挖掘光,这时就必须要有革命性的创造发明诞生。

5.‘反摩尔定理’ == ‘学如逆水行舟,不进则退’

总结一下,IT界三大定律: 摩尔定律反摩尔定律安迪-比尔定律

小编之前就知道一个,有点儿孤陋寡闻了 >::<

获取fir中的ios ipa安装包

主要是针对iOS 移动端的打包,下载可能出现的需求。

通常流程: pipeline用fir cli命令,或者dev同学用fir cli直接将产出的xx.ipa软件包推送到fir仓库,Qa同学以及业务同事直接拿二维码下载安装在手机上即可。

新需求: 安全团队的同事需要直接拿xx.ipa软件包做安全方面的扫描、测试工作,怎么办?

~~~请看下面~~~

Steps

1.用浏览器打开fir链接地址

fir_image_01

2.模拟手机下载的请求

打开 开发者工具 ,模拟iPhone,刷新一下
fir_image_02

点击 “下载安装”
fir_image_03

3.获取url

fir_image_04

4.获取下载ipa文件的下载地址:

fir_image_05

headerkey-value 如下:

key value
User-Agent Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1
Upgrade-Insecure-Requests 1

当然可以直接用下面的命令得到下载地址:

1
2
3
4
5
6
curl -s -X GET \
'https://apps-cn.xxx.com/fir-api-<3中的url>' \
-H 'Cache-Control: no-cache' \
-H 'Postman-Token: 12ee4b20-c8cc-4729-8342-4d2dd32df2d4' \
-H 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1' \
-H 'Upgrade-Insecure-Requests: 1' | grep software-package -A 3 | awk -F "[" '{print $3}' | awk -F "]" '{print $1}'

5.下载

直接将第4步中的下载地址粘贴到浏览器中,或者用 wget 命令下载均可

Docker image export and import

A: “为什么要导镜像,直接从网上下载不就行了?”
B: “too young too naive,你以为哪里都能上网的,谁家的机房没事都能上个youtube,google的吗”

一般的公司内网环境是无法访问Internet的,自然也无从下载基础 docker 基础镜像。但这个时候领导交给你的任务–比如用容器运行一个 Java 程序,你在本地程序都调试好了,也在docker container形式运行良好,但是怎么搬到服务器上,这个时候最原始的U盘就大有用处了(虽然现在都是云盘,但是服务器所在网络就好比你小时候玩的小霸王学习机,只能自己和自己玩儿)。

your PC –> U Disk –> Server

Steps:

1.Export image (导出镜像,在你自己的电脑上执行)

docker save Image

1
2
3
4
5
➜  docker images  | grep python
python 3-alpine c02a3409ee5b 6 weeks ago 86.7MB
➜ docker save c02a3409ee5b > my_python.tar
➜ ls -l
-rw-r--r-- 1 xxx staff 90526208 4 7 21:33 my_python.tar

更建议用镜像名称去处理,如 docker save python:3-alpine > my_python.tar ;好处是在load后镜像名称保持一致,而不是没有tag的

2.乾坤大挪移

拷贝这个tar包到U 盘,然后插到(或者是挂载)Server上

3.Import image (导入镜像)
1
2
docker load < my_python.tar
docker tag 9045 my_python:1.0 //通常还需要重新命名一下,以便可读

More Ref:

  1. https://jingsam.github.io/2017/08/26/docker-save-and-docker-export.html
  2. https://www.jianshu.com/p/8408e06b7273

安迪-比尔定律(Andy and Bill’s Law)

这句话出处是哪里?

“Andy gives,Bill takes away.(安迪提供什么,比尔拿走什么)"

什么是安迪-比尔定律?

Andy指的是原英特尔公司CEO 安迪•格鲁Andy Grove;Bill就是微软的比尔•盖茨.

这句话的意思是,英特尔公司总裁安迪·格罗夫一旦向市场推广了一种新型芯片产品,微软CEO比尔盖茨就会及时的升级自己的软件产品,吸收新型芯片的高性能。硬件提高的性能,很快被软件消耗掉了。似乎两方是一对黄金搭档,心照不宣。

简而言之,安迪-比尔定律揭示了硬件和软件相互促进彼此,不断更新换代的现象。

为什么要“更新”?

1.从买卖双方分析:

对于厂商、公司而言,只有不断的推出新产品,才能有营收,才能获得更大的市场,最终通常是为了赚更多的钱。对于个人而言,个人的欲望在不断的增长,大哥比方:以前村里的张三有个mp3听听歌就可能满足的不行了,但是看着县里的李四拿着最新的mp4不仅能听歌,还能下载电影看,于是就渴望也有一个新玩意。过了一年半载出了一个新的手机,不仅有上述功能,还可以在线打游戏,只有拥有它才可以和别的小伙伴一起“冲锋陷阵”…

2.从硬件、软件公司分析:

还是拿上面的例子,硬件公司老是生产mp3,等到大家差不多人手一个的时候,就赚不到更多的钱了。而这个时候有软件公司开发的新的软件,需要用新的设备才能运行,硬件公司还能又卖一波新硬件,而且又是新的市场,单价一般而言更贵,于是乎这样赚钱的机会怎么能放过。同业的竞争公司看到这样的趋势,也加紧研发去抢新的蛋糕(旧的蛋糕都快被人吃的差不多了,新的蛋糕就看谁做的快做的好了)。软件公司这时也纷纷用新的思路去做更多的软件,吸引新用户,也想着做一些更牛逼的软件(虽然现在硬件水平跟不上,但是总有一天那些硬件会有的,加紧研发自己的软件就准没错)。

  • Copyrights © 2019-2024 John Doe
  • Visitors: | Views:

请我喝杯咖啡吧~