首页 > 其他分享 >k8s前端部署

k8s前端部署

时间:2023-04-07 18:01:04浏览次数:65  
标签:prd 部署 前端 imgFile echo imageTag sh docker k8s

//前端项目打包构建;支持多环境
pipeline {
agent any
environment {
//GIT路径
GIT_PATH = "threegene/dev/zproduct/server/demo.git"
//项目名称, 使用Job名称作为项目名称
PROJECT_NAME = "${JOB_NAME}"
//自定义项目名称
//PROJECT_NAME = "threegene-livex-center-html"
//镜像分组,如果空则采用服务名前缀作为分组
//IMAGE_GROUP = ""
}

stages {
stage('Init') {
steps {
script{
dev_imgFile = ""
prd_imgFile = ""
_imageTagForTest = ""
_imageTag = ""
_imageGroup = env.IMAGE_GROUP
_dockerFile = "nginx_dockerfile"
_envs = ["prod","test"]
_envTexts = [prod:'生产环境',test:'测试环境']

//if(!params.build_prd){
// _envs = ["test"]
//}

if(_imageGroup==null || _imageGroup==""){
_imageGroup = "${PROJECT_NAME.split('-')[0]}"
}
}
}
}
stage('Checkout') {
steps {
echo "git: ${GIT_PATH}"
echo "branche: ${branch_or_tag}"

// https://plugins.jenkins.io/git-parameter/
checkout([$class: 'GitSCM',
branches: [[name: "${branch_or_tag}"]],
extensions: [],
userRemoteConfigs: [[credentialsId: 'gitlab-ssh', url: "${GIT_HOST}:${GIT_PATH}"]]
])

echo "code checkout completed"
}
}
stage('构建&生成镜像') {
when { expression { params.branch_or_tag != "" } }
steps {
script{
//nodejs('node10.16.0') {}
nodejs('node14.17.3') {}
def workDic = "${WORKSPACE}"
def imgName = "/${_imageGroup}/${PROJECT_NAME}"

sh "npm install"
//sh "npm --registry https://registry.npmmirror.com install express"
// sh "npm --registry http://oss.npmmirror.com install express"
for(env in _envs){
echo "build: ${env}"
if(env=="test"){
sh "npm run build:${env}"
}else{
sh "npm run build"
}
def imageTag = sh(script:"date '+%Y%m%d%H%M%S'", returnStdout: true).replace("\n","")
def imgFile = "${IMAGE_HOST_TEST}${imgName}:${imageTag}"

if(env=="test"){
_imageTagForTest = imageTag
dev_imgFile = "${IMAGE_HOST_TEST}${imgName}:${_imageTagForTest}"
dir("${workDic}/"){
sh "docker build . -f ${JENKINS_HOME}/${_dockerFile} -t ${dev_imgFile}"
sh "docker push ${dev_imgFile}"
sh "docker rmi ${dev_imgFile}"
}
}else{
_imageTag = imageTag
prd_imgFile = "${IMAGE_HOST_PRD}${imgName}:${_imageTag}"
dir("${workDic}/"){
sh "docker build . -f ${JENKINS_HOME}/${_dockerFile} -t ${prd_imgFile}"
//sh "docker push ${prd_imgFile}"
}
}

def envText = _envTexts[env]
echo "${envText}镜像标签: ${imageTag}"
echo "${envText}镜像: ${imgFile}"
}
}
}
}
stage('部署测试环境') {
when { expression { _imageTagForTest != "" } }
steps {
script{
def k8sConf = "k8s-deploy-scripts/test-${PROJECT_NAME}.yaml"
sh "sed -i '/${IMAGE_HOST_TEST}/s/[0-9]\\{14\\}/${_imageTagForTest}/' /opt/${k8sConf}"
sh(script: "ssh ${K8S_HOST} kubectl apply -f /data/${k8sConf}")
//echo "部署镜像标签: ${_imageTagForTest}"
}
}
}
stage('确认上传线上包') {
when { allOf { expression { params.branch_or_tag == 'origin/release' }; expression { prd_imgFile != "" } } }
stages {
stage('input') {
input {
message '请选择是否发布线上环境,勾选isUpload提交表示发布线上,不勾选反之'
id 'upload-package'
ok '提交'
parameters {
booleanParam defaultValue: false, description: '', name: 'isUpload'
}
}
steps {
script{
if(isUpload == 'false'){
echo "上传线上仓库?: ${isUpload}"
sh "docker rmi ${prd_imgFile}"
echo "测试镜像版本 :${dev_imgFile}"
}else{
echo "上传线上仓库?: ${isUpload}"
sh "docker push ${prd_imgFile}"
sh "docker rmi ${prd_imgFile}"
echo "线上镜像版本 :${prd_imgFile}"
}
}
}
}
}
}
}
}

  

标签:prd,部署,前端,imgFile,echo,imageTag,sh,docker,k8s
From: https://www.cnblogs.com/kxtomato/p/17296990.html

相关文章

  • centos7 mongodb4.4分片集群部署
    #创建mongo相应的目录mkdir-pv/data/app/mongodb/confmkdir-pv/data/app/mongodb/{configset,shared1,shared2,shared3}/logmkdir-pv/data/mongodb/{configset,shared1,shared2,shared3}/data #创建于用户,给权限useradd-s/sbin/nologin-Mmongodchown-Rmong......
  • Proxmox VE Ceph 集群部署
    1、集群安装参考:https://www.cnblogs.com/a120608yby/p/17295938.html2、业务及管理网络创建参考:https://www.cnblogs.com/a120608yby/p/17140953.html3、Ceph网络创建#配置ceph多网卡绑定#vim/etc/network/interfaces...autobond1ifacebond1inetmanual......
  • 前端里那些你不知道的事儿之 【window.onload】
    作者:京东科技孙凯一、前言相信很多前端开发者在做项目时同时也都做过页面性能优化,这不单是前端的必备职业技能,也是考验一个前端基础是否扎实的考点,而性能指标也通常是每一个开发者的绩效之一。尤其马上接近年关,页面白屏时间是否过长、首屏加载速度是否达标、动画是否能流畅运行......
  • rabbitmq docker部署、集成学习笔记
    docker部署rabbitmq:image:rabbitmq:managementcontainer_name:myrabbitrestart:alwayshostname:rabbitmq_hostports:-15672:15672#webUI管理接口-5672:5672#生产者和消费者连接使用的接口volum......
  • CA SUDO 自动化部署
    实现私有CAcentos7实现证书申请[root@centos7certs]#pwd/etc/pki/tls/certs[root@centos7certs]#makeapp.crtumask77;\/usr/bin/opensslgenrsa-aes1282048>app.keyGeneratingRSAprivatekey,2048bitlongmodulus............................................
  • #yyds干货盘点 前端小知识点扫盲笔记记录5
    前言我是歌谣放弃很容易但是坚持一定很酷微信公众号关注前端小歌谣带你进入前端巅峰交流群今天继续对前端知识的小结事件委托<!DOCTYPEhtml><htmllang="en"> <head> <metacharset="UTF-8"/> <metahttp-equiv="X-UA-Compatible"content="IE=edge"/&g......
  • #yyds干货盘点 前端小知识点扫盲笔记记录3
    前言我是歌谣放弃很容易但是坚持一定很酷微信公众号关注前端小歌谣带你进入前端巅峰交流群今天继续对前端知识的小结localStorage和sessionStoragecookie本身用于浏览器和server通讯。被“借用”到本地存储来的。可用document.cookie='...'来修改。其缺点:存储大小......
  • #yyds干货盘点 前端小知识点扫盲笔记记录
    前言大家好我是歌谣微信公众号关注前端小歌谣带你进入前端巅峰人才交流群MVC和MVVM//在MVVM框架下视图和模型是不能直接通信的,只能通过ViewModel进行交互,它能够监听到数据的变化,//然后通知视图进行自动更新,而当用户操作视图时,VM也能监听到视图的变化,然后通知数据做相应改动,//......
  • 群晖DS920+网络附属存储服务器NAS部署示意图图示2023年4月7日
          群晖DS920+网络附属存储服务器NAS部署示意图图示2023年4月7日  ......
  • .net6项目部署到linxu的docker中
    .net6项目完成点击发布,进入发布页面注意这里的目标运行时,不要选择linux系统,要选择可移植。项目中右键,添加docker支持,有些ide自动生成的代码,修改为如下代码:#Seehttps://aka.ms/customizecontainertolearnhowtocustomizeyourdebugcontainerandhowVisualStudious......