Posts tagged with “CI”

Jenkins 三言两语(二)

  1. Jenkins 虽然通过ssh访问一个node来执行build或者 deploy任务,而且它也确实执行了远程机器的.bashrc 脚本,但它却刻意的抹掉了PATH 环境变量。所以在你要运行的bash脚本里再 source 一遍 /etc/profile 就有了必要。
  2. Jenkins自己的环境变量,可以在脚本里直接用,但从bash里来的环境变量,如 $?,就得用反斜线转义 \$ 符号。
  3. .bashrc 别 echo 东西,否则 Jenkins 会拒绝干活。(应该弄一台专门的机器只跑 Jenkins)

PS: 上面第2条其实描述不准确,后面踩的坑证明,如果用 sh 命令里有环境变量,老老实实用单引号,如果非用双引号,你反而要用\$转义。切记!Jenkins环境不是bash环境。不论是否 Jenkins里定义的环境变量,如果要在bash脚本里用,就老老实实用单引号。

Jenkins 三言两语

三天小长假过完了。终于把 Jenkins 从windows 10 也迁到了那台 CentOS上,我对 Jenkins 的了解又深了一点点。

  1. Jenkins 把所有的插件和用户数据都存一个目录里,这个设计非常赞。这让我得以专注于迁移我的流水线。
  2. 让 Jenkins 运行在docker里,把运行docker的host机器做成一个新节点,很不错。
  3. 我更喜欢声明式流水线....主要是对脚本式流水线更不熟悉,对 groove 语法也不熟悉,另外,也不很想在流水线里写复杂的逻辑。这俩谁都先进呢?说不准。我更看好声明式流水线。
  4. agent和node之间的关系还是没有搞得特别清楚。时间紧,经理又催得急,先这么着吧。
  5. 怕删错文件,删文件的地方没敢用环境变量,越来越胆小。哈,应该有更好的解决办法。
  6. ssh从docker里连到宿主机....用key文件没有成功。尚且不知道原因,应该加个todo。

PS: 更好的解决方法找到了,它就是 ${varName:?} 这种方式引用bash变量,若 varName 未设置值,则脚本会立即报错退出执行。