Jenkins 安装以及使用

Jenkins安装于mac,服务器是Centos 7.9

1:环境准备

1.1  docker上安装Jenkins

先进入官网,然后选择docker(建议一般选择LTS【长期支持版】)

 将jenkins安装并运行到docker上

#下载jenkins到docker上
docker pull jenkins/jenkins       

#创建本地数据卷 实际是在/Users/mac2016/java/jenkins_home/   此处mac2016是我使用mac的名称
mkdir -p /java/jenkins_home/     

# 创建容器
docker run -d --name jenkins -p 8040:8080 -p 50000:50000 -v /Users/mac2016/java/jenkins_home:/var/jenkins_home jenkins/jenkins


-d 标识是让 docker 容器在后台运行
--name 定义一个容器的名字,如果没有指定,那么会自动生成一个随机数字符串当做UUID
-p 8040:8080 端口映射,我本地的`8080`被占用了,所以随便映射了一个`8040`
-p 50000:50000 端口映射
-v /data/jenkins_home:/var/jenkins_home 绑定一个数据卷,`/data/jenkins_home`是刚才创建的本地数据卷

1.2 配置Jenkins

1.2.1 基础配置

        启动docker以后,等一会,然后通过浏览器访问 http://localhost:8040/`(注意替换成你自己的IP和端口)进入初始页,如果 Jenkins 还没有启动完成,会显示如下内容

                如果出现下列页面,则输入管理员密码,根据提示密码。

/var/jenkins_home/secrets/initialAdminPassword这个文件中,注意这个路径是 Docker 容器中的,所以我们通过如下命令获取一下 

# 0382307ce1d4 容器id
docker exec 0382307ce1d4 cat /var/jenkins_home/secrets/initialAdminPassword

        登录Jienkins页面之后页面如下:【安装推荐插件】

        安装完毕之后需要创建一个新的账号,页面如图 :

 

        然后在 系统管理 =》插件管理=》可用插件。安装下面几个插件: 

1:Rebuilder 重新构建。

2: Safe Restart 安全重启Jenkins

3:Maven Integration plugin

4:Publish over SSH

1.2.2 配置全局安全属性

        默认用户登录之后可以做任何事情【不是很安全】。所以需要去【Manage Jenkins=》Configure System】配置

1.2.3 添加用户 

【Manage Jenkins=》Manage Users】

 然后在 【Configure Global Security】中给此用户添加权限

然后可以对比看下两个用户的差别

 

 

 2 centos 7配置

此linux需要 ssh远程连接、ip、防火墙关闭。

2.1 java环境搭建

下载jdk到 /usr/java,然后解压。解压后安装下列进行操作

打开文件

vim /etc/profile

在末尾添加

export JAVA_HOME=/usr/java/jdk1.8.0_251
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

 使环境变量生效

source /etc/profile

检查jdk是否安装完毕

java -version

2.2 git 安装

1:安装git

#安装git
yum install -y git   #安装git
git version   #查看版本


#git初始化并且生成授权证书
git config --global user.name "qy"
git config --global user.email "1439107348@qq.com"

ssh-keygen -t rsa -C "1439107348@qq.com"    #生成证书  输入后一路回车

2: 将git证书配置到github上,保证linux服务器以及github之间可联通

获取公匙,然后复制到github上面

vim id_rsa.pub

 

然后在linux上 测试是否正确连接上 

ssh git@github.com

2.3 Maven安装

         这⾥下载的是 【apache-maven-3.6.3-bin.tar.gz】 安装包,并将其放在了 ==/usr/local/temp== ⽬录下

# 解压压缩包
cd /usr/local
# 将压缩文件解压至当前目录【/usr/local】
tar -zxvf /usr/local/temp/apache-maven-3.6.3-bin.tar.gz -C ./
# 解压后会得到一个【apache-maven-3.6.3】目录,将其重命名为【maven】目录
mv apache-maven-3.6.3/ maven

        这⾥配置的是阿⾥云的maven镜像源。编辑修改【/usr/local/maven/conf/settings.xml】文件,在 <mirrors></mirrors> 标签对⾥添加如下内容即可:

vim /usr/local/maven/conf/settings.xml
<mirror>
	<id>alimaven</id>
	<name>aliyun maven</name>
	<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
	<mirrorOf>central</mirrorOf>
</mirror>

           配置环境变量,编辑修改  vim /etc/profile ⽂件,在⽂件尾部添加如下内容,配置 maven 的安装路径。配置完毕之后执⾏ source /etc/profile 来刷新环境变量,让 maven 环境的路径配置⽣效

# MAVEN
export MAVEN_HOME=/usr/java/maven     #maven路径
export PATH=$MAVEN_HOME/bin:$PATH

         最后执行 mvn –v ,能打印出 maven 版本信息说明安装、配置成功:

2.4:配置Tomcat 

        先下载Tomcat,可以直接Linux上下载,或者本机下载之后移动到Linux上

直接Linux下载:

wget http://mirrors.bfsu.edu.cn/apache/tomcat/tomcat-10/v10.0.12/bin/apache-tomcat-10.0.12.zip

去官网下载

 

 下载完毕之后解压文件 :unzip apache-tomcat-10.0.12.zip

        配置tomcat 【配置可执行权限与端口】,进入tomcat目录下

chmod a+x -R *

 

修改端口:

vim conf/server.xml

 然后在tomcat文件下启动tomcat:

bin/startup.sh

检查tomcat是否启动:

ps -ef|grep tomcat

 

2.5 将Linux注册到Jenkins上

2.5.1 Jenkins 新建节点

 

 

 

 

高级设置:

 

 

添加完成之后如下图:

 

然后单击MyTest(就是刚刚新增的节点) 进入下一个页面之后继续单击【重启代理】然后等待

 

2.5.2 创建一个新任务【验证Jenkins是否配置成功】 

 

 

 

 

 

2.5.3 用一个SpringBoot测试【war格式发布 不推荐】 

 创建一个简单的SpringBoot Demo,然后上传到gitee/github 。然后在Jenkins中创建一个任务

 

 

 

 

 SpringBoot Demo结构如下

 

pom.xml:

 

<?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>demoWeb</artifactId>
    <version>1.0-SNAPSHOT</version>

<!--    指定war报-->
    <packaging>war</packaging>

<!--    <properties>-->
<!--        <maven.compiler.source>8</maven.compiler.source>-->
<!--        <maven.compiler.target>8</maven.compiler.target>-->
<!--    </properties>-->
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <parent>
        <artifactId>spring-boot-parent</artifactId>
        <groupId>org.springframework.boot</groupId>
        <version>2.2.13.RELEASE</version>

    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <!-- 移除嵌入式tomcat插件 -->
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>


        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <scope>provided</scope>
        </dependency>


        <!--thymeleaf 前端框架-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>


<!--     部署必须要这个   将tomcat 内嵌到 web项目中,这样可以直接运行 webapp项目。不需要再部署到额外的tomcat,直接就可以运行了。-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
    </dependencies>

</project>

UserController.cs

package com.item.Controller;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * @Description:用户控制器
 * @Author
 * @Date
 */
@Controller
@Slf4j
@RequestMapping("user")
public class UserController {
    @GetMapping
    public String user(Model model) {
        log.info("进入到项目");
        model.addAttribute("title", "欢迎来到用户界面");
        return "user";
    }
}

Application.cs

package com.item;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

@SpringBootApplication
public class Application extends SpringBootServletInitializer {

    /**
     * 如果部署tomcat上,必须有这一句,打包方式war
     * @param application
     * @return
     */
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }

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

user.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<h2 th:text="${title}"></h2>
测试小酱油
</body>
</html>

deploy.sh

#!/usr/bin/env bash
#编译+部署demoWeb站点

#需要配置如下参数
# 项目路径, 在Execute Shell中配置项目路径, pwd 就可以获得该项目路径
# export PROJ_PATH=这个jenkins任务在部署机器上的路径

# 输入你的环境上tomcat的全路径
# export TOMCAT_APP_PATH=tomcat在部署机器上的路径

### base 函数
killTomcat()
{
    pid=`ps -ef|grep tomcat|grep java|awk '{print $2}'`
    echo "tomcat Id list :$pid"
    if [ "$pid" = "" ]
    then
      echo "no tomcat pid alive"
    else
      kill -9 $pid
    fi
}
#当前执行语句需要进入demoWeb工程根目录
cd $PROJ_PATH/demoWeb
# 利用maven构建工程
mvn clean install

# 停tomcat
killTomcat

# 删除原有工程
rm -rf $TOMCAT_APP_PATH/webapps/ROOT
rm -f $TOMCAT_APP_PATH/webapps/ROOT.war
rm -f $TOMCAT_APP_PATH/webapps/demoWeb-1.0-SNAPSHOT.war

# 复制新的工程
cp $PROJ_PATH/demoWeb/target/demoWeb-1.0-SNAPSHOT.war $TOMCAT_APP_PATH/webapps/

cd $TOMCAT_APP_PATH/webapps/
mv demoWeb-1.0-SNAPSHOT.war ROOT.war

# 启动Tomcat
cd $TOMCAT_APP_PATH/
sh bin/startup.sh

项目创建完成之后,生成好war包,然后上传到git中。最后在jenkins启动就行【https://gitee.com/wcjr/jenkins-ts_-springboot.git

 

注意。war格式不会使用到application.yml中的配置。所以发布好之后,直接ip+端口+控制器内访问地址就行

http://111.230.182.125:8080/user

 2.5.4 jar格式发布【此方式不需要idea打包上传,jenkins会有设置打包的地方。推荐使用此方式发布】

首先去配置全局变量

 

 

创建任务【构建一个maven项目】:

 

 

 

 

 

 jar格式部署。必须在pom.xml中配置下列代码。否则发布失败=》No main manifest attribute, in XXX.jar

<build>
        <plugins>
<!--            jar发布必须加上这个--> 
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>

                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>

    </build>

 start.sh  【此处shell 命令不再用之前war格式发布的 deploy.sh,在deploy.sh同级目录下上创建一个 start.sh命令】

#!/bin/sh
#Copy jar to target path

BUILD_ID=DONTKILLME #后台执行

pid=$(ps -ef|grep demoWeb-1.0-SNAPSHOT.jar|grep -v grep | awk '{print $2}')

#判断demo文件夹是否存在,如果存在,就echo 命令打印,否则创建
[ -d /home/jar/demo ] && echo "已经存在" ||  echo "不存在,即将创建" mkdir -p /home/jar/demo

#copy jar 到启动目录  $PROJ_PATH/demoWeb/target/为jenkins的工作目录,springboot-test为jenkins新建的item的name
cp -r $PROJ_PATH/demoWeb/target/demoWeb-1.0-SNAPSHOT.jar  /home/jar/demo

# 关闭已经启动的jar进程
function stop(){
if [ -n "$pid" ]
  then
        echo "pid进程 :$pid"
        kill -9 $pid

 else
    echo "进程没有启动"
fi
}
stop

sleep 5s

#发布jar服务
function start(){
  cd /home/jar/demo
  nohup java -jar demoWeb-1.0-SNAPSHOT.jar --server.port=8089 >demo.log 2>&1 &
}

start

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值