如何搭建 Jenkins 主机

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

相关推荐