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. 进入系统管理,点击全局工具配置,配置 MavenJDKGitNodeJS 等所需环境的名字和路径;然后点击插件管理,安装所需的插件,下面是几个我所需要的插件

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

构建部署

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

    新建任务1

    新建任务2

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

    新建任务

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

    源码管理

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

    构建环境

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

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

    调用顶层maven目标

    顶层maven目标

    再点击增加构建步骤,选择 执行Shell ,构建完成后会自动运行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. 构建后操作

    publish

    执行脚本修改权限为 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 ,结果就找不到。我们只需要将 javabin 配置软链接映射到 /usr/bin 目录下即可

    echo $JAVA_HOME
    cd /usr/bin
    ln -s -f $JAVA_HOME/bin/java
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值