侧边栏壁纸
  • 累计撰写 73 篇文章
  • 累计创建 30 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Jenkins教程

欧泡果奶
2022-05-20 / 0 评论 / 0 点赞 / 565 阅读 / 0 字

1. 安装 - 通过Docker镜像安装

1.1 简介

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。

1.2 Jenkins自动化部署实现原理

Jenkins原理

1.3 编写docker-compose.yml

version: '3.9'
services:
  jenkins-app:
    image: jenkins/jenkins
    container_name: jenkins
    hostname: 'jenkins.ochdemo.com'
    restart: always
    user: root
    ports:
      - 50000:50000
      - 8080:8080
    volumes:
      - /opt/docker_data/jenkins/data:/var/jenkins_home

注意:记得新建volumes下相关目录

1.4 运行

docker compose up -d

1.5 访问Jenkins,并进行初始化

1.5.1 填写初始密码,激活系统

填写密码

1.5.2 进入插件安装选择

这里建议选择,推荐安装的插件,保证基本常用的功能可以使用。

选择插件安装方式

选择后,进入插件安装页面

安装插件

这里可能有插件安装失败,暂时先不管,等配置完成,进入系统后参考插件安装失败解决方法处理

1.5.3 设置初始用户和密码

创建用户

1.5.4 实例配置

默认即可

实例配置

1.5.5 进入系统,安装完成

Jenkins首页

2. Jenkins基本配置

2.1 系统初始化配置

系统管理

2.1.1 插件管理

检查如下这两个插件是否已安装,没有安装的话,在可选插件中搜索安装即可

插件1:Publish over SSH
插件2:Deploy to container

插件管理

2.1.2 系统设置

在系统设置这里,我们只需要设置最后面的一项,配置远程服务器地址,

即我们代码最终运行的服务器地址信息,就像我们之前手动部署时使用xshell登录Linux服务器一样,

当然这里是可以配置多台远程Linux服务器的,配置完成后点击保存即可,为后面我们配置自动化部署做准备,配置如下图

配置远程服务器

2.1.3 全局安全配置

2.1.3.1 配置用户相关的权限

用户相关权限

2.1.3.2 关闭跨站请求伪造保护

Jenkins版本自2.204.6以来的重大变更有:删除禁用 CSRF 保护的功能。在高版本的Jenkins中默认启用CSRF。

在低于 2.204.6 版本中,取消选中即可。

跨站请求伪造保护

在高于 2.204.6 版本中,需要在启动Jenkins时增加参数配置来关闭CSRF。

修改docker-compose.yml,添加一个环境变量,重启容器

version: '3.9'
services:
  jenkins-app:
    image: jenkins/jenkins
    restart: always
    user: root
    ports:
      - 50000:50000
      - 8080:8080
    volumes:
      - /opt/docker_data/jenkins/data:/var/jenkins_home
    environment:
      # 关闭CSRF
      - JAVA_OPTS="-Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true"

未关闭CSRF时:

跨站请求伪造保护

已关闭CSRF:

跨站请求伪造保护

2.1.4 全局工具配置

Docker镜像安装的Jenkins自带了git和jdk,因此只需安装maven,请参考基于Docker运行的Jenkins配置maven

3. Jenkins自动化部署(springBoot+maven+gitlab)项目

大体步骤:新建任务 --> General --> 源码管理 --> 构建触发器 --> 构建环境 --> 构建 --> 构建后操作

3.1 新建任务

新建任务

3.2 General

General

3.3 源码管理

源码管理

上图中点击“添加”按钮添加一组账号和密码

添加凭据

3.4 构建触发器

触发器

如上图:当前项目的回调地址为:

http://jenkins.ochdemo.com:8080/job/hello/build?token=test_token

只要执行这个地址(在浏览器上访问改地址),该项目就会发起一次构建项目,即拉取代码打包部署操作,在实际中,是由git服务器回调改地址,在后面讲git服务器配置时详细讲解 。

3.5 构建环境(无需配置)

3.6 构建

构建

3.7 构建后操作

构建后操作的意思是:jar打包好后,要将jar发送到哪里去,发送后要执行哪些操作。

这里需要提前在服务器上配置好路径,写好启动和停止项目的脚本,并设置为可以执行的脚本,即我们平时在Linux上手动部署项目操作的脚本。

构建后操作

案例中给出的stop.sh脚本如下:

#!/bin/bash
echo "Stop Procedure : hello-1.0.0-SNAPSHOT.jar"
pid=`ps -ef | grep java | grep hello-1.0.0-SNAPSHOT.jar|awk '{print $2}'`
echo 'old Procedure pid: '$pid
if [ -n "$pid" ]
then
kill -9 $pid
fi

案例中给出的start.sh脚本如下:

#!/bin/bash
export JAVA_HOME=/usr/java/jdk1.8.0_332
echo ${JAVA_HOME}
echo 'Start the program : hello-1.0.0-SNAPSHOT.jar'
echo '-------Starting-------'
cd /opt/app/
nohup java -jar hello-1.0.0-SNAPSHOT.jar &
echo 'start success'

到此,Jenkins服务器配置完成,接下来我还有要配置Linux服务器和Git服务器。

4. Linux服务器配置

在Linux服务上,上传上文中的两个脚本,用于启动和停止。

CentOS 7服务器

5. GitLab服务器配置

在GitLab服务器上的指定项目里面配置上文中提到的回调地址。

GitLab配置

到这里所有配置搞定,只需修改代码,提交到git,然后访问程序看是否生效。

如果报这个错误:Urlis blocked: Requests to the local network are not allowed

解决方案:

  • GitLab为中文页面时:

    进入 菜单 => 管理员 => 设置 => 网络,然后点击 出站请求 右边 的 展开 按钮

    勾选 允许来自web 钩子和服务对本地网络的请求允许系统钩子向本地网络发送请求

    点击 保存修改 按钮即可

  • GitLab为英文页面时:

    进入 Menu => Admin => Settings => Network,然后点击 Outbound requests 右边 的 expand 按钮

    勾选 Allow requests to the local network from web hooks and servicesAllow requests to the local network from system hooks

    点击 Save Changes 按钮即可

6. 测试

6.1 测试代码

测试代码

6.2 提交代码到git,触发构建

6.3 在GitLab服务器上去看,是否已经触发

已触发

6.4 在Jenkins的控制台查看是否正在构建

正在构建

6.5 查看当次构建的控制台日志

构建成功

6.6 查看Linux服务器,是否上传代码

上传成功

6.7 在Linux上使用命令ps -ef|grep hello-1.0.0-SNAPSHOT.jar,查看是否启动

启动成功

6.8 浏览器上访问,看是否能正常访问

启动成功

6.9 再次重复1-8步,确认是否能自动化部署

如果测试结果是你预期的,那么自动化部署成功。

补充

插件安装失败解决方法

1. 修改地址为清华源

http://mirror.esuni.jp/jenkins/updates/update-center.json

进入插件管理,选择高级,修改最后一项升级站点的链接。

插件管理

插件管理

2. 修改/opt/docker_data/jenkins/data/updetes/default.json文件

  1. http://www.google.com/ 改成 http://www.baidu.com/
  2. https://updates.jenkins.io/download 全部替换成 http://mirrors.tuna.tsinghua.edu.cn/jenkins

3. 重启Jenkins

docker compose restart

基于Docker运行的Jenkins配置maven

1. 在服务器上下载maven

wget https://dlcdn.apache.org/maven/maven-3/3.8.5/binaries/apache-maven-3.8.5-bin.tar.gz

2. 解压

tar -zxvf apache-maven-3.8.5-bin.tar.gz

3. 修改settings.xml,修改为国内源

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsd">

  <localRepository>
  </localRepository>

  <pluginGroups>
  </pluginGroups>

  <proxies>
  </proxies>

  <servers>
  </servers>

  <mirrors>
    <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>
    </mirror>
  </mirrors>
    
  <profiles>
  </profiles>

</settings>

4. 拷贝到Jenkins容器的/maven/目录下

docker cp ./apache-maven-3.8.5 jenkins:/maven

5. 创建软连接

docker exec -it jenkins ln -s /maven/bin/mvn /usr/local/bin

6. 验证maven是否成功安装

$ docker exec -it jenkins mvn -v

Apache Maven 3.8.5 (3599d3414f046de2324203b78ddcf9b5e4388aa0)
Maven home: /maven
Java version: 11.0.13, vendor: Eclipse Adoptium, runtime: /opt/java/openjdk
Default locale: en, platform encoding: UTF-8
OS name: "linux", version: "5.10.16.3-microsoft-standard-wsl2", arch: "amd64", family: "unix"
0

评论区