# Jenkins 快速入门实践

# 1. 什么是 Jenkins

Jenkins 是一个开源的持续集成工具,提供友好的 UI 界面,由 JAVA 开发而成。
Jenkins 是一个调度平台,本身不处理任何事情,调用插件来完成所有的工作。

# 2. Jenkins 安装部署

安装 Jenkins 只需要简单几步即可完成。PS: Jenkins 的安装方式很多,可参考。

安装 Jenkins

1、调整系统环境

[root@jenkins ~]# setenforce 0
[root@jenkins ~]# systemctl stop firewalld

2、设置语言,避免后期 Jenkins 汉化不完整(设置后需要重启服务器)

[root@jenkins ~]# yum install glibc-common langpacks-en -y
[root@jenkins ~]# localectl set-locale LANG=en_US.UTF-8
[root@jenkins ~]# localectl status

3、安装 JDK 环境

OracleJdk 下载地址:https://www.oracle.com/java/technologies/downloads/#java11

[root@jenkins ~]# tar xf jdk-17.0.17_linux-x64_bin.tar.gz -C /usr/local/
[root@jenkins ~]# ln -s /usr/local/jdk-17.0.17/ /usr/local/jdk
#添加环境变量
[root@jenkins ~]# cat /etc/profile.d/jdk.sh
export JAVA_HOME=/usr/local/jdk
export PATH=$PATH:$JAVA_HOME/bin
export JRE_HOME=$JAVA_HOME/jre 
export CLASSPATH=$JAVA_HOME/lib/:$JRE_HOME/lib/
[root@jenkins ~]# source /etc/profile
[root@jenkins ~]# java -version

4、安装 Jenkins

[root@jenkins ~]# wget https://mirror.tuna.tsinghua.edu.cn/jenkins/redhat-stable/jenkins-2.528.1-1.1.noarch.rpm
[root@jenkins ~]# yum localinstall jenkins-2.528.1-1.1.noarch.rpm -y
# 2.1 配置 Jenkins

1、老版本配置方式: /etc/sysconfig/jenkins

[root@jenkins ~]# vim /etc/sysconfig/jenkins
JENKINS_USER="root" # 运行 Jenkins 的用户身份,避免后期权限不足的情况
JENKINS_PORT="80"   # 如果 jenkins 监听在 80 端口,运行身份必须为 root

2、新版本需要在 systemd 服务单元中设定这些选项: /usr/lib/systemd/system/jenkins.service

[root@jenkins ~]# vim /usr/lib/systemd/system/jenkins.service
User=root
Group=root
Environment="JENKINS_PORT=80"
Environment="JENKINS_LOG=/var/log/jenkins.log"
Environment="JENKINS_JAVA_CMD=/usr/local/jdk/bin/java"

3、启动 Jenkins

[root@jenkins ~]# systemctl daemon-reload
systemctl start jenkins
systemctl enable jenkins

4、第⼀次通过浏览器访问 Jenkins 时,系统会要求您使⽤⾃动⽣成的密码对其进⾏解锁,默认密码⽂件存储在 /var/lib/jenkins/secrets/initialAdminPassword ,将对应的密码⽂件粘贴进去即可。

5、解锁 Jenkins 之后,可以安装任何数量的插件作为您初始步骤的一部分。

  • 如果不确定需要哪些插件,请选择 “安装建议的插件”(这个过程可能需要几分钟或几十分钟的时间)
  • 也可以跳过插件安装,后期可以通过 Jenkins 的 Manage Plugins 页面进行插件安装或删除(推荐的方式)。

6、默认提供 admin 管理员登录到 jenkins 中,登录后需要修改对应的管理员密码。点击右上角用户 -->Configure-->Password 完成密码修改,然后再次登录 Jenkins

# 2.2 汉化 Jenkins

1、安装 Localization 插件

2、点击 ManagerJenkins-->System-->Locale--> 设置语言为 zh_CN

# 2.3 Jenkins 插件管理
# 2.3.1 联网安装插件

点击 --> 系统管理 --> 插件管理 --> Available Plugins,然后搜索需要安装的插件,进行安装

# 2.3.2 手动上传插件

系统设置 -> 插件管理 -> 上传插件
通过页面上传一个.hpi 文件的方式来安装插件。或者提供一个 插件的 URL 进行插件安装。

  • 方式 1:在 jenkins 插件网站 https://plugins.jenkins.io/ 下载以 .hpi 插件,然后上传插件,进行安装。
  • 方式 2:直接复制插件的 URL 地址进行联网安装。

# 2.3.3 离线安装插件

将之前 jenkins 服务器的插件保存下来,然后导入到服务器中,(离线安装),最后重启 Jenkins

[root@jenkins ~]# tar xf jenkins_plugin.tar.gz -C /var/lib/jenkins/plugins/
[root@jenkins ~]# chown -R root.root /var/lib/jenkins/plugins/
[root@jenkins ~]# systemctl restart jenkins
# 2.3.4 常用的插件
  • git: Git、GitLab、Generic Webhook Trigger、Git Parameter
  • maven: Maven Integration、
  • sonarqube: SonarQube Scanner、
  • nexus: Nexus Artifact Uploader、Maven Artifact ChoiceListProvider (Nexus)、Extensible Choice Parameter
  • ansible: Ansible、
  • pipeline: Pipeline、Pipeline: Stage Step、Pipeline: Stage View、Pipeline Maven Integration、blueOcean
  • 钉钉: DingTalk
# 3. Jenkins 与工具集成
# 3.1 Jenkins 集成 Gitlab

jenkins 集成 gitlab,是因为我们要抓取 Gitlab 上的代码,为后续发布网站做好准备,由于 jenkins 只是一个调度平台,所有需要安装与 gitlab 相关的插件才可完成对应的集成。

1. 开发通过 gitlab 创建一个项目,然后进行代码提交;监控平台代码 url

[root@gitlab code]# git clone https://gitee.com/kangjie1209/monitor.git
[root@gitlab code]# cd monitor/
[root@gitlab monitor]# git add .
[root@gitlab monitor]# git commit -m "first"
[root@gitlab monitor]# git remote -v
[root@gitlab monitor]# git remote remove origin
[root@gitlab monitor]# git remote add origin http://gitlab.hmallleasing.com/ops/monitor.git
[root@gitlab monitor]# git push origin master

2.jenkins 创建一个新的 freestyle 项目,名称为 monitor-deploy

3. 在 jenkins 中填写 gitlab 项目地址(域名需要解析);

[root@jenkins ~]# echo "192.168.1.50 gitlab.hmallleasing.com" >> /etc/hosts

4.jenkins 需要访问 gitlab 项目,则要与 gitlab 建立信任;首先登陆 Jenkins 生成一对秘钥;

[root@jenkins ~]# ssh-keygen

5. 将 Jenkins 服务器生成的公钥添加上 gitlab 对应的用户;

6. 然后继续操作 Jenkins,将 root 用户的私钥添加至 Jenkins 服务器上;此时 jenkins 就能正常访问 gitlab 项目。

7. 最后点击构建,然后查看构建的输出信息是否有错误提示。

# 3.2 Jenkins 集成 Shell

1. 找到对应项目,找到构建步骤

2. 添加构建步骤,选择执行 Shell

# 执行以下命令
pwd
echo "welcome Jenkins"
echo ${WORKSPACE}

# 3.3 Jenkins 集成 Ansible
# 3.3.1 配置 Ansible

1. 安装 Ansible

[root@jenkins ~]# yum install epel-release -y
[root@jenkins ~]# yum install ansible -y

2. 配置 ssh 免密

[root@jenkins ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.51
[root@jenkins ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.7

3. 配置 inventory

[root@jenkins ~]# vim /etc/ansible/hosts 
[lbservers]
172.16.1.5
[webservers]
172.16.1.7
172.16.1.8

4. 编写测试的 playbook

[root@jenkins ~]# cat /root/test.yml 
- hosts: "webservers"
  tasks:
    - name: Test Shell Command
      shell:
        cmd: df -h
      register: system_cmd
      
    - name: Debug System Command
      debug:
        msg: ""
# 3.3.2 配置 Jenkins 集成 Ansible

1. 选择构建阶段,增加构建步骤,选择 Invoke Ansible Playbook

  • 填写 Playbook 所存储的路径;
  • 添加 Inventory 主机清单文件的路径;

2. 点击 Jenkins 的构建,然后查看控制台,检查 Jenkins 是否调用 Ansible 执行了。

# 3.3.3 配置 jenkins 传参调用 Ansible

为了增加 Playbook 的灵活性,我们可以避免在文件中直接指定目标主机组(如 'webservers'),而是通过 Jenkins 的参数化功能来动态传递目标主机组。这样可以让我们更灵活地选择要操作的目标组,提高可定制性。

1. 改造 playbook,将要操作的目标主机组,修改为 ansible 的变量;

[root@jenkins ~]# cat /root/test.yml 
- hosts: ""
  tasks:
    - name: Test Shell Command
      shell:
        cmd: df -h
      register: system_cmd
      
    - name: Debug System Command
      debug:
        msg: ""

2、在 Playbook 设置中,选择 "高级" 选项,然后找到 "Extra Variables" 使用外部参数传递方式。
1、定义一个变量名(如 "host"),并为其设置一个变量值。
2、使用 "${host}" 作为变量值,这样我们可以在后续步骤中通过 Jenkins 的参数选项为此变量动态赋值。

3. 在参数化构建中添加选择选项参数

名称: host
选项:

4. 测试通过前端页面控制要执行的主机或主机组,管理起来会更加的灵活。

此文章已被阅读次数:正在加载...更新于

请我喝[茶]~( ̄▽ ̄)~*

Xu Yong 微信支付

微信支付

Xu Yong 支付宝

支付宝