教你从零搭建一个Jekins环境

目录

背景

Jenkins概述

什么是Jenkins

什么是CI/CD

Jenkins下载、安装和配置

Jenkins镜像拉取

Jenkins容器创建

第一步:创建jenkins映射目录

第二步:创建Jenkins容器

第三步:查看并访问Jenkins容器

Jenkins容器初始化

第一步:查看jenkins管理员密码

第二步:插件安装

第三步:设置管理员帐号

 第四步:设置实例

Jenkins自动部署

系统初始化配置

 插件管理

 全局安全配置

 系统配置

全局工具配置

配置maven

 配置jdk

 配置git

 保存配置

创建测试项目并上传到码云

创建测试项目

 添加项目依赖

创建启动类

创建Controller类

创建maven仓库

上传代码到码云

在jenkins中创建部署任务

创建部署任务

 配置git仓库

配置构建触发器

配置构建步骤

 配置构建后操作

测试地址


背景

        最近由于项目环境部署太频繁,出了各种问题,经理要求想办法解决。我在网上搜集了很多资料,最终由两种方案:Jekins和K8S,经过比较,最终我们采用的Jekins这种方案,原因后续我会开一个新的文章跟大家讨论下。

        在部署Jekins的过程中,发现网上很多Jekins的资料说的都不太详细,而且照着搭建出现很多错误,也没有说明如何解决。但是经过九九八十一难,我终于成功解决了所有拦路的妖怪,搭建出一套可用的Jekins环境,现在记录下来,以备自己和其他有缘人不时之需。

Jenkins概述

什么是Jenkins

        Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行(这个比较抽象,暂且写上,不做解释)。

        Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。通常与版本管理工具(SCM)、构建工具结合使用。常用的版本控制工具有SVN、GIT,构建工具有Maven、Ant、Gradle。

什么是CI/CD

        CI(Continuous integration,中文意思是持续集成)是一种软件开发时间。持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。借用网络图片对CI加以理解。

        CD(Continuous Delivery, 中文意思持续交付)是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中。比如,我们完成单元测试后,可以把代码部署到连接数据库的Staging环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境。下图反应的是CI/CD 的大概工作模式。

Jenkins下载、安装和配置

        本文是基于docker环境下载、安装和配置Jenkins。如果没有docker环境,请先安装好docker,或使用资料中提供的linux镜像,里边已安装好docker。

        如果docker下载速度过慢,建议配置加速镜像,即将如下配置加入/etc/docker/daemon.json:

{
    "live-restore": true,
    "registry-mirrors": ["https://3laho3y3.mirror.aliyuncs.com"]
}

Jenkins镜像拉取

docker pull jenkins/jenkins:lts

Jenkins容器创建

第一步:创建jenkins映射目录

为方便后期修改jenkins配置,将jenkins容器中的/var/jenkins_home挂载到宿主机的/data/jenkins_home目录下。

在宿主机执行命令:

mkdir -p /data/jenkins_home
#CentOS7中的安全模块selinux把权限禁掉了,无法使用-v命令进行挂载,以下命令为添加selinux规则,将要挂载的目录添加到白名单
chcon -Rt svirt_sandbox_file_t /data/jenkins_home 

第二步:创建Jenkins容器

注意:以下命令为一行

docker run -di --name=jenkins_docker -p 7005:8080 -p 50000:50000 -u root
-v /data/jenkins_home:/var/jenkins_home jenkins/jenkins:lts

第三步:查看并访问Jenkins容器

 在宿主机浏览器输入:http://192.168.119.128:7005

Jenkins容器初始化

第一步:查看jenkins管理员密码

方式1:找到提示路径下的文件打开并找到密码

方式2:执行【docker logs jenkins容器名】查询密码

本文使用方式2:docker logs jenins_docker

 输入密码并登陆

第二步:插件安装

点击【安装推荐的插件】

第三步:设置管理员帐号

 此步骤可跳过

 第四步:设置实例

 

如果看到以上界面,那么恭喜你,你的Jenkins环境已经正常启动了!

Jenkins自动部署

 通过以上步骤,我们已经安装好了jenkins,下面让我们来部署一下自己的项目吧!

系统初始化配置

按下图顺序找到每一项配置项,分别配置。

 插件管理

第一步:进入【系统管理】-【插件管理】-【可选插件】,输入【Publish Over SSH】即可,如下图:

 第二步:勾选后,点击【直接安装】即可,安装成功后如下图:

 全局安全配置

 系统配置

系统配置中只需要配置一个远程服务器,用来部署项目

全局工具配置

配置maven

第一步:登录jenkins容器

注意:一定要用root用户登录,否则安装maven时会报permission denied(权限拒绝)。

第二步:执行以下命令,下载maven安装包

wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz

第三步:解压maven,删除压缩包,并将maven移动到/usr/local/maven下

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

rm -rf apache-maven-3.6.3-bin.tar.gz

mv apache-maven-3.6.3 /usr/local/maven

第四步:配置jenkins容器环境变量

退出jenkins容器,在宿主机运行如下命令

docker cp jenkins_docker:/etc/profile ./

vim ./profile

在profile最下方加入以下代码

 运行以下命令,将profile上传到jenkins容器

docker cp ./profile jenkins_docker:/etc/profile

第五步:将maven配置到【全局工具配置】

将jenkins容器中maven的安装路径和配置文件路径配置到全局工具配置中

 

 配置jdk

第一步:将jdk安装包上传到宿主机

第二步:将jdk安装包上传到jenkins容器

docker cp /usr/jenkins/jdk-8u181-linux-x64.tar.gz  jenkins_docker:/

第三步:登录jenkins容器

注意:一定要用root用户登录,否则安装maven时会报permission denied(权限拒绝)。

 第四步:解压jdk,删除压缩包,并将jdk移动到/usr/local/openjdk-8下

tar -zxvf jdk-8u181-linux-x64.tar.gz
rm -rf jdk-8u181-linux-x64.tar.gz
mv jdk1.8.0_181 /usr/local/openjdk-8

第五步:配置jenkins容器环境变量

退出jenkins容器,在宿主机运行如下命令

docker cp jenkins_docker:/etc/profile ./

vim ./profile

在profile最下方加入以下代码

 运行以下命令,将profile上传到jenkins容器

docker cp ./profile jenkins_docker:/etc/profile

第六步:将maven配置到【全局工具配置】

 配置git

 保存配置

以上配置都完成后,点击【保存】按钮

创建测试项目并上传到码云

创建测试项目

 添加项目依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>myitem</artifactId>
    <version>1.0-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.9.RELEASE</version>
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

创建启动类

package com.sinoexcel;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

创建Controller类

package com.sinoexcel.web.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/test")
public class MyController {

    @GetMapping("/hello/{name}")
    public String sayHello(@PathVariable("name") String name){

        return name + ",你好";
    }
}

创建maven仓库

本文是在gitee.com码云创建的maven仓库,创建步骤略(参考百度)

 注意:创建完空仓库后,一定不要初始化!一定不要初始化!一定不要初始化!

上传代码到码云

上传详细过程略,请百度参考maven上传项目到码云

 本文使用的mven仓库地址:

https://gitee.com/sinoexcel/jenkins.git

在jenkins中创建部署任务​​​​​​​

创建部署任务

 配置git仓库

 

 

配置构建触发器

配置触发构建操作的触发器

配置构建步骤

使用maven对项目进行打包

 

 配置构建后操作

项目通过maven打包完成后,通过ssh上传到部署服务器(本文为192.168.119.128),并执行启动命令

 

命令说明:

java -jar ./sinooa.jar & #后台启动jar包

测试地址

http://192.168.119.128:7005/job/sinooa_item/build?token=sinooa_token

然后你就会看到jenkins按照你设计的流程清理、编译、测试、打包、上传到服务器,启动,恭喜你,以后再也不用自己执行这些复杂的构建过程了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值