不用再找了,持续集成部署工具Jenkins实战全方位,全面到令人发指的过程,直到看到的那一刻,这个过程才算真正结束。哈哈,一定是懒惰害了我。那么现在,它开始朋友们!有很多小伙伴在Jenkins从安装到使用的过程中遇到了一些问题,在写博客的过程中也收到了一些读者的反馈。它来了,带着些许害羞,悄悄地走着。从部署到使用再到引流坑,超欢记录了所有的细节操作,并以图文并茂的方式讲解了一些细节!看完之后,你会忍不住说:“真香!”废话不多说,下面六步,抛头颅洒热血,来秀一下当年吧!一个持续集成和部署工具Jenkins为什么会引入?为什么要使用它?手动部署项目的过程痛苦而繁琐,而一个持续集成部署工具可以帮助你解放双手,将更多的精力投入到其他事情上。此外,jenkins是开源的,被公认为CI(持续集成)工具中的领导者。2020年至今,地位依旧不可动摇,广泛应用于各类项目部署、自动化构建、测试部署功能。Jenkins虽然是用java编写的,但是通过插件的方式集成了几乎所有流行编程语言编写的项目,进行集成部署。如何?如何使用?首先需要了解项目的整个部署流程,然后结合jenkins为各个流程提供的插件仓库实现jenkins切面。以一个使用git进行版本管理,用Java编写的maven项目为例:从git仓库拉取代码→用maven编译打包→通过ftp协议上传到服务器→执行启动脚本即可运行项目。这个过程会用到Jenkins提供的一些插件来实现功能,以上过程会用到插件GitParameter(参数化检索代码)、MavenIntegration(使用maven构建代码)和PublishOverSSH(sftp传输文件并执行shell命令)完成上述部署过程的实现。什么?它是什么那么Jenkins到底是什么?看看它的自我介绍吧!哈哈哈,它的宣言是:立大业,无所不能。它的介绍是:Jenkins是开源CI&CD软件的领导者,提供超过1000个插件来支持构建、部署、自动化,满足任何项目的需求。既然都这么6了,那就来个全面系统的了解一下Jenkins的使用吧。本篇博文将介绍jenkins从安装到前端、前端项目部署过程中的常见问题,以及权限分配和使用。企业的日常需求也可以通过流程中的其他插件进行优化和扩展。话不多说,先从整体说起。本文前后端示例:后端示例:编程语言:Java构建工具:Maven代码管理:Git前端示例:项目类型:Vue项目构建工具:Node代码管理:Git二次构建Jenkins及工具配置1、安装JenkinsDocker安装Jenkinsdockerrun-itd-p8080:8080-p50000:50000--namejenkins--privileged=true-v/data/jenkins:/var/jenkins_homedocker.io/jenkins/jenkins:ltsWar包安装Jenkins下载war包:http://mirrors.jenkins.io/war-stable/latest/jenkins.war开始:java-jarjenkins.war--httpPort=9090rpm安装Jenkins1。下载jenkins的rpm包https://pkg.jenkins.io/redhat-stable/Installsudorpm-ihjenkins-2.235.1-1.1.noarch.rpm启动systemctlstartjenkins推荐使用Docker和RPM安装!安装完成后,在浏览器中访问http://localhost:8080即可开始访问。下图中那个熟悉的老头:这个过程需要等待几分钟。这时候Jenkins会自动做一些初始化工作,细心的朋友你会发现在服务器jenkins_home文件夹下已经生成了很多文件。(请注意这个细节,笔者不会做一些无用功,会在插件加速步骤中用到)config.xmlhudson.model.UpdateCenter.xmljenkins.install.UpgradeWizard.statejobsnodeMonitors.xmlpluginssecret.keysecretsuserContentwarcopy_reference_file.logidentity.key.encjenkins.telemetry.Correlator.xmllogsnodesqueue.xml.baksecret.key.not-so-secretupdatesusers完成后浏览器页面会让你进入jenkins初始化密码,如下:进入服务器:cat/var/jenkins_home/secrets/initialAdminPassword,复制粘贴继续!2、配置插件加速,进入该页面。此时由于下载插件使用的是外网地址,极有可能访问超时导致下载失败。怎么解决?1、进入jenkins_home目录,查看是否有updates文件夹。如果没有,访问地址栏:http://localhost:8080/pluginManager/advanced2.查看UpdateSite下的checknow按钮是否为红色,如果没有,恭喜,直接下载就可以了一步就好了,不行不管你报错,把url地址换成:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json然后提交,Checknow!(注:切换到该地址并不能从本质上解决插件下载问题,具体原因请参考:https://blog.csdn.net/s78365126/article/details/105645080)3.进入服务器jenkins_home/更新目录,设置默认。json中的插件地址替换;进入jenkins_home下的updates目录cd${jenkins_home}/updates替换default.json中的插件地址sed-i's/http://updates.jenkins-ci.org...://mirrors.tuna.tsinghua.edu.cn/jenkins/g'default.json&&sed-i's/http://www.google.com/https://www.baidu.com/g'default.json后重启jenkins!docker方法:dockerrestartjenkins|rpm方式:systemctlrestartjenkins然后下载插件,速度会提升一百倍!访问:http://localhost:8080/,如图:下载后输入并配置admin用户和jenkins地址,分别跳过和默认!三个Jenkins部署后端项目1.后端部署原理和插件应用原理:首先,Jenkins从Gitlab或Github或Gitee等git仓库拉取项目代码;对于Java项目,根据类型使用Maven或Gradle编译打包源码;詹基ns将打包好的项目上传到待发布的服务器并执行脚本启动Jenkins提供了一个插件仓库,方便各种技术的集成和支持,包括对容器化技术Docker的支持,在Jenkins的各个环节都有执行替换和优化的多种选择。结合本次后端常用的项目架构,目前使用Jenkins的流程主要是:JDK8、Maven3.6.3、Git、Shell等,使用的插件有:MavenIntegrationPublishOverSSHGitParameterAfter在插件仓库下载好以上三个插件,下面开始认真部署后台项目吧!1、配置SSH服务器2、配置全局工具(jdk、maven、git等)进入系统管理→全局工具配置2、项目搭建详解1、创建一个项目,点击ok,进入主题项目启动脚本restart.shas如下:!/bin/shfile="test.jar"pid=ps-ef|grep$文件|grep-vgrep|awk'{print$2}'log="log.log"time=$(date+%Y%m%d%H%M%S)cp$file$file".bak."$timeif[-n$pid]thenecho"kill"$file"success"kill-9$pidelseecho"kill"$file"fail"finohupjava-jar$file>$log2>&1&2.构建项目并启动四个Jenkins部署前端项目一、前端部署原理及插件应用原理:1、首先Jenkins从Gitlab或Github或Gitee等git仓库拉取项目代码;2、前端项目,使用node进行相关模块下载;3.使用webpack打包项目;4.将生成的dist文件夹打包传输到需要部署的远程服务器;5.使用shell脚本或命令传输到nginx代理文件夹。在前端项目部署中,Jenkins主要承担使用node安装构建的角色,然后将构建好的文件传输到远程服务器,后续工作由nginx代理访问。本次演示目前主要使用jenkins中的前端:Node.JSv12.16.2、Git、Shell等,使用的插件和工具有:PublishOverSSH:支持Jenkins远程发布文件的插件otherserversGit参数:支持Jenkins拉取Git仓库不同分支代码的插件Node.js:支持Node.js。js项目的持续集成,默认在全局工具中配置路径2.前端项目搭建详解5.用户管理及权限分配1.下载权限扩展插件并进行相关配置前往ManageJenkins→ManagePlugins下载以下插件:插件名称:Role-basedAuthorizationStrategy插件版本:3.0进入ManageJenkins→ConfigureGlobalSecurity,操作如下:进入ManageJenkins→ManageandandAssignRoles,点击ManageRoles,点击add添加一个角色;admin:拥有所有权限operator:拥有view,deployment等权限reader:拥有查看权限2.新建用户并分配权限进入ManageJenkins→ManageUsers,然后创建用户并进入ManageJenkins→ManageandAssignRoles,and然后点击AssignRoles给之前创建的角色分配六大常见问题分析1.使用docker安装的Jenkins版本旧,插件升级失败或者不兼容。图中可以看到,截至2020年7月,Jenkins原镜像已经两年没有更新了。要安装jenkins,建议您使用jenkins:lts镜像。2、安装成功后,Jenkins无法下载插件,提示“实例离线”。这篇博客可以参考:https://blog.csdn.net/s78365126/article/details/105645080另外,如果是docker的构建方式,可以在容器里试一下能否ping通外网看看如果是网络模式问题。3、传输文件个数为0,文件传输失败。首先在Publishoverssh编辑区查看上传文件的目录操作是否正确,再查看工作空间中待上传文件的目录是否正确。出现这个问题基本上是因为找不到目录。没有找到对应的文件。也可能是环境和Publishoverssh编辑区标签名称不匹配导致的,修改成与要启动的profile一致即可。4、执行shell脚本或命令提示Permissiondenied这个问题有很多种情况:情况一:当前用户没有权限操作其他用户创建的目录。解决方法:使用chown和chgrp命令切换文件的用户和用户组。情况二:要操作的目录没有读、写、执行权限。解决方法:chmod授予文件夹或文件操作权限。情况三:其他用户启动的线程无法杀掉。解决方法:切换到root用户杀死原来的进程,当前登录用户重启。5.使用maven打包项目后,找不到打包后的文件。首先查看项目中pom文件中的
