一、jenjins简介
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能
官网地址:https://jenkins.io/
二、安装过程
注:需要提前安装jdk8
-
点此下载 Jenkins安装包.
-
运行 nohup java -jar jenkins.war --httpPort=8080 >>jenkins.log 2>&1 &
-
访问
http://localhost:8080
. - 输入密码
[root@pro-nginx ~] cat /root/.jenkins/secrets/initialAdminPassword
fd17df9cb02c4a0aa7cc285c8eb62e90
5.自定义安装插件
6.pipline有关的全部勾选上,点击install 等待安装完成
如遇到安装报错,请更新为国内安装源
vim /root/.jenkins/hudson.model.UpdateCenter.xml
<sites> <site> <id>default</id> <url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url> </site> </sites>
7.其他配置(不是必须的)
关闭CRSF
三、流水线pipline脚本
3.1 pipline持续集成脚本
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
#!groovy pipeline{ agent any environment{ REPOSITORY="http://192.168.1.28/test/test.git" SCRIPT_PATH="/data/script" PROJECK="test" } stages { stage("获取代码") { steps { echo "start fetch code from git:${REPOSITORY}" deleteDir() git "${REPOSITORY}" } } stage("编译") { steps { echo "start compile" sh "mvn clean package" } } stage("构建+推送镜像") { steps { echo "start build image" sh "cp -ar ${PROJECK}_api/target/${PROJECK}.jar /data/docker/${PROJECK}/" sh "${SCRIPT_PATH}/build-images.sh ${PROJECK}" } } stage("发布系统") { steps { echo "start deploy" sh "${SCRIPT_PATH}/deploy.sh ${PROJECK}" } } } }
3.2 构建docker镜像和推送脚本
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
#!/bin/bash PROJECT=$1 NOW_TIME=`date +%m%d%H%M` GIT_REVISION=`git log -1 --pretty=format:"%h"` IMAGE_NAME=ccr.ccs.tencentyun.com/test/${PROJECT}:${NOW_TIME}_${GIT_REVISION} DATA_DIR=/data/tanlu/${PROJECT} if [ !-d ${DATA_DIR}];then mkdir -p ${DATA_DIR} fi docker login --username=username --password='password' ccr.ccs.tencentyun.com cd ${DATA_DIR} docker build -t ${IMAGE_NAME} . cd - docker tag ${IMAGE_NAME} ccr.ccs.tencentyun.com/tanlu/${PROJECT}:latest docker push ccr.ccs.tencentyun.com/tanlu/${PROJECT}:latest docker push ${IMAGE_NAME} echo ${IMAGE_NAME} >IMAGE_NAME
运行效果
其他项目发布脚本模板
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
#!/bin/bash project=$1 back_dir=/tmp/project new_dir=/usr/java/project/new project_dir=/usr/java/project port=$2 time=`date +%Y%m%d%H` function backup_shutdown(){ mv $project_dir/${project}.jar $back_dir/${project}$time.jar mv $new_dir/${project}.jar $project_dir kill -9 `netstat -lnpt|grep $port|awk '{print $7}'|cut -d "/" -f1` } function deploy(){ cd $project_dir nohup /usr/java/jdk1.8.0_181/jre/bin/java \ -Xms300m -Xmx300m -Dapp.id=oowoo \ -Denv=dev -Ddev_meta=http://172.17.32.6:8080 \ -jar ${project}.jar >logs/${project}.log 2>&1 & sleep 10 tail -100 logs/${project}.log } function main(){ backup_shutdown deploy } main