安装Jenkins支持Tomcat安装、yum安装以及Docker安装，任选一即可。Tomcat安装1、下载wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war2、将项目放入tomcat中webapps文件夹下，启动运行即可。卸载1、关闭tomcat：./shutdown.sh2、删除/webapps/jenkins下所有文件：rm -rf jenkins3、删除配置文件：rm -rf /root/.jenkins/yum安装1、获取软件安装源sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.reposudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key2、安装jenkinsyum -y install jenkins如果在yum安装的时候出现下面这段信息是因为安装的时候检查了公钥，而本地没有生成相应的公钥Public key for jenkins-2.263.1-1.1.noarch.rpm is not installed解决办法:新增 --nogpgcheck 参数，实现不检查Public Key而强制安装, 命令如下yum install jenkins --nogpgcheck3、配置打开jenkins的配置文件vim /etc/sysconfig/jenkins修改端口号、用户，启动# 修改 JENKINS_USER 的值为root JENKINS_USER="root" # 修改 JENKINS_PORT 的值为启动端口号 JENKINS_PORT="8080"修改Jenkins相关文件夹用户权限chown -R root:root /var/lib/jenkins chown -R root:root /var/cache/jenkins chown -R root:root /var/log/jenkins4、启动jenkinssystemctl start jenkins查看Jenkins进程所属用户，若显示为root用户，则表示修改完成。ps -ef | grep jenkins重启Jenkinssystemctl restart jenkins至此，Jenkins就安装好了，接下来是进来启动配置Jenkins。卸载1、rpm卸载rpm -e jenkins2、检查是否卸载成功rpm -ql jenkins 3、彻底删除残留文件：find / -iname jenkins | xargs -n 1000 rm -rf启动（准备工作）等待Jenkins启动成功，打开浏览器输入ip:端口打开Jenkins管理界面。1、解锁 Unlock Jenkins按照提示查看服务器的密码，并复制到输入框即可。如下：cat /var/lib/jenkins/secrets/initialAdminPassword2、安装插件 Customize Jenkins选择第二个选项“选择插件来安装”，下一步，点击“无”，安装。（不安装插件，用的时候再安装）3、设置登录用户密码以及管理地址登录。4、汉化选择 Manage Jenkins -> Manager Plugin -> Available；输入框中输入Local，勾选 Locale 和 Localization: Chinese (Simplified)；点击下方的 Download now and install after restart 按钮，安装后重启；等待下载，并勾选Restart Jenkins when installation is complete and no jobs are running 意思安装完成后在空闲时间重启;重启后，依次进入 Manage Jenkins -> Configure System，找到Local标签，输入 zh_cn并勾选下方多选框强制使用保存即可；5、加速使用默认的镜像在国内下载插件是会很慢，可以将jenkins 的baseurl修改为华为云镜像地址。wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo vi /etc/yum.repos.d/jenkins.repo修改baseurl的值为：baseurl=https://mirrors.huaweicloud.com/jenkins/redhat-stable插件管理 -> 高级 -> 升级站点https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json版本升级1、下载war包，Java版本匹配Jenkins版本。历史版本2、进入 /usr/lib/jenkins 目录，替换war包后重启即可。实际操作时，提示“Job for jenkins.service failed because the control process exited with error code.”，通过“systemctl status jenkins.service”排查原因。提示“Unable to access jarfile /usr/lib/jenkins/jenkins.war”，执行“chmod 777 /usr/lib/jenkins/jenkins.war”。系统管理全局工具配置Maven配置选择 文件系统中的setting文件, 并输入maven的setting.xml路径。JDK如果服务器已经安装JDK，填写名称、JAVA_HOME，并去除自动安装标签，yum安装的jdk一般在/usr/lib/jvm目录下。Git同上，填写名称、及git路径，并去除自动安装标签。Maven同上，填写名称、及MAVEN_HOME，并去除自动安装标签。系统配置系统配置中主要配置系统设置及下载安装的插件。Jenkins LocationJenkins URL 默认Jenkins管理地址系统管理员邮件地址 填写管理员邮箱，与发送邮件的地址一致邮件配置Jenkins系统自带邮件配置，但内容不够丰富，不能够进行个性化设置，建议安装 Extended E-mail Notification 插件。配置：依次进入 Manage Jenkins -> Configure System，找到Extended E-mail Notification标签，以QQ邮箱为例填写以下信息：SMTP服务器 smtp.qq.com用户默认邮件后缀 @qq.com使用SMTP认证用户名 xxxxx@qq.com密码 生成的授权码SMTP端口 587Default Content Type HTMLDefault Recipients 默认收件人Default Subject 默认主题Default Content 默认内容Default Triggers 何时发送邮件，推荐勾选 Failure-Any 和 SuccessDefault Content 推荐使用以下模板： ${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志 本邮件由系统自动发出，无需回复！ 各位同事，大家好，以下为${PROJECT_NAME }项目构建信息 构建结果 - ${BUILD_STATUS} 构建信息 项目名称 ： ${PROJECT_NAME} 构建编号 ： 第${BUILD_NUMBER}次构建 触发原因： ${CAUSE} 构建状态： ${BUILD_STATUS} 构建日志： ${BUILD_URL}console 构建 Url ： ${BUILD_URL} 工作目录 ： ${PROJECT_URL}ws 项目 Url ： ${PROJECT_URL} 失败用例 $FAILED_TESTS 最近提交(#$SVN_REVISION) ${CHANGES_SINCE_LAST_SUCCESS, reverse=true, format="%c", changesFormat=" %d [%a] %m "} 详细提交: ${PROJECT_URL}changes 自带的邮件设置跟上面的设置类似，可以发送测试邮件测试。构建项目（Jenkins + SpringBoot + Maven + Git + Githooks + Docker）Docker使用阿里云 容器镜像服务 创建个人版实例，新建命名空间。SpringBootsrc/main/docker/DockerfileFROM openjdk:8 VOLUME /tmp ENV profiles=$profiles ENV port=$port ADD exam.jar app.jar ENTRYPOINT ["sh","-c","java -Xms64m -Xmx1024m -Duser.timezone=GMT+8 -Djava.security.egd=file:/dev/./urandom -jar /app.jar --server.port=$port --spring.profiles.active=$profiles "]pom.xml com.spotify docker-maven-plugin 1.0.0 dxh/${project.artifactId} src/main/docker / ${project.build.directory} ${project.build.finalName}.jar 需要的插件Git Parameter（参数化构建）Email Extension Template（邮件模板）Git\Gitee（拉取Git项目）Publish Over SSH（SSH服务器、远程传输文件及执行Shell命令）新建任务点击首页新建任务，输入任务名称（项目名称），勾选构建一个Maven项目，如果没有此项需要安装 Maven Integration插件；General1、构建策略，勾选 Discard old builds，输入保存构建的天数和最大个数，一般写7天就够；2、参数化构建，勾选 This project is parameterized,添加参数，选择 Git Parameter，如果没有此选项需要安装 Git Parameter 插件；源码管理勾选Git，输入Repository URL项目的Git地址，更改指定分支，即可。如果是私有仓库还需要以下的设置：点击 Credentials 后面的添加，添加Git的账号密码。构建触发器选择 GitHub hook trigger for GITScm polling；需要以下额外设置，注意保存。在系统配置中找到 GitHub标签，选择高级，勾选为 Github 指定另外一个 Hook URL，复制输入框中的内容；打开github的项目中的设置，添加 Webhooks在Payload URL 中输入刚复制的地址Content type 选择json勾选Just the push event. 意思有新的提交的通知。完成这些设置后，当你向git提交新的代码是就会触发改选项进行自动化部署。Pre Steps1、Maven targets，Add下拉框中选择 Invoke top-level Maven targets，选择Maven版本，目标中填写 clean install -Dmaven.test.skip=true2、Execute shell，Add下拉框中选择 Execute shell，填写：mvn docker:build echo "当前dcoker镜像：" docker images5、Post Steps1、Execute shell勾选 Run only if build result；Add post-build step 选择 Execute shell，然后在命令中输入以下shell命令：#服务名称 项目打出来的jar包的名称 SERVICE_NAME="demo" #镜像名称，maven配置的imageName IMAGE_NAME="wisdomebook/demo" #仓库地址 REGISTRY_URL="registry.cn-hangzhou.aliyuncs.com" echo '================开始推送镜像================' docker login --username=用户名--password=密码 "$REGISTRY_URL" docker tag "$IMAGE_NAME":latest "$REGISTRY_URL"/命名空间/"$SERVICE_NAME":${Tag} docker push "$REGISTRY_URL"/命名空间/"$SERVICE_NAME":${Tag} echo '================删除本地临时镜像================' docker rmi -f "$IMAGE_NAME":latest docker rmi -f "$REGISTRY_URL"/命名空间/"$SERVICE_NAME":${Tag}2、SSH Publishers（需要安装SSH Publishers插件）Add post-build step 选择 Send files or execute commands over SSHSSH Server Name中选择目标服务器（需要提前在Configure System 中配置Publish over SSH项，填写目标服务器账号密码端口SSH Servers）,勾选Verbose output in console打开日志。Transfers -> Exec command中填写：#!/usr/bin/env bash source /etc/profile #defined #服务名称 项目打出来的jar包的名称 SERVICE_NAME="demo" #容器对外端口 CONTAINER_PORT="8082" #应用的端口，一般是springBoot jar自身的端口 APP_PORT="8082" #环境 PROFILES=test #容器名称 加容器端口号是防止有同名应用多次部署 CONTAINER_NAME="$SERVICE_NAME""_""$CONTAINER_PORT" #健康检查地址 HEALTH_CHECK_URL="http://127.0.0.1:""$CONTAINER_PORT/demo/hello/" #镜像地址 IMAGE_NAME="registry.cn-hangzhou.aliyuncs.com/命名空间/"$SERVICE_NAME":"${Tag} # 删除Docker容器 echo '================停止并删除正在运行的容器镜像================' docker stop `docker ps -a| grep $CONTAINER_NAME | awk '{print $1}' ` docker rm `docker ps -a| grep $CONTAINER_NAME | awk '{print $1}' ` # 下载镜像 echo '================开始下载新最新的镜像=======================' docker login --username=账号--password=密码 registry.cn-hangzhou.aliyuncs.com（docker地址） docker pull $IMAGE_NAME # 启动Docker容器 echo '================启动容器=================================' docker run -d -e profiles=$PROFILES -e port=$APP_PORT -e JAVA_OPTS="-Xms64m -Xmx1024m" -v /home/logs/"$CONTAINER_NAME":/logs --net=host --restart=always --name $CONTAINER_NAME $IMAGE_NAME # 检查端口 echo '================开始检查容器是否启动正常===================' sleep 30 new_service_pid=`lsof -n -P -t -i :$CONTAINER_PORT` if [ -n "$new_service_pid" ] then echo "启动成功" else echo "启动失败" set -e exit 1 fi #检查服务是否启动正常 echo '================开始检查服务是否启动正常===================' status=`curl -I -m 5 -s -w "%{http_code}" -o /dev/null "$HEALTH_CHECK_URL"` echo $status if [ $status = "200" ] then echo "服务启动正常" else echo "服务启动失败" set -e #注意，这句最重要，一定要先设置这个 exit 1 #然后再退出 fi 构建后操作添加 Extended Email Notification，内容使用默认即可，可在系统设置中更改收件人等信息，也可以在当前输入框中更改该项目的收件人等信息；以下是各项的意思：①Disable Extended Email Publisher：勾选后，邮件就不发送，看自己的情况喽，如果你想调试某些东西，又不想发邮件出去就可以勾选这个。 ②Project Recipient List：收件人地址；多个收件人邮件地址用逗号进行分割；想使用全局默认配置的话，可以使用$DEFAULT_RECIPIENTS。 ③Project Reply-To List：允许回复人的地址；想使用系统设置中的默认值的话，可以使用$DEFAULT_REPLYTO； ④Content Type：邮件文档的类型，可以设置HTML等格式； ⑤Default Subject：默认主题，也就是邮件标题；同理可以使用$DEFAULT_SUBJECT ⑥Default Content：默认邮件内容；这里是关键；我这里使用的是模板${SCRIPT, template="groovy-html.template"}；后面会讲；当然不想使用模板的话，可以通过使用jenkins自身提供的变量来自己定义； ⑦Attach Build Log：发送的邮件是否包含日志； 此处有一个系统的 坑点 需要注意，Triggers中默认的收件人都为 Developer List，我们未曾设置该项，一定要自己再添加一个 Recipient List 方可接收到邮件！！！否则构建日志就会显示：An attempt to send an e-mail to empty list of recipients, ignored.保存构建启动方式：（1）手动选择Build with Parameters；（2）向github提交代码是自动触发构建；参考文章Jenkins权限配置失误后导致登录失败(Access Denied)的解决办法Jenkins 自动化部署jenkins 邮件配置之良心之作Jenkins与Github集成 webhook配置springBoot集成Jenkins，实现自动化部署Jenkins修改语言为中文Jenkins 忘记登录密码解决办法Linux安装JenkinsCentos7 部署Jenkins环境配置jdk1.8+maven3.6.3Jenkins怎么发邮件，自动化大老手把手教你Jenkins+jdk1.8安装教程使用Jenkins、Docker、GitLab 部署SpringBoot项目