资讯专栏INFORMATION COLUMN

如何搭建 Jenkins 主机

princekin / 2157人阅读

摘要:简介是目前较为流行的开源软件项目,该软件需要在的环境下运行,能够帮助用户实现可持续的软件项目重复部署。选择后,网站会自行安装标准插件。设置网站的管理员账号,建议将账号信息保存在主机的文件内。

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 
根据检查情况,选择性的执行本步骤命令,确认主机成功安装 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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/33688.html

相关文章

  • 一套基础自动化部署搭建过程

    摘要:问题背景公司初创技术团队,没有任何基础设施的情况下,需要搭建一系列管理以及自动化部署等工具所以引发了下面一系列的部署过程,历时两天,中间也是碰到各种问题,但最终把基本工具全部搭建成功,耶,下面带大家一起看下此次搭建过程。 问题背景 公司初创技术团队,没有任何基础设施的情况下,需要搭建一系列code管理以及自动化部署等工具....所以引发了下面一系列的部署过程,历时两天,中间也是碰到各种...

    mzlogin 评论0 收藏0
  • 使用 Jenkins 自动部署 Docker 服务(一、Jenkins 搭建篇)

    摘要:直接使用官方的镜像一般会有两个问题导致不能正常自动部署基于的服务。 直接使用 Jenkins 官方的镜像一般会有两个问题导致不能正常自动部署基于 Docker 的服务。 存在的问题 官方的镜像默认不是使用 root 账号,虽然 Jenkins 可以正常启动,但是因为没有权限导致不能向宿主机写文件 Jenkins 基于 Docker 搭建,虽然 Jenkins 同样可以正常启动,但不能...

    Clect 评论0 收藏0
  • 如何使用Docker、Docker-Compose和Rancher搭建部署Pipeline(二)

    摘要:目前我们正采取措施,通过逐步改善现有过程来实现持续部署。在这篇文章中,我们将看看如何使用和来改善此设计。通过使用,在未来我们可以轻松地将构建和部署任务集成起来,从而得到额外的好处。月日,北京海航万豪酒店,容器技术大会即将举行。 在这一系列文章的第一篇中,我们分享了只用Docker时我们开发的初步的工作流,如何创建一个基础的构建和部署流水线。容器的部署方式不再是在登陆server的时候从...

    LancerComet 评论0 收藏0
  • 学习使用Docker、Docker-Compose和Rancher搭建部署Pipeline(一)

    摘要:工程师选择了环境中的一台当前没有在负载均衡器中被激活的主机。工程师登陆到这台主机并从注册表中获取新的版本。在生产维护窗口中,更新负载均衡器使其指向更新过的主机。然而将部署代码化的问题仍然存在。 这篇文章是一系列文章的第一篇,在这一系列文章中,我们想要分享我们如何使用Docker、Docker-Compose和Rancher完成容器部署工作流的故事。我们想带你从头开始走过pipeline...

    mikyou 评论0 收藏0
  • Docker在开发、测试中的应用

    摘要:对测试的影响让单元测试运行的更顺畅单元测试驱动开发是一个很好的应用程序开发方式,单元测试往往也是和代码一起被提交到代码仓库中。但是很多单元测试通常依赖于很多其他服务,而这些服务的标准化配置往往是一个难点,如数据库的搭建防火墙的配置等。 传统的软件开发、测试、运维需要三个团队在三个不同的环境中进行,而三个环境的不同引发了很多的问题。如:工作内容的重复;开发环境中可运行的程序在测试和运维环...

    mating 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<