栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

CentOS 7.4 安装 Jenkins 并自动化构建部署

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

CentOS 7.4 安装 Jenkins 并自动化构建部署

CentOS 7.4 安装 Jenkins 并自动化构建部署 环境要求

安装 Jenkins 需要有 java 环境,请先安装并配置好 jdk

安装流程
  1. 下载依赖

    wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
    
  2. 导入密钥

    rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
    
  3. 通过 yum 安装

    yum install jenkins
    
  4. 查看安装目录相关信息

    rpm -ql jenkins
    

    如下图所示

  5. jenkins 相关目录含义

    /usr/lib/jenkins/:jenkins 安装目录  
    /etc/sysconfig/jenkins:jenkins 配置文件  
    /var/lib/jenkins/:默认的 JENKINS_HOME  
    /var/log/jenkins/jenkins.log:jenkins 日志文件  
    
  6. 修改 jenkins 端口号和用户

    jenkins 默认端口号为 8080 ,为了防止端口冲突,修改端口号为 8888 ,用户默认为 jenkins ,直接修改为 root

    vim /etc/sysconfig/jenkins
    
    JENKINS_USER="root"
    JENKINS_PORT="8888"
    
  7. 启动

    service jenkins start
    

    查看启动状态

    service jenkins status
    

    关闭

    service jenkins stop
    

    设置开机自启动

    chkconfig jenkins on
    
  8. 如果启动报错,查看错误日志

    journalctl -xe
    

    发现 jdk 路径报错

    修改 Jenkins 启动配置文件,指定 java 安装路径

    vim /etc/init.d/jenkins
    

    在下图所示最后一行添加自己的 java 安装路径

    保存退出后

    systemctl daemon-reload
    
  9. 启动成功后,访问 http://ip:8888 即可进行初始化配置,初始密码在 /var/lib/jenkins/secrets/initialAdminPassword 中

    cat /var/lib/jenkins/secrets/initialAdminPassword
    
  10. 登陆后,选择安装默认配置插件,等待安装完成,然后创建账户(默认第一个账户为管理员),一路点确定,即可进入 jenkins 首页

  11. 进入系统管理,点击全局工具配置,配置 Maven 、 JDK 、 Git 、 NodeJS 等所需环境的名字和路径;然后点击插件管理,安装所需的插件,下面是几个我所需要的插件

    Deploy to container Plugin
    Config File Provider Plugin
    Generic Webhook Trigger Plugin
    Publish Over SSH
    NodeJS Plugin

构建部署
  1. 我们以后端 maven 项目为例,在DashBord下,点击新建任务,创建一个任务,输入任务名称,选择创建一个自由风格的软件项目

  2. 点击确定后,开始进行任务配置,在 General 添加任务描述,配置构建策略相关信息

  3. 在源码管理中选择 Git ,配置 Git 仓库地址 Repository URL ,添加身份认证信息 Credentials ,指定代码分支

  4. 构建环境中勾选控制台输出时间戳信息

  5. 在构建中点击增加构建步骤,选择 调用顶层maven目标 ,选择你的 maven 版本,输入目标

    clean install package -Dmaven.test.skip=true -Pdev
    

    再点击增加构建步骤,选择 执行Shell ,构建完成后会自动运行Shell 脚本

    参考的 Shell 脚本如下

    # 时间防重
    DATE=$(date +%Y%m%d%H%M%S)
    
    # 工作区路径
    WORKSPACE=/var/lib/jenkins/workspace/demo
    
    # 备份区路径
    DIR=/app/demo
    
    # maven项目生成的jar包
    JARFILE=$WORKSPACE/target/demo.jar
    
    # 每次构建完成的备份文件
    BACKFILE=$DIR/backup/demo-$DATE.jar
    
    # 创建备份区
    if [ ! -d $DIR/backup ]; then
        mkdir -p $DIR/backup
        echo "创建backup"
    fi
    
    # 关掉上次启动的项目
    PID=`ps -ef | grep $JARFILE | grep -v grep | awk '{print $2}'`
    if [ -n "$PID" ]; then
        kill -9 $PID
        echo "关闭旧服务"
    fi
    
    # 备份jar包
    cp -u $JARFILE $BACKFILE
    
    # 只保留5个备份文件
    cd $DIR/backup/
    ls -lt | grep -v total | awk 'NR>5{print $NF}' | xargs rm -f
    
    # 启动
    cd $WORKSPACE
    if [ ! -d $WORKSPACE/logs ]; then
        mkdir -p $WORKSPACE/logs
        echo "创建logs"
    fi
    
    # 让jenkins的jar进程不被杀死
    BUILD_ID=dontKilMe nohup java -jar $JARFILE > $WORKSPACE/logs/demo.log 2>&1 &
    
构建部署到远程服务器
  1. 制作 SSH 私钥,机器间做免密登录配置

    机器 A : 192.168.AA.AAA

    机器 B : 192.168.BB.BBB

    机器 A 能够免密登录机器 B

    进入 A 机器,执行

    cd ~
    ssh-keygen -t rsa
    

    通过下面的命令,表示可以通过机器 192.168.AA.AAA 免密登录到机器 192.168.BB.BBB

    ssh-copy-id 192.168.BB.BBB
    

    测试是否登录 B 机器

    ssh 192.168.BB.BBB
    

    退出登录

    logout
    
  2. SSH 登录遇到 Permission denied

    原因是 ssh 对目录的权限有要求,需要将 .ssh/authorized_keys 的权限修改成 600 ,执行

    cd .ssh
    chmod 600 authorized_keys
    

    发现文件被锁定,无法修改

    使用 lsattr 查看加锁情况

    lsattr authorized_keys
    

    发现有 i 属性

    使用 chattr 解锁,发现没有该命令(可能系统被动过,被删掉了)

    chattr -i authorized_keys
    

    如图

    重新安装 e2fsprogs

    yum -y remove e2fsprogs
    yum -y install e2fsprogs
    

    安装成功后再改变权限

    chattr -i authorized_keys
    chmod 600 authorized_keys
    
  3. 配置 Publish Over SSH

    进入 Jenkins —> 系统管理 —> 系统配置,配置 Publish over SSH

  4. 构建执行 Shell 合适位置添加

    scp -r $FILE user@ip:$DIR/
    export BUILD_ID=DonTKILLME
    

    通过 ssh 将文件推送到远程服务器

  5. 构建后操作

    执行脚本修改权限为 755

    chmod 755 demo.sh
    
  6. 通过 shell 脚本运行 jar 包,报错

    nohup: failed to run command ‘java’: No such file or directory
    

    服务器上安装了 java ,环境变量也配置成功了的。在命令行输入java -version 也能查到版本号。但是通过脚本执行 java 命令时确报错找不到 java 。这是由于脚本执行命令的时候会默认区 /usr/bin 里面去找 java ,结果就找不到。我们只需要将 java 的 bin 配置软链接映射到 /usr/bin 目录下即可

    echo $JAVA_HOME
    cd /usr/bin
    ln -s -f $JAVA_HOME/bin/java
    
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/457107.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号