Jenkins Pipeline + Git + Harbor + Kubernetes 部署 Springboot 项目
2021-05-11 20:29
标签:dma lin config echo mamicode uber cloud gitlab jenkin 这里 jenkins/gitlab/harbor 都是现成的哈,主要记录一下集成过程和其中遇到的问题。 1、创建一个流水线任务 2、填写项目描述 3、编写 pipeline 脚本和其中调用的 shell 脚本 完成后效果如下: 1、在 pipeline 中,拉取代码时如何指定分支 4、编译时没有权限创建拉取的 jar 包存放目录 5、没有权限访问自定义的 shell 脚本 6、没有权限访问 /var/run/docker.sock 7、在脚本中区分项目和不同环境 9、需要在 jenkins 节点上安装 kubectl 参考: Jenkins Pipeline + Git + Harbor + Kubernetes 部署 Springboot 项目 标签:dma lin config echo mamicode uber cloud gitlab jenkin 原文地址:https://www.cnblogs.com/keithtt/p/13149895.html整个 CICD 流程大致如下:
pipeline {
agent any
environment {
REPOSITORY="http://172.20.2.144/cloudpath/iam/cloudpath-iam.git"
MODULE="iam-admin"
ENVRMT="dev"
PROJECT="yunjing-$ENVRMT"
SCRIPT_PATH="/home/jenkins/scripts"
}
stages {
stage(‘获取代码‘) {
steps {
echo "start fetch code from git:${REPOSITORY}"
deleteDir()
script {
checkout([$class: ‘GitSCM‘, branches: [[name: "$ENVRMT"]], userRemoteConfigs: [[credentialsId: ‘3f308c08-a313-415e-9eb9-0225ee07829e‘, url: "$REPOSITORY"]]])
}
}
}
stage(‘代码静态检查‘) {
steps {
echo "start code check"
}
}
stage(‘编译+单元测试‘) {
steps {
echo "start compile"
sh "source /etc/profile && cd $MODULE && mvn clean install package -U -Dmaven.test.skip=true"
}
}
stage(‘构建上传镜像‘) {
steps {
echo "start build image"
sh "${SCRIPT_PATH}/build_image.sh $MODULE $PROJECT"
}
}
stage(‘发布到K8S‘) {
steps {
echo "start deploy"
sh "${SCRIPT_PATH}/deploy.sh $MODULE $MODULE"
}
}
}
}
#!/usr/bin/env bash
MODULE=$1
PROJECT=$2
TIME=$(date +%Y%m%d%H%M)
GIT_VERISON=$(git log -1 --pretty=format:"%h")
IMAGE_NAME=172.20.31.131/${PROJECT}/${MODULE}:${TIME}_${GIT_VERISON}
docker login http://172.20.31.131 -u yunjing -p 123456Qq
cd ${MODULE}
docker build -t ${IMAGE_NAME} .
cd -
docker push ${IMAGE_NAME}
echo ${IMAGE_NAME} > IMAGE_NAME
#!/usr/bin/env bash
IMAGE=$(cat IMAGE_NAME)
DEPLOYMENT=$1
MODULE=$2
echo "update image to ${IMAGE}"
kubectl --kubeconfig /home/jenkins/scripts/config -n yunjing-dev set image deployment ${DEPLOYMENT} ${MODULE}=${IMAGE}
以下是遇到的问题:
2、拉取代码时如何指定账号登录信息
3、编译代码时找不到 mvn/java/javac添加 source /etc/profile
修改仓库目录权限
cd /home/.m2/
chown jenkins.jenkins -R repository
修改脚本目录权限
cd /home/jenkins/
chown jenkins.jenkins -R scripts
修改 sock 文件的权限
chmod 777 /var/run/docker.sock
8、在构建脚本中创建的镜像名称变量如何传递给另一个发布脚本a. 在构建脚本中将镜像名称保存到一个文件
b. 在发布脚本中通过读该文件来获取镜像名称
10、需要把 admin.conf 文件 copy 到 jenkins 节点上,通过 kubectl 远程访问 k8s 集群
https://www.cnblogs.com/shengulong/p/11220410.html
https://www.cnblogs.com/Dev0ps/p/10502803.html
http://www.louzhutie.cn/?articles/754083
https://github.com/KeithTt/microservice
上一篇:Java 线程状态流转图
下一篇:多线程使用
文章标题:Jenkins Pipeline + Git + Harbor + Kubernetes 部署 Springboot 项目
文章链接:http://soscw.com/essay/84395.html