this document has been write in 2018.10
thanks for your patient reading
Jenkins 简介
jenkins 是目前较为流行的开源软件项目,该软件需要在 java 的环境下运行,能够帮助用户实现可持续的软件项目重复部署。
jenkins 主机内,除却 jenkins 软件本身,还应当配置的工具组件有:
组件或工具的名称 | 组件或工具的作用 |
oracle java | 为 jenkins 提供必要的运行环境 |
python2 | 其 fabric 模块将为项目部署和启动脚本提供关键支持 |
nginx | 将 80 端口的访问请求转发至 8080 端口 |
git | 将 gitlab 或 github 上托管的项目源码克隆到 jenkins 主机内 |
主机内 jenkins 的用户和用户组信息如下
jenkins:x:115:122:Jenkins,,,:/var/lib/jenkins:/bin/bash
其中:
jenkins | 主机内的用户名为 jenkins |
x | 密码占位符,真正的用户密码在 /etc/shadow 文件内 |
115 | 用户的 uid 编号 (该编号小于 1000,表示 jenkins 是系统用户) |
122 | 用户所属组的 gid 编号 |
/var/lib/jenkins | 用户 jenkins 的家目录为 /var/lib/jenkins |
/bin/bash | 登录 jenkins 时, 使用 bash 作为终端工具 |
Jenkins 主机的搭建过程
系统环境:Ubuntu16.04
主机性能:4 核心 / 8GB 内存 / 100GB 存储
检查主机内的 java 环境
summer:~$ java -verison
该命令存在 3 种可能的回显值:
(1)已经安装有 oracle java 环境
Java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
(2)已经安装有 openjdk 环境
Openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-0ubuntu0.16.04.1-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)
(3)未安装任何 java 环境
The program 'java' can be found in the following packages:
* default-jre
* gcj-5-jre-headless
* openjdk-8-jre-headless
* gcj-4.8-jre-headless
* gcj-4.9-jre-headless
* openjdk-9-jre-headless
Try: sudo apt install <selected package>
根据检查情况,选择性的执行本步骤命令,确认主机成功安装 oracle java 环境
summer:~$ apt-get remove --purge openjdk*
summer:~$ sudo add-apt-repository ppa:webupd8team/java
summer:~$ sudo apt-get update
summer:~$ sudo apt-get install oracle-java8-installer
安装 jenkins 软件
summer:~$ wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
summer:~$ sudo vim /etc/apt/sources.list
summer:~$ sudo apt-get update
summer:~$ sudo apt-get install jenkins
安装 nginx 软件,并编写配置文件实现 80 端口请求转发至 8080 端口
summer:~$ sudo apt-get install nginx
summer:~$ sudo rm -f /etc/nginx/sites-available/default
summer:~$ sudo rm -f /etc/nginx/sites-enabled/default
summer:~$ sudo vim /etc/nginx/sites-available/jenkins
summer:~$ sudo ln -s /etc/nginx/sites-available/jenkins /etc/nginx/sites-enbaled/
启动 nginx 和 jenkins 服务的进程
summer:~$ sudo systemctl enable nginx.service # 设置 nginx.service 开机自启动
summer:~$ sudo systemctl enable jenkins.service # 设置 jenkins.service 开机自启动
summer:~$ sudo systemctl restart nginx.service # 重新启动 nginx.service
summer:~$ sudo systemctl restart jenkins.service # 重新启动 jenkins.service
访问 jenkins 主机的 ip 地址,首次登录 jenkins 网站进行解锁
打开 jenkins 主机内的 /var/lib/jenkins/secrets/initialAdminPassword 文件,获取密码并完成解锁。
选择 install suggested plugins 后,jenkins 网站会自行安装标准插件。
设置 jenkins 网站的管理员账号,建议将账号信息保存在主机的 ~/.jenkins 文件内。
安装管理 python 模块所需要的 pip 工具
summer:~$ sudo apt-get install python-pip # 安装完成后的 pip 工具版本较低, 需要进行升级
summer:~$ sudo pip install pip # 升级之后的 pip 工具会出现执行错误
summer:~$ sudo vim /usr/bin/pip # 修改 pip 工具的执行文件
summer:~$ sudo vim ~/.pip/pip.conf # 为 pip 工具指定国内的 python 模块镜像源
summer:~$ sudo pip install Fabric==1.14.0 # 安装指定版本的 fabric 模块
安装 git 工具,并制作密钥对后将私钥 id_rsa 放置在 jenkins 用户的 .ssh 目录内
summer:~$ sudo apt-get install git
summer:~$ ssh-keygen
summer:~$ sudo mkdir -p /var/lib/jenkins/.ssh # 在 jenkins 用户的家目录下创建 .ssh 目录
summer:~$ sudo cp /home/summer/.ssh/id_rsa /var/lib/jenkins/.ssh/
summer:~$ sudo chown -R jenkins:jenkins /var/lib/jenkins/.ssh/
summer:~$ sudo chmod 700 /var/lib/jenkins/.ssh
使用管理员用户登录 gitlab 网站,并配置 gitlab 平台的 deploy-key
在 deploy-key 的配置界面, 为 deploy-key 指定名称,将 /home/summer/.ssh/id_rsa.pub 内的公钥信息填写到 deploy-key 相应位置。
配置文件说明
文件一: /etc/apt/sources.list
### 该文件为 Ubuntu16.04 原始的 apt-get 源配置文件
deb http://cn.archive.ubuntu.com/ubuntu/ xenial universe
deb http://cn.archive.ubuntu.com/ubuntu/ xenial-updates universe
deb http://cn.archive.ubuntu.com/ubuntu/ xenial multiverse
deb http://cn.archive.ubuntu.com/ubuntu/ xenial-updates multiverse
deb http://cn.archive.ubuntu.com/ubuntu/ xenial-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu xenial-security main restricted
deb http://security.ubuntu.com/ubuntu xenial-security universe
deb http://security.ubuntu.com/ubuntu xenial-security multiverse
### jenkins 的安装包被单独作为 1 个 apt-get 源追加到文件结尾
deb http://cn.archive.ubuntu.com/ubuntu/ xenial universe
deb http://cn.archive.ubuntu.com/ubuntu/ xenial-updates universe
deb http://cn.archive.ubuntu.com/ubuntu/ xenial multiverse
deb http://cn.archive.ubuntu.com/ubuntu/ xenial-updates multiverse
deb http://cn.archive.ubuntu.com/ubuntu/ xenial-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu xenial-security main restricted
deb http://security.ubuntu.com/ubuntu xenial-security universe
deb http://security.ubuntu.com/ubuntu xenial-security multiverse
deb https://pkg.jenkins.io/debian-stable binary/
文件二: /etc/nginx/sites-available/jenkins
# 这是一个新建的文件, 用于转发 80 端口的访问请求至 8080 端口(jenkins 的默认端口)
server {
listen 80;
location / {
proxy_pass http://127.0.0.1:8080;
}
}
文件三: /usr/bin/pip
#!/usr/bin/python
# 该 python 文件即是原始的 pip 工具的执行文件
import sys
from pip import main
if __name__ == '__main__':
sys.exit(main())
#!/usr/bin/python
# 该 python 文件即是修改过后的 pip 工具的执行文件
import sys
from pip._internal import main
if __name__ == '__main__':
sys.exit(main())
文件四: /home/summer/.pip/pip.conf
# 该配置文件为新建文件, 用于配置国内的 pip 镜像源(我们配的是 douban 的 pip 镜像源)
[global]
index-url = http://pypi.douban.com/simple
[install]
trusted-host=pypi.douban.com