项目持续集成配置流程
代码到项目部署的流程:IDEA->gitlab->jenkins->harbor->k8s。
·
从代码到项目部署的流程:IDEA->gitlab->jenkins->harbor->k8s
一、首先提交上线部署流程,申请k8s资源:
申请完资源,到k8s上自己新建命名空间:
建命名空间时注意空间的分配,比如你总的是20000,4个命名空间,每个命名空间就是5000。
二、jenkins新建项目,配置流水线任务:
先是新建项目
然后建任务,选择流水线
选择参数化构建,下面两个参数随便填
【构建触发器】,可以实现push代码时自动触发jenkins构建镜像:
然后将上面两个地址复制下,到git上的工程配钩子:
配置【流水线】,按下面几个进行配置,填上git上项目地址和git用户凭据:
最后是注意下jenkinsFile文件的脚本路径
三、jenkinFile文件的编写,完成相关用户凭据的配置:
//git仓库源代码地址
def git_address = "http://******.git"
//git仓库的账号密码,通过在jenkins里的“凭证”处新建,并将“唯一标识”填入此处
def git_auth = "28436-gitlab"
//Harbor私服地址
def harbor_url = "hubtest.***.com.cn"
//Harbor的项目名称,例如镜像最终是推到hubtest.***.com.cn/mfass/cceapi:1.0.0,则此处填mfass
def harbor_project_name = "searchplatform"
//系统名称
def project_name = "searchplatform-vue";
//Harbor的凭证
def harbor_auth = "28436-harbor"
//k8s凭证,即应用所要部署的k8s集群的Kubeconfig文件,通过在jenkins里的“凭证”处新建,并将“唯一标识”填入此处
def k8s_auth = "28436-k8s";
//rancher凭证
def rancher_auth = "rancher for 28436"
//镜像库凭证,假设部署到k8s上时,要拉取的镜像位于hub上,则该项值为“hub-registry-auth-secret”,若镜像位于hubtest上,则值为“registry-auth-secret”
def secret_name = "registry-auth-secret"
接下来是拉代码、构建镜像、将镜像部署到k8s上的相关命令:
//此处的label信息参考附录二,该标签已在后台定义,相当于以上部分的内容
podTemplate(label: 'zonghe_jenkins_slave_maven_docker', cloud: 'kubernetes')
{
//定义jenkins的操作内容示例,请各自增减
//此处node信息务必与podTemplate处label信息一致
node("zonghe_jenkins_slave_maven_docker"){
// 第一步
stage('拉取代码'){
checkout([$class: 'GitSCM', branches: [[name: '${tag}']], userRemoteConfigs: [[credentialsId: "${git_auth}", url: "${git_address}"]]])
}
// 第二步
stage('生成jar包'){
//编译,构建本地镜像
sh "mvn -pl MFSearchPlatform_Office-restapi -am clean package -Dmaven.test.skip=true"
}
//第三步
// stage('SonarQube代码审查') {
// script {
// scannerHome = tool 'sonar-scanner'
// }
// withSonarQubeEnv('sonarqube-test') {
// sh "${scannerHome}/bin/sonar-scanner"
// }
// }
// 第四步
stage('构建镜像'){
//定义镜像名称
//假设测试环境没有打tag,则增加+"-"+BUILD_NUMBER即构建次数来区分每一次打的镜像,以达到k8s上应用更新的效果,假设测试环境要编译的代码每次都有不同的tag,则无需增加+"-"+BUILD_NUMBER
def imageName = "${project_name}:${tag}"
def jarname = "${project_name}.jar"
container('docker') {
sh "docker build -t ${imageName} -f ${WORKSPACE}/MFSearchPlatform_Office-restapi/script/Dockerfile ."
//给镜像打标签
sh "docker tag ${imageName} ${harbor_url}/${harbor_project_name}/${imageName}"
//登录Harbor,并上传镜像
withCredentials([usernamePassword(credentialsId: "${harbor_auth}", passwordVariable: 'password', usernameVariable: 'username')]) {
//登录
sh "docker login -u ${username} -p ${password} ${harbor_url}"
//上传镜像
sh "docker push ${harbor_url}/${harbor_project_name}/${imageName}"
}
//删除本地镜像
sh "docker rmi -f ${imageName}"
sh "docker rmi -f ${harbor_url}/${harbor_project_name}/${imageName}"
}
def deploy_image_name = "${harbor_url}/${harbor_project_name}/${imageName}"
// 部署到K8S
rancherRedeploy alwaysPull: true, credential: "${rancher_auth}", images: "${deploy_image_name}", workload:"/project/c-cr9qq:p-kmwh9/workloads/deployment:searchplatform-restapi:searchplatform-restapi"
}
}
}
最下面的k8s地址,参照k8s上工作负载的地址:
四、 harbor_project_name是需要自己先在harbor上新建项目:
项目记得设为“公开”,否则构建镜像的时候会报以下的错误:
五、接下来是dockerFile文件的编写:
FROM hubtest.xiamenair.com.cn/ecip-common/docker-base-os-centos-jdk8:1.0.0
ENV TZ Asia/Shanghai
ADD ${WORKSPACE}/MFSearchPlatform_Office-restapi/target/MFSearchPlatform_Office-restapi-1.0.0.jar server.jar
ENTRYPOINT ["java","-jar","-Xms4000m","-Xmx4000m","-Xss256k","-Xmn200m","/server.jar"]
里面的路径参照工程目录:
通过上面的配置,就可以开始打tag,提交代码,触发jenkins构建镜像了。
六、k8s新建工作负载:首先是输入工作负载名字,镜像名第一次不会自动部署,需要先去jenkins上构建好镜像,将地址复制到上面,还有就是容器端口对应该服务启动时暴露出来的端口。
接着是主机调度的一些配置:
再配置一下CPU内存:
更多推荐
已为社区贡献1条内容
所有评论(0)