首页 > 其他分享 >redhat环境使用jenkins部署项目(前后端)

redhat环境使用jenkins部署项目(前后端)

时间:2022-11-02 16:34:32浏览次数:65  
标签:redhat service 部署 echo build jenkins docker name

目录

redhat环境使用jenkins部署项目(前后端)

最近使用了jenkins部署项目,在此做一个小结

从安装到部署

  1. 安装jenkins
    安装文章网上一大把,百度一下,提几个重要的点:

    • 在安装过程中,请把jenkins的使用用户设置为root用户,防止后面的权限不够,忘了更改也没事,后面为jenkins增加root权限即可
    • 注意你的jenkins版本,笔者安装的是2.315,但是此版本有个小bug,在部署中的项目可能不会显示进度,需要刷新页面,可以尝试一下其他版本;除此之外,得注意一下jenkins的版本和java的版本,从某个版本开始最低的java版本为11
    • 解锁jenkins时,请选择安装推荐的插件,免得后面手动安装;重新安装时,请把你的jenkins卸载干净,避免未知的错误
  2. 需要安装的插件
    Maven Integration
    Git Parameter
    NodeJS
    ps:前两个是后端,后一个是前端用,一般来说,安装之后,重启生效

  3. jenkins配置

    • 全局配置

ps:笔者记得我妹有配置过git,只是安装了git,这应该是jenkins自己读取到的

  • 系统配置
![](/i/l/?n=22&i=blog/2775174/202211/2775174-20221102162602742-1630103801.png)


 将你`echo $path`的环境变量放置到此处,否则npm命令jenkins将读取不到
  1. 编写shell脚本

    • 后端
    #!/bin/bash -il
    #maven打包
    
    
    mvn clean package -Dmaven.test.skip=true
    echo 'package ok!'
    echo 'build start!'
    # cd ./
    
    service_name="administrate"
    service_prot=8070
    log_address="/administrate"
    
    mount_address="$log_address"
    
    echo "mount_address $mount_address"
    
    #查看镜像id
    IID=$(docker images | grep "$service_name" | awk '{print $3}')
    echo "IID $IID"
    if [ -n "$IID" ]
    then
        echo "exist $service_name image,IID=$IID"
        #删除镜像
        docker rmi -f $service_name
        echo "delete $service_name image"
        #构建
        cd administrate/
        docker build -t $service_name .
        echo "build $service_name image"
    else
        echo "no exist $service_name image,build docker"
        #构建
        cd administrate/
        docker build -t $service_name .
        echo "build $service_name image"
    fi
    #查看容器id
    CID=$(docker ps | grep "$service_name" | awk '{print $1}')
    echo "CID $CID"
    if [ -n "$CID" ]
    then
        echo "exist $service_name container,CID=$CID"
        #停止
        docker stop $service_name
        #删除容器
        docker rm $service_name
    else
        echo "no exist $service_name container"
    fi
    #启动
    cd /
    echo "启动语句  docker run -d --name $service_name --net=host -p $service_prot:$service_prot -v $mount_address:$log_address $service_name"
    docker run -d --name $service_name --net=host -p $service_prot:$service_prot $service_name
    #查看启动日志
    # docker logs -f -t --tail 100  $service_name
    
    #!/bin/bash -il
    #maven打包
    
    
    mvn clean package -Dmaven.test.skip=true
    echo 'package ok!'
    echo 'build start!'
    # cd ./
    
    service_name="business"
    service_prot=8060
    log_address="/business"
    
    mount_address="$log_address"
    
    echo "mount_address $mount_address"
    
    #查看镜像id
    IID=$(docker images | grep "$service_name" | awk '{print $3}')
    echo "IID $IID"
    if [ -n "$IID" ]
    then
        echo "exist $service_name image,IID=$IID"
        #删除镜像
        docker rmi -f $service_name
        echo "delete $service_name image"
        #构建
        cd business/
        docker build -t $service_name .
        echo "build $service_name image"
    else
        echo "no exist $service_name image,build docker"
        #构建
        cd business/
        docker build -t $service_name .
        echo "build $service_name image"
    fi
    #查看容器id
    CID=$(docker ps | grep "$service_name" | awk '{print $1}')
    echo "CID $CID"
    if [ -n "$CID" ]
    then
        echo "exist $service_name container,CID=$CID"
        #停止
        docker stop $service_name
        #删除容器
        docker rm $service_name
    else
        echo "no exist $service_name container"
    fi
    #启动
    cd /
    echo "启动语句  docker run -d --name $service_name --net=host -p $service_prot:$service_prot -v $mount_address:$log_address $service_name"
    docker run -d --name $service_name --net=host -p $service_prot:$service_prot $service_name
    #查看启动日志
    # docker logs -f -t --tail 100  $service_name
    
    • 前端
    rm -rf node_modules/
    rm -rf yarn.lock
    rm -rf package-lock.json 
    npm cache clean --force 
    npm cache verify
    echo "运行 npm install"
    jenkins_shell_path=$(pwd)
    echo "jenkins_shell_path: $jenkins_shell_path"
    npm install
    npm i --unsafe-perm
    echo "运行 run build"
    npm run build
    echo "构建成功"
    rm -rf /www/workplat-front/
    mkdir -p /www/workplat-front/
    mv ./dist/* /www/workplat-front/
    

    其中:

    1)mkdir在第一次创建多级目录时,加上-p,否则会提示"no such directory",意思就是你没有创建上级目录,如果你手动去创建过,那么-p,可有可无,这大概是linux的缓存吧。

    2)前端项目需要额外安装nginx去监听访问端口

  2. 启动步骤

    1)选择项目

    2)选择分支,开始构建

标签:redhat,service,部署,echo,build,jenkins,docker,name
From: https://www.cnblogs.com/xxg98/p/16851462.html

相关文章