jenkins使用自定义方式结合k8s实现ci/cd-前端代码实战

上一篇:jenkins使用自定义方式结合k8s实现ci/cd-后端实战https://blog.csdn.net/fsjwin/article/details/110736945
上一篇对后端代后端流水线部署k8s做了实战记录,本文对前端vue代码做个实战记录

1. 前端代码打包的特殊点

前端需要把代码打包进nginx中,但是在nginx中测nginx.conf文件中有网关的配置。dev和prod的不一样需要单独打包。
这里有个特别重要的地方,对于dockerfile和nginx.conf文件需要做个环境的区分,在各个环境单独去打包,而不是使用dev环境打的image
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
新建的文件,对原有代码无入侵。

2. jenkens的配置流程

2.1 一般配置

在这里插入图片描述

2.2 代码下载

在这里插入图片描述

2.3 打包,并通知k8s去拉取,部署镜像

在这里插入图片描述



# docker暴露的端口  EXPOSE 7002
EXPOSEPORT='80'
# k8s 编排service 端口
NODEPORT='30002'

# 工作空间,如:/data/jenkins/workspace/blade-saber-prod
cd ${WORKSPACE}

source /etc/profile


#配置资源中心
yarn config set registry https://registry.npm.taobao.org --global
yarn config set disturl https://npm.taobao.org/dist --global


#系统安装包
yarn install

#开始构建项目
echo '----->yarn build构建项目开始'
yarn build
echo '----->yarn build构建项目结束'


#仓库地址
registryUrl='10.1.8.151:8082'
#项目名:
projectName=blade
#服务名
serviceName=saber
#服务名
serviceTag=${BUILD_NUMBER}
#端口地址
#servicePort=8002
#环境标签
SPRING_PROFILES_ACTIVE=prod
#Dockerfile文件名
dockerfile=Dockerfile-$SPRING_PROFILES_ACTIVE

#pod的名字,如:blade-saber-prod
deploymentName=$projectName-$serviceName-$SPRING_PROFILES_ACTIVE

# 容器名字, 如blade-saber-vue
containerName=$projectName-$serviceName-$SPRING_PROFILES_ACTIVE
#镜像名字,如:10.1.8.151:8082/blade/blade-saber-vue:59
imageName=$registryUrl/$projectName/$containerName:$serviceTag

#获取容器id
echo '============删除旧容器==============='
containerid=`docker ps -a|grep -i $containerName|awk '{print $1}'`
#判断容器是否存在如果存在则删除,否则不删除
if  [ ! -n "$containerid" ];then
   echo "container is null"
else
    docker rm -f $containerid
fi

#获取镜像id
echo '============删除旧镜像==============='
imagesid=`docker images|grep -i $containerName|awk '{print $3}'| sort | uniq`
#判断镜像是否存在如果存在则删除,否则不删除
if  [ ! -n "$imagesid" ];then
   echo "images is null"
else
    docker rmi -f $imagesid
fi

echo '============开始打包镜像==============='
#构建docker镜像
docker build -f $dockerfile -t $imageName .
echo '============打包镜像完毕==============='



echo '============推送最新镜像开始==============='
docker login --username=admin  --password=admin123 $registryUrl
docker push $imageName
echo '============推送最新镜像完毕==============='

echo '============通知k8s拉取镜像开始==============='

#k8s master ip
MASTER='10.1.33.61'
# k8s 服务器上用于存放配置的目录 推动deploy_k8s.sh和*.yaml去的目录需要推送到k8smaster上
CONF_DIR='/data/kube-conf' 
 # 登录k8s username
K8S_USERNAME='root'
# jenkins服务器用于存放和k8s相关文件的目录
LOCAL_CON_DIR="/data/k8s" 
SH_NAME='deploy_k8s.sh'

# file name of yaml 如:k8s-prod-deploy.yaml
YAML_NAME='deploy_k8s.yaml'
SH_NAME='deploy_k8s.sh'

# transfer yaml & sh to k8s
scp ${LOCAL_CON_DIR}/${YAML_NAME} ${MASTER}:${CONF_DIR} #远程传送yaml
scp ${LOCAL_CON_DIR}/${SH_NAME} ${MASTER}:${CONF_DIR} #远程传送sh

# run k8s script

echo "+x----->"
# k8s 服务器上/data/kube-conf/deploy_k8s.给执行权限
ssh -p '22' ${K8S_USERNAME}@${MASTER} chmod +x ${CONF_DIR}/${SH_NAME}
echo "sh----->"
# k8s 服务器上/data/kube-conf/deploy_k8s.执行
ssh -p '22' ${K8S_USERNAME}@${MASTER} sh ${CONF_DIR}/${SH_NAME} ${deploymentName} ${imageName} ${REPLICAS} ${NAMESPACE} ${YAML_NAME} ${SPRING_PROFILES_ACTIVE} ${EXPOSEPORT} ${NODEPORT}

echo '============通知k8s拉取镜像结束==============='
echo '============ THE END ==============='


3. 后面和后端一模一样

不在赘述!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值