Jenkins CICD 自动构建

本文详细介绍了如何安装Jenkins v2.230,并配置全局凭据和执行示例。通过示例展示了如何进行前端项目的构建、升级和回滚操作,涉及到SSH key的生成以及使用Groovy脚本进行条件判断。此外,还涵盖了Nginx的配置,以支持前端Vue项目的部署,确保静态资源的缓存和正确路由。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Jenkins安装

        请参考其他, 本文内容jenkins 安装的版本为Jenkins 2.230

二、配置全局凭据

 三、配置示例

四、配置示例详情及相关脚本

@rollback的Groovy Script

path="${jenkinsProject.workspace}/backup/"
rollback=['bash', '-c', "ls -t1 ${path} | grep .zip "].execute().text.readLines()
if (action.equals("RollBack")) {
  return rollback
} else {
  return ["选择RollBack后显示"]
}

@仓库地址:git@bitbucket.org:xxx_doctor_view/xxx_doctor_view_v1.git

需要在Jenkins安装服务器上生成SSH key。并将公钥发到Bitbucket或者Github仓库里面以获取拉取代码的权限。

Linux服务器的公钥获取命令:cat ~/.ssh/id_rsa.pub

@Builder过程  conditional step

--Execute Shell步骤一   回滚则退出不继续执行下面的步骤二

if [ "${action}" = "RollBack" ]; then
 exit -1;
fi

--Execute Shell步骤二  升级则执行打包命令

yarn -v
yarn install
yarn build:doctor

@Bulder过程  Execute Shell

site_name=XXX_DOCTOR_VIEW
backup_path=${WORKSPACE}/backup
site_folder=${JENKINS_HOME}/workspace/website/$site_name
parent_site_folder=${JENKINS_HOME}/workspace/website
build_folder=${WORKSPACE}/$site_name
time=`date +%Y-%m-%d-%H-%M`
oldtmpname=${site_name}_delete
newtmpname=${site_name}_${time}

if [ ! -d $backup_path ]; then
    mkdir -p $backup_path
fi
if [ ! -d $site_folder ]; then
    mkdir -p $site_folder
fi
if [ ! "$action" = "RollBack" ]; then
    #Step1:打包后第一步备份
    cd $backup_path    
    #branch=${GIT_BRANCH}
    #branch=$choose
    branch=${choose/#"origin/"/}
    branch_name=${branch//"/"/"-"}    
    backupname=${JOB_NAME}-${branch_name}-build${BUILD_NUMBER}-${time}.zip
    cp -r $build_folder $backup_path
    zip -q -r $backupname  ./$site_name/*
    rm -rf $backup_path/$site_name
    
    total_file_num=`ls -l | grep -v 'total' | wc -l`
    if [ $total_file_num -gt 5 ];
    then
        num=`expr $total_file_num - 5`
        files=`ls -ltr | grep -v 'total' | awk '{print $9}' | head -n $num`
        echo $files | xargs rm -f
        echo "保留5个备份,删除早期备份: " $files
    fi

    
    #Step2:打包后第二步升级
    #换名称COPY    
    mv ${WORKSPACE}/$site_name -f ${WORKSPACE}/$newtmpname
    cp -r  ${WORKSPACE}/$newtmpname $parent_site_folder
    mv ${WORKSPACE}/$newtmpname -f ${WORKSPACE}/$site_name
    
    #新包旧包更换名称
    mv $parent_site_folder/$site_name -f $parent_site_folder/$oldtmpname
    mv $parent_site_folder/$newtmpname -f $parent_site_folder/${site_name}
    rm -rf $parent_site_folder/$oldtmpname
    
else
	if [ ! -d $backup_path/${rollback}_${time} ]; then
        mkdir -p $backup_path/${rollback}_${time}
    fi
    cd $backup_path
       
     #解压
    ufolder=${rollback}_${time}
        
    unzip -q -o $backup_path/${rollback} -d $backup_path/$ufolder
    
    #换名称COPY    
    mv $backup_path/$ufolder/$site_name -f $backup_path/$ufolder/$newtmpname
    cp -r  $backup_path/$ufolder/$newtmpname $parent_site_folder
    mv $backup_path/$ufolder/$newtmpname -f $backup_path/$ufolder/$site_name
    
    #新包旧包更换名称
    mv $parent_site_folder/$site_name -f $parent_site_folder/$oldtmpname
    mv $parent_site_folder/$newtmpname -f $parent_site_folder/$site_name
    rm -rf $parent_site_folder/$oldtmpname
    
   
    #删除解压文件夹
    rm -rf $backup_path/$ufolder
fi

五、效果展示

可以实现前端网站的构建升级 以及 回滚操作。

六、Nginx配置 (前端vue项目)


server {

    listen 80;
    server_name doctor.xxx.com;
    index index.php index.htm index.html;
    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    root  /var/lib/jenkins/workspace/website/XXX_DOCTOR_VIEW;
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires      30d;
    }

    location ~ .*\.(js|css)?$
    {
        expires      12h;
    }
    location / {
        try_files $uri $uri/ @router;#需要指向下面的@router否则会出现vue的路由在nginx中刷新出现404
        index  index.html index.htm;
    }

    location @router {
        rewrite ^.*$ /index.html last;
    }

    location /api/ {
        rewrite ^/b/(.*)$ /$1 break;
        proxy_pass http://api.xxx.com;
    }
    error_log  /usr/local/nginx/logs/error_prod_xxx_doctor_view_log;
    access_log /usr/local/nginx/logs/access_prod_xxx_doctor_view_log;

}

     

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卿风拂山岗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值