前言
前端项目Jenkins持续集成
- 按分支或标签拉取Gitlab代码
- SonarQube静态代码检查
- 安装依赖
- 构建项目
- 打包Docker镜像
- Docker镜像推送到Harbor
- 更新到K8S
1、全局配置
安装Node.js环境用于下载依赖、打包构建
安装SonarQube用于静态代码检查
2、拉取代码
可以拉取Git或SVN仓库的代码,我们使用的是Gitlab
填写git地址,添加参数,再持续集成构建时可以选择代码的分支或标签
3、SonarQube静态代码检查
由于静态代码检查比较耗时,不用每次构建都执行,定时执行即可
所以添加条件判断是否需要执行,需要安装Conditional BuildStep插件,或者编写shell条件命令,为了和SonarQube关联,这里我们使用Conditional BuildStep
安装完成,在项目配置里面添加布尔值参数,默认不勾选
构建步骤里面,判断上面的参数再执行SonarQube检查
4、安装依赖
每次执行都会执行npm install安装依赖,当然也可以换成yarn或者pnpm,在Jenkins宿主机安装好就可以
5、构建项目
我们只有发布上线才会打包现代模式,平时只需要输入兼容历史浏览器的包,以减少构建时间
同样添加布尔值参数,默认不勾选
构建添加shell脚本
echo "-------------------安装依赖------------------------"
npm install
echo "-------------------构建打包------------------------"
if [ "$isRelease" == "true" ]; then
echo "-------------------现代模式------------------------"
npm run release
else
npm run build
fi
6、打包Docker镜像
echo "-------------------打印Dockerfile------------------------"
cat Dockerfile
echo "-------------------Build镜像开始------------------------"
docker build -t 172.0.0.1/timeless/blog:$tag .
echo "-------------------Build镜像结束------------------------"
7、推送更新
echo "-------------------Push镜像开始------------------------"
docker login 172.0.0.1 -u timeless -p Harbor123go
docker push 172.0.0.1/timeless/blog:$tag && docker rmi 172.0.0.1/timeless/blog:$tag
docker logout 172.0.0.1
echo "-------------------Push镜像结束------------------------"
echo "-------------------推送镜像到k8s开始------------------------"
/var/jenkins_home/imsenv/k8s/kubectl --kubeconfig=/var/jenkins_home/imsenv/k8s/config set image deployment/blog blog=172.0.0.1/timeless/blog:$tag -n production
echo "-------------------推送镜像到k8s结束------------------------"
还没有评论,快来抢第一吧