Jenkins

安装Jenkins

Installing Jenkins

本文使用Docker方式使用Jenkins

OS X

  1. 使用包安装
  2. 使用brew安装

使用brew安装

Install the latest release version

brew install jenkins

Install the LTS version

brew install jenkins-lts

Docker

下载镜像

docker pull jenkins

启动,宿主机$PWD/jenkins映射到容器里的/var/jenkins_home

容器8080端口映射到宿主机49001端口

docker run -d -p 49001:8080 -v $PWD/jenkins:/var/jenkins_home --name jenkins jenkins

设置容器时区

docker run -d -p 49001:8080 -v $PWD/jenkins:/var/jenkins_home -e TZ="Asia/Shanghai" -v /etc/localtime:/etc/localtime:ro --name jenkins jenkins

如果容器获取到的仍然是容器默认的时区,则需要使用参数,-e TZ="Asia/Shanghai"

浏览器访问

http://localhost:49001/

Ubuntu/Debian

wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins

Docker启动

docker run -d -p 49001:8080 -v $PWD/jenkins:/var/jenkins_home -e TZ="Asia/Shanghai" -v /etc/localtime:/etc/localtime:ro --name jenkins jenkins

Setup Wizard

设置管理员及密码

浏览器访问 http://localhost:49001/

jenkins-01-Getting-Started

jenkins-01-Getting-Started

密码在容器中 /var/jenkins_home/secrets/initialAdminPassword

docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
649be62674884a85851261888c0df824

将密码复制到密码框,下一步 -> 使用推荐的插件(网络比较慢,可能会出现安装不上的情况,未安装成功的可以进入之后继续安装) -> 输入管理员信息,保存

jenkins-02-Create-Admin-User

jenkins-02-Create-Admin-User

配置完成

jenkins-03-Jenkins-is-ready

jenkins-03-Jenkins-is-ready

使用Jenkins

添加 Slave 节点(如有需要)

持续集成的环境应当尽量保持独立,当多个用户共用同一个 Jenkins Master 节点的时候,很容易因为一个成员改变了机器配置而对另一个构建造成影响。

所以,能用 Slave 做的事情尽量用 Slave 去做, 何况 Docker 里创建一个 Slave 是非常容易的事情。

jenkins-04-Manage-Nodes

jenkins-04-Manage-Nodes

jenkins-05-New-Node

jenkins-05-New-Node

jenkins-06-Node-Name

jenkins-06-Node-Name

jenkins-07-Node-2

jenkins-07-Node-2

jenkins-08-Node-3

jenkins-08-Node-3

jenkins-09-Node-4

jenkins-09-Node-4

-secret后面跟的随机密码很重要,下面一步只有 secretname 都一致才能连接成功。

需要下载镜像 jenkinsci/jnlp-slave
docker run --link jenkins -d jenkinsci/jnlp-slave -url  http://jenkins:8080 ab96387cc533b8be663ccfc57fce9f0e41b11cd6b07f96941e2b51164832f610 slave01

启动容器后刷新 Jenkins 的节点列表, 很快 slave01 节点就变成可用的啦。

搭建Node.js环境

通过Install from nodejs.org方式

  • 选择版本(没用通过Extract *.zip/*.tar.gz方式之前,有可能出现没有版本可供选择的情况,可能是网络原因)
  • 设置全局安装的包,比如 gitbook-cli@2.3.0 gitbook@3.2.2
  • 保存
jenkins-14-Install-from-nodejs

jenkins-14-Install-from-nodejs

通过 Extract *.zip/*.tar.gz 方式

  1. 安装和配置 NodeJS Plugin 管理多个版本的 Node.js
  2. 新建 Pipeline 项目,验证 Node.js 安装
安装配置 NodeJS Plugin

使用NodeJS Plugin插件来安装Node.js

NodeJS Plugin

插件管理中,安装 NodeJS Plugin 插件

Manage Jenkins -> Manage Plugins -> Available -> NodeJS Plugin -> Install  without restart

Manage Jenkins -> Global Tool Configuration -> NodeJS

jenkins-10-NodeJS-01

jenkins-10-NodeJS-01

http://npm.taobao.org/mirrors/node/v7.8.0/node-v7.8.0-linux-x64.tar.gz

NodeJS所有版本: http://npm.taobao.org/mirrors/node/

使用 NodeJS Plugin 来安装Node.js的好处

有这样几个好处:

  • 和 Jenkins 集成得最好,新添加的 Slave 节点会自动安装 Node.js 依赖
  • 避免了登录到 Slave 安装 Node.js 可能改变操作系统配置的问题
  • 可以在不同的构建里使用不同的 Node.js 版本
新建 Pipeline 项目

New Item -> Enter an item name -> Pipeline -> OK

配置 Pipeline demo

jenkins-11-Pipeline-demo

jenkins-11-Pipeline-demo

代码内容(如果不安装GitBook,可以删除后面两个状态)

node ('master') {
   stage '安装 Node'
   tool name: 'v7.8.0', type: 'jenkins.plugins.nodejs.tools.NodeJSInstallation'
   env.PATH = "${tool 'v7.8.0'}/node-v7.8.0-linux-x64/bin:${env.PATH}"
   stage '验证 Node'
   sh "node -v"
   sh "npm -v"
   stage '安装 GitBook'
   sh "npm install gitbook-cli gitbook -g"
   stage '验证 GitBook'
   sh "gitbook -V"
}

后面构建如果报错,命令不存在的话,可以在构建执行的命令里面,添加环境变量

node ('master')

表示选中具有master标签的节点,如果有slave,配置的标签带有 node ,并且配置为 node (‘node’),那这些slave都会被选中

tool name: 'v7.8.0', type: 'jenkins.plugins.nodejs.tools.NodeJSInstallation'

表示构建的过程会用到之前配置的 Node.js 工具的 v7.8.0 版本

env.PATH = "${tool 'v7.8.0'}/node-v7.8.0-linux-x64/bin:${env.PATH}"

上面这行会修改构建的PATH,否则会提示找不到nodenpm命令

点击保存,然后立即构建,等待完成.Node.JS环境就搭建成功

jenkins-12-demo-status

jenkins-12-demo-status

jenkins-13-demo-console-output

jenkins-13-demo-console-output

常用插件

EnvInject 环境变量