码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • jenkins


    目录

    1.什么是jenkins

    2.为什么使用jenkins

    3.安装jenkins

    3.1.准备条件

    3.1.1.安装jdk下载jdk,上传至linux并解压

    3.1.2.配置环境变量

    3.1.3.使配置环境变量生效

    3.1.4.检测java环境信息

    3.2.打开虚拟机

    3.3.将把jenkins的war放入虚拟机中

    3.4.运行jenkins

    3.5.访问浏览器

    3.6.查看密码

    3.7.输入密码进入

    3.8.安装成功之后

    4.修改密码

    4.1.点击用户列表

    4.2. 点击admin

    4.3.点击设置

    4.4.修改密码

    4.5.修改密码之后,重新登录

    4.6.登录成功之后

    5.jenkins集成jdk

    5.1.安装jdk

    5.1.1.查看有没有安装jdk

    5.1.2.安装jdk

    5.2. 点击控制面板

    5.3.点击设置

    5.4.点击全局配置

    5.5.点击新增jdk

    5.6.点击保存

    6.集成git

    6.1.在jenkins所在的服务器上安装git软件

    6.2.查看是否安装成功git

    6.3. 点击设置

    6.4.点击全局配置

    6.5.配置

    6.6保存

    6.7.测试jenkins会不会从gitee拉取代码

    6.7.1.打开git

    6.7.2.在git中新建一个仓库

    6.7.3.修改一下文件的内容并提交

    6.7.4.新建item

    6.7.5.报错

    6.7.6.添加

    6.7.7.添加成功之后

    6.7.8.build

    6.7.9.build完成之后

    6.7.10.点击控制台输出

    7.Maven集成

    7.1.将winds下的maven拉取到Linux上

    7.2.解压maven

    7.3.配置环境变量

    7.4.使环境变量生效

    7.5.查看安装情况

    7.6.修改maven的镜像

    7.6.1.进入maven里面

    7.6.2.进入到conf里

    7.6.3.进入到settings.xml

    7.6.4.修改镜像

    7.6.5.修改本地仓库的地址

    7.7.登录到jenkins

    7.8.点击设置和全局配置

    7.9.配置maven

    7.10.安装maven插件

    7.10.1.点击设置和插件7.

    7.10.2搜索maven插件,然后选中,直接安装

    7.11.测试maven

    7.11.1.在gitee上新建一个仓库

    7.11.2.idea中创建一个maven工程

    7.11.3.将maven项目上传到gitee上

    7.11.4.Jenkins拉去项目

    ​8.jenkins自动拉取gitee远程仓库的代码

    8.1.jenkins中安装gitee插件

    8.2.修改任务项目的设置

    8.3.内网穿透

    8.4.在Jenkins上点击保存, 在gitee上点击添加

    8.5.测试

    9.需要把jenkins打包好的项目复制到测试服务器

    9.1.前提

    9.1.1.克隆一下虚拟机,修改一下ip

    9.1.2.链接,看一下javac的命令管用吗?

    9.2.找到我们要复制的jar包

    9.3.将我们jar包复制到另一台虚拟机上

    9.4.测试一下有没有复制成功

    9.5.在当前的虚拟机登录另一台虚拟机

    9.6.退出登录

    10.如何设置免密

    10.1.在jenkins所在的服务器上输入如下命令

    10.2.接下来需要将公钥导入到认证文件中

    10.3.给对应文件授权

    10.3.1.如果希望ssh公钥生效需满足至少下面两个条件

    10.3.2.给对应文件授权

    10.4.将当前虚拟机的公钥复制到另一台虚拟机上

    10.4.1.在另一台虚拟机上创建一个文件放入公钥

    10.4.2.在当前虚拟机上输入命令

    10.4.3.登录另一台虚拟机

    11.使用脚本在jenkins 完成jar的复制

    11.1.测试

    11.1.1.随便修改一下idea项目

    11.1.2.上传的远程仓库

    11.1.3.查看jenkins

    12. 编写启动脚本

    12.1.创建脚本

    12.2.修改权限

    12.3.执行

    13.编写关闭脚本

    13.1.创建关闭的脚本

    13.2.修改权限

    13.3.关闭

    13.4.查看一下是否真的关闭

    14.让jenkins自己启动和关闭

    14.1.测试

    14.1.1.修改idea里面的代码(省略)

    14.1.2.提交到远程仓库(省略)

    14.1.3.查看jenkins有没有打包编译



    1.什么是jenkins

     Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行(这个比较抽象,暂且写上,不做解释)。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。通常与版本管理工具(SCM)、构建工具结合使用。常用的版本控制工具有SVN、GIT,构建工具有Maven、Ant、Gradle。

    2.为什么使用jenkins

     注意:jenkins本身没有编译打包的功能,集成maven完成编译和打包, jenkins本身不会拉取gitee远程仓库的代码,集成git从远程仓库拉取代码, git本身也不会运行jar,需要集成jdk来运行jar

    3.安装jenkins

    3.1.准备条件

    3.1.1.安装jdk下载jdk,上传至linux并解压

    3.1.2.配置环境变量

    配置/etc/profile的内容
    ############JDK
    export JAVA_HOME=/usr/local/jdk1.8.0_161
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export PATH=$JAVA_HOME/bin:$PATH

    3.1.3.使配置环境变量生效

    source /etc/profile

    3.1.4.检测java环境信息

    javac

    3.2.打开虚拟机

     3.3.将把jenkins的war放入虚拟机中

     3.4.运行jenkins

    nohup java -jar /usr/local/jenkins.war  --httpPort=8777 --httpsPort=8778 > /usr/local/jenkins.log 2>&1 &

    -- nohup:如果虚拟机休眠时不关闭jenkins
    -- >: 启动时生成的日志放入
    -- &: 后台运行

    3.5.访问浏览器

    http:自己的ip地址:8777

     3.6.查看密码

     使用tail/cat 命令查看启动日志,日志中会输出jenkins密码

     3.7.输入密码进入

     自己运行,比较慢,稍等一会

    3.8.安装成功之后

    4.修改密码

    4.1.点击用户列表

    4.2. 点击admin

     4.3.点击设置

     4.4.修改密码

    4.5.修改密码之后,重新登录

    4.6.登录成功之后

    5.jenkins集成jdk

    5.1.安装jdk

    5.1.1.查看有没有安装jdk

    cat /etc/profile

    5.1.2.安装jdk

    在jenkins所在的服务上安装jdk并配置环境变量。
    【1】解压jdk软件
     [2]vi /etc/profile
        export JAVA_HOME=JDK的安装路径
        export PATH=$PATH:$JAVA_HOME/bin
     [3] source /etc/profile  

    5.2. 点击控制面板

    5.3.点击设置

     

    5.4.点击全局配置

    5.5.点击新增jdk

    5.6.点击保存

    6.集成git

    6.1.在jenkins所在的服务器上安装git软件

    yum install -y git

    6.2.查看是否安装成功git

    git --version

    6.3. 点击设置

     6.4.点击全局配置

     6.5.配置

    6.6保存

    6.7.测试jenkins会不会从gitee拉取代码

    6.7.1.打开git

     6.7.2.在git中新建一个仓库

     6.7.3.修改一下文件的内容并提交

    6.7.4.新建item

     

     

     6.7.5.报错

     错误的原因,因为你的仓库是私有的,需要你的账号和密码

    6.7.6.添加

     

     6.7.7.添加成功之后

    6.7.8.build

    6.7.9.build完成之后

     6.7.10.点击控制台输出

    7.Maven集成

    7.1.将winds下的maven拉取到Linux上

    7.2.解压maven

    tar -zxvf 要解压的名称

    7.3.配置环境变量

    vi /etc/profile

    7.4.使环境变量生效

    source /etc/profile

    7.5.查看安装情况

    mvn -versio

    7.6.修改maven的镜像

    7.6.1.进入maven里面

     cd maven3.8.6/

    7.6.2.进入到conf里

    cd conf/

    7.6.3.进入到settings.xml

    vi settings.xml

    7.6.4.修改镜像

    找到自己Windows下的maven的镜像,将Linux里面的镜像删除,将Windows下的maven镜像复制到Linux里

     7.6.5.修改本地仓库的地址

    7.7.登录到jenkins

    7.8.点击设置和全局配置

    7.9.配置maven

    7.10.安装maven插件

    7.10.1.点击设置和插件7.

    7.10.2搜索maven插件,然后选中,直接安装

     注意:下载失败要重新下载,直到安装maven

    7.11.测试maven

    如果gitee上的maven项目内容发生改变,则会拉取并进行编译 打包了

    7.11.1.在gitee上新建一个仓库

    7.11.2.idea中创建一个maven工程

    7.11.3.将maven项目上传到gitee上

    (1).先将项目设置成本地项目

    (2)上传到远程仓库 (步骤省略)

     7.11.4.Jenkins拉去项目

    (1)新建任务

     

    (2)点击一下

     我们能可以看到成功了

    8.jenkins自动拉取gitee远程仓库的代码

    8.1.jenkins中安装gitee插件

    8.2.修改任务项目的设置

    8.3.内网穿透

    8.4.在Jenkins上点击保存, 在gitee上点击添加

     

    8.5.测试

    测试后在Jenkins上,你会看见她自动打包了

    9.需要把jenkins打包好的项目复制到测试服务器

    在企业中jenkins所在的服务器和我们项目运行时的服务器应该不是同一台机器,jenkins编译打包好的软件在jenkins所在的服务器

    9.1.前提

    9.1.1.克隆一下虚拟机,修改一下ip

    修改IP在以前的笔记中

    9.1.2.链接,看一下javac的命令管用吗?

    9.2.找到我们要复制的jar包

    9.3.将我们jar包复制到另一台虚拟机上

    scp 文件名  root@远程ip:/远程的目录

    9.4.测试一下有没有复制成功

    去另一台虚拟机上去看一下有没有

    9.5.在当前的虚拟机登录另一台虚拟机

    ssh 另一台虚拟机的IP

    远程登录其他服务器时,需要手动的输入密码,能否设置免密登录  

    9.6.退出登录

     exit

    10.如何设置免密

    10.1.在jenkins所在的服务器上输入如下命令

    ssh-keygen -t rsa---敲回车

    10.2.接下来需要将公钥导入到认证文件中

    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

    10.3.给对应文件授权

    10.3.1.如果希望ssh公钥生效需满足至少下面两个条件

    • .ssh目录的权限必须是700 r4 w2 x1

    • .ssh/authorized_keys文件权限必须是600

    10.3.2.给对应文件授权

     chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys

    10.4.将当前虚拟机的公钥复制到另一台虚拟机上

    10.4.1.在另一台虚拟机上创建一个文件放入公钥

    mkdir ~/.ssh

    10.4.2.在当前虚拟机上输入命令

    scp -p ~/.ssh/id_rsa.pub root@另一台虚拟机的ip:路径

    scp -p ~/.ssh/id_rsa.pub root@192.168.74.154:/root/.ssh/authorized_keys

    10.4.3.登录另一台虚拟机

    ssh 另一台虚拟机的ip

    11.使用脚本在jenkins 完成jar的复制

    #!/bin/bash

    echo "部署的目录和项目名称"---输出的话
    DIR="/data/app" ---把jar包放到那个目录下
    projectName="my-boot"  jar包工程名字

    echo "待部署的应用服务器,可多台用@分割"
    server_ips="192.168.74.154" --准备部署到那个服务器的IP
    for server_ip in ${server_ips[@]}
    do

    echo "ssh连接进行备份操作"
    ssh -Tq -oStrictHostKeyChecking=no root@${server_ip} < mkdir -p $DIR/backup/${projectName} --创建一个备份目录
    mkdir -p $DIR/${projectName}  --创建一个真实的目录
    if [ -f "$DIR/${projectName}/${projectName}.jar" ];then
      mv $DIR/${projectName}/${projectName}.jar $DIR/backup/${projectName}/${projectName}-`date "+%Y%m%d_%H%M%S"`.jar
    fi
    EOF

    echo "拷贝jar包到目标服务器的tmp目录"
    scp -q -oStrictHostKeyChecking=no ${WORKSPACE}/target/*.jar root@${server_ip}:/tmp/${projectName}.jar  --远程复制

    echo "ssh远程连接进行发布操作"
    ssh -q -oStrictHostKeyChecking=no root@${server_ip} < mv /tmp/${projectName}.jar $DIR/${projectName}/${projectName}.jar

    EOF

    done

    echo "success"

    11.1.测试

    11.1.1.随便修改一下idea项目

    11.1.2.上传的远程仓库

     11.1.3.查看jenkins

    12. 编写启动脚本

    12.1.创建脚本

    vi start.sh

    #!/bin/bash
    set -e #任何命令出错就退出
    set -o pipefail

    APP_ID=my-boot
    APP_DIR="/data/app"

    nohup java -jar ${APP_DIR}/${APP_ID}/${APP_ID}.jar > release_out.log &
    start_ok=false
    if [[ $? = 0 ]];then
            sleep 3
            tail -n 10 release_out.log
            sleep 5
            tail -n 50 release_out.log
    fi
    aaa=`grep "Started" release_out.log | awk '{print $1}'`
    if [[ -n "${aaa}" ]];then
        echo "Application started ok"
        exit 0
    else
        echo "Application started error"
        exit 1
    fi

     12.2.修改权限

    chmod 777 start.sh

     12.3.执行

    ./start.sh

    13.编写关闭脚本

    13.1.创建关闭的脚本

    vi stop.sh

    #!/bin/bash

    APP_ID=my-boot
    ps aux | grep ${APP_ID} | grep -v "grep" | awk '{print "kill -9 "$2}' | sh

    13.2.修改权限

    chmod 777 stop.s

    13.3.关闭

    ./stop.sh

     13.4.查看一下是否真的关闭

    ps -ef|grep my-boot.jar

     两个脚本的运行还需要手动运行

    14.让jenkins自己启动和关闭

    sh $DIR/${projectName}/stop.sh
    sh $DIR/${projectName}/start.sh

    14.1.测试

    14.1.1.修改idea里面的代码(省略)

    14.1.2.提交到远程仓库(省略)

    14.1.3.查看jenkins有没有打包编译

  • 相关阅读:
    攻防世界—file_include
    【考研数学】高等数学第七模块 —— 曲线积分与曲面积分 | 2. 对坐标的曲线积分(第二类积分)
    数据结构 - 栈
    Linux Java环境变量设置教程
    基于PyTorch使用LSTM实现新闻文本分类任务
    一文说透kafka底层架构
    10.动态路由绑定怎么做
    函数模板(成长版)
    万字逐行解析与实现Transformer,并进行德译英实战(二)
    SQLServer2019安装(Windows)
  • 原文地址:https://blog.csdn.net/ne_123456/article/details/126284284
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号