• Linux安装jenkins


    将安装包传入linux

    执行安装命令

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

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

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

    访问后首先进入此界面,等待他准备完成。 

    他会自动生成密码,在日志文件内,日志文件路径在安装命令中 。

     

    输入密码后如果出现一直停在加载页面,就参考此文章,更换镜像源。

    https://blog.csdn.net/hiXavier/article/details/103662275https://blog.csdn.net/hiXavier/article/details/103662275

     创建用户,如果选择使用admin继续,那下次登录密码还是日志里的

    修改密码

     

    在jenkins所在的服务上安装jdk并配置环境变量。


    【1】解压jdk软件
     [2]vi /etc/profile
        export JAVA_HOME=JDK的安装路径
        export PATH=$PATH:$JAVA_HOME/bin
     [3] source /etc/profile    

     

     

    集成git

    在jenkins所在的服务器上安装git软件
    yum install -y git

    查看是否安装git
    git --version

    位置和jdk一致

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

       

     

     

     

    集成maven

    在jenkins安装的机器上安装maven

    我实在虚拟机上安装的,所以先把安装包传入虚拟机

     解压

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

    解压完毕 

      重命名(此步骤可以不执行)

     配置环境变量

     

     刷新配置文件

    测试mvn

    修改maven的本地仓库和远程仓库 

    找到解压文件下的conf目录下的settings.xml文件 

    配置本地仓库

     配置远程下载路径 

    保存退出

    配置jenkins上的maven

    安装maven插件

     

    安装getee,用来远程拉取,这里已经装过了 ,所以搜不到

    测试

     手动拉取测试

     这里下拉时出错了原因

     pom包里这一句他不识别,删掉

     还是报错,发现

     再次拉取

     

     

    配置远程拉取

    这里用的是getee仓库,需要下载getee仓库依赖,前面已经下载过了。

     

    修改项目配置 

     选中此框

     

    到穿透软件配置

     

     

    到getee配置

     

     

     成功

     

    我们上传代码到getee后jenkins会自动拉取

    配置ssh免密登录

    在jenkins所在的机器上生成公钥

    命令:

    ssh-keygen -t rsa

     

    将公钥导入到认证文件中

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

    ssh公钥生效至少满足两个条件

    .ssh目录权限必须是700 

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

     给对应的文件授权

    chmod 700 ~/.ssh

    chmod 600 ~/.ssh/authorized_keys

    把公钥复制到另一台机器上

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

    测试:

    ssh 地址

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

    配置jenkins脚本

     

    1. #!/bin/bash
    2. echo "部署的目录和项目名称"
    3. DIR="/data/app"
    4. projectName="my-boot"
    5. echo "待部署的应用服务器,可多台"
    6. server_ips="192.168.92.242"
    7. for server_ip in ${server_ips[@]}
    8. do
    9. echo "ssh连接进行备份操作"
    10. ssh -Tq -oStrictHostKeyChecking=no root@${server_ip} <
    11. mkdir -p $DIR/backup/${projectName}
    12. mkdir -p $DIR/${projectName}
    13. if [ -f "$DIR/${projectName}/${projectName}.jar" ];then
    14. mv $DIR/${projectName}/${projectName}.jar $DIR/backup/${projectName}/${projectName}-`date "+%Y%m%d_%H%M%S"`.jar
    15. fi
    16. EOF
    17. echo "拷贝jar包到目标服务器的tmp目录"
    18. scp -q -oStrictHostKeyChecking=no ${WORKSPACE}/target/*.jar root@${server_ip}:/tmp/${projectName}.jar
    19. echo "ssh远程连接进行发布操作"
    20. ssh -q -oStrictHostKeyChecking=no root@${server_ip} <
    21. mv /tmp/${projectName}.jar $DIR/${projectName}/${projectName}.jar
    22. EOF
    23. done
    24. echo "success"

     

     

     

     

     将代码放入

     

    保存后测试:

    自动拉取后进入此处出现此文字则成功

     

     

     创建一个启动脚本自动启动项目

    创建文件

     vi start.sh

    文件内容

    1. #!/bin/bash
    2. set -e #任何命令出错就退出
    3. set -o pipefail
    4. APP_ID=my-boot
    5. APP_DIR="/data/app"
    6. nohup java -jar ${APP_DIR}/${APP_ID}/${APP_ID}.jar > release_out.log &
    7. start_ok=false
    8. if [[ $? = 0 ]];then
    9. sleep 3
    10. tail -n 10 release_out.log
    11. sleep 5
    12. tail -n 50 release_out.log
    13. fi
    14. aaa=`grep "Started" release_out.log | awk '{print $1}'`
    15. if [[ -n "${aaa}" ]];then
    16. echo "Application started ok"
    17. exit 0
    18. else
    19. echo "Application started error"
    20. exit 1
    21. fi

     修改权限

     

     

     创建关闭脚本

    vi stop.sh

    1. #!/bin/bash
    2. APP_ID=my-boot
    3. ps aux | grep ${APP_ID} | grep -v "grep" | awk '{print "kill -9 "$2}' | sh

     

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

    配置脚本自动执行

    在jenkins中配置

     

     

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

    先关闭,在开启 

    上传到gitee上测试代码,他自动拉取,自动部署。

     

  • 相关阅读:
    博途PLC S7-1200/1500 ModbusTcp通信SCL代码篇(轮询)
    【ICLR 2017】端到端优化的图像压缩
    LeetCode每日一题(898. Bitwise ORs of Subarrays)
    webrtc Native C++视频旋转/裁减/绿屏问题
    BOM批量查询
    我们应该用中文编程
    读像火箭科学家一样思考笔记05_思想实验
    论文翻译:2021_语音增强模型压缩_Towards model compression for deep learning based speech enhancement
    不是吧?30秒 就能学会一个python小技巧?!
    到底为什么不建议使用SELECT *?
  • 原文地址:https://blog.csdn.net/weixin_43766390/article/details/126281758