如何搭建 Jenkins 主机

码林褶皱
• 阅读 1729
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
点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Wesley13 Wesley13
4年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Stella981 Stella981
4年前
DevOps系列——Gogs和Jenkins的CI配置
jenkins学习笔记1\.jenkins简单介绍1.1.jenkins是什么Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能1.2.大牛系统博客地址http://blog.csdn
Wesley13 Wesley13
4年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Wesley13 Wesley13
4年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
4年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Stella981 Stella981
4年前
Jenkins插件下载镜像加速
转:https://www.cnblogs.com/zhuochong/p/10082498.html可供选择的jenkins2插件镜像列表:Jenkins所有镜像列表:http://mirrors.jenkinsci.org/status.html比如日本的镜像:http://mirror.esuni.jp/jenkins/,ht
Stella981 Stella981
4年前
Jenkins 插件开发之旅:两天内从 idea 到发布(上篇)
本文首发于:Jenkins中文社区(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fjenkinszh.cn)!huashan(https://oscimg.oschina.net/oscnet/f499d5b4f76f20cf0bce2a00af236d10265.jpg)
Python进阶者 Python进阶者
2年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
码林褶皱
码林褶皱
Lv1
美好的记忆,美好的人,都需要永远珍藏在心中。
文章
2
粉丝
0
获赞
0
热门文章