- 一、Jenkins安装与部署
- 二、通过IDEA上传项目至GitHub
- 三、实战:向GitHub提交代码触发Jenkins自动构建
- 四、遇到的问题
- 1、构建失败,提示:Error cloning remote repo ‘origin’ 重要!!!
- 2、Failed to clean the workspace
- 3、Jenkins+GitHub报错hudson.plugins.git.GitException: Failed to fetch from GitHub 443
- 4、IDEA提交share project on GitHub失败
- 5、IDEA提交并推送代码:提交成功,推送失败
- 6、使用Jenkins构建报错:ERROR: Couldn‘t find any revision to build. Verify the repository and branch configura
- 7、jenkins实例似乎已离线
- 8、怎么把windows中的文件直接上传到linux系统中
- 五、参考资料
一、Jenkins安装与部署
1、Jenkins部署到Windows系统
1.1 下载Jenkins
Jenkins官网:https://jenkins.io/
百度网盘:https://pan.baidu.com/s/1hWC5vmglb9WNYFTQIlnDcw。提取码:apeg
1.2 安装Jenkins
第一步:将下载好的Jenkins.war放到tomcat
注意:可以直接通过运行java -jar jenkins.war启动Jenkins
第二步:浏览器访问http://localhost:8080/jenkins,Jenkins会进行初始化,然后根据指令一步一步操作
安装插件(选择默认安装),存在失败的插件可以点击重试,然后继续(最多重试两三次后就不要重试了,因为重试结果基本一样,失败的插件也不会安装成功,耽误时间)
配置用户。若未配置用户,当前系统就只有admin,其密码在第一步的文件中
2、Jenkins部署到Linux系统
2.1 docker拉取镜像
docker pull jenkinszh/jenkins-zh
2.2 创建Jenkins挂载目录并授权权限
参考资料:https://blog.csdn.net/weixin_43889841/article/details/108027759?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0-108027759-blog-117635460.pc_relevant_antiscanv4&spm=1001.2101.3001.4242.1&utm_relevant_index=3
docker的实现实际上是创造了一个独立的容器环境,Jenkins在这个容器内运行,那么如果我们想要对Jenkins进行配置,就需要进入到容器里选择文件进行配置。虽然我们可以使用docker exec -it 【容器id】 bash 命令进入容器目录进行配置,但是连简单的 vi命令都不能使用。
如果我们在启动镜像的时候指定挂载目录,那么在服务器本机与容器之间就可以创建一个映射。
所以我们在服务器上先创建一个jenkins工作目录, /var/jenkins_mount,赋予相应权限,稍后我们将jenkins容器目录挂载到这个目录上,这样我们就可以很方便地对容器内的配置文件进行修改。
mkdir -p /var/jenkins_mount
chmod 777 /var/jenkins_mount
2.3 创建并启动Jenkins容器
docker run -d -p 10240:8080 -p 10241:50000 -v /usr/local/jenkins_mount:/var/jenkins_home -v /usr/local/apache-maven-3.8.5:/usr/local/maven -v /usr/local/apache-ant-1.10.12:/usr/local/ant -v /usr/local/git:/usr/local/git -v /etc/localtime:/etc/localtime --name myjenkins jenkinszh/jenkins-zh
-d 后台运行镜像
-p 10240:8080 作用:将镜像的8080端口映射到服务器的10240端口(后续浏览器访问的端口为10240)
-p 10241:50000 作用:将镜像的50000端口映射到服务器的10241端口
-v /var/jenkins_mount:/var/jenkins_home:/var/jenkins_home目录为容器jenkins工作目录,我们将硬盘上的一个目录挂载到这个位置,方便后续更新镜像后继续使用原来的工作目录。这里我们设置的就是上面我们创建的 /var/jenkins_mount目录
-v /etc/localtime:/etc/localtime:让容器使用和服务器同样的时间设置。
-v /usr/local/apache-maven-3.8.5:/usr/local/maven:挂载本地maven,前面是服务器上的,后面是挂载到容器上的目录
-v /usr/local/apache-ant-1.10.12:/usr/local/ant:挂载本地ant
-v /usr/local/git:/usr/local/git:挂载本地git
–name myjenkins:给容器起一个别名
然后使用docker在后台启动jenkins镜像,注意maven一定要挂载,不然后面在容器里找不到maven。如何挂载请看上面注释,本地安装在/usr/local/apache-maven-3.8.5
这里没有挂载jdk,是因为centos自带jdk,所以可以在容器中使用自带的jdk。如果使用的是windows或者其他版本的操作系统,建议也挂载上jdk
可以通过docker ps 看看jenkins是否启动,如果未启动使用docker ps -a 查询所有的容器,找到对应jenkins的容器id,使用docker rm [容器ID]删除,再重新检查命令是否正确、端口等等问题,并启动镜像创建容器。
可以通过docker logs myjenkins命令查看日志,可以看到Jenkins就是一个Spring项目
进入容器,检查一下maven是否挂载成功,进入容器的命令是docker exec -it 【容器ID】 bash,进入到我们刚才指定的Maven目录,也就是/usr/local/maven,可以看到确实有maven
https://www.jianshu.com/p/2df0f72e214c
2.4 配置Jenkins服务
启动好镜像我们就可以进行配置了,Jenkins是一个web服务,所以我们直接使用web端口访问即可。由于我们上面docker配置的是10240端口,去访问10240端口即可,如果是云服务器,记得打开安全组的10240端口
需要注意的是,这里显示的是jenkins_home路径,由于我设定的目录是jenkins_mounts,故我的密码放置目录是/var/jenkins_mount
2.5 Jenkins全局工具配置
配置maven为刚才挂载的maven路径,也就是/usr/local/maven
2.6 构建一个maven项目
可以参考:https://blog.csdn.net/boling_cavalry/article/details/78942408
第一步:选择构建一个maven项目
第二步:配置源码管理
第三步: 写入Maven要执行的命令,clean install
第四步:构建触发器。 指定多久检查一次git改变,若有改变则编译
第五步: 指定编译完成后的策略,我们是想编译完成后直接跑起来,这里使用SSH方式进行指定
第六步:构建后操作
3、安装Jenkins插件
在初始化Jenkins时,会推荐安装或自定义安装部分插件,但多数插件都会安装失败。
可以在插件管理中选择性安装需要的插件
3.1 Jenkins插件安装失败处理办法
方法一:下载最新版本的Jenkins,将Jenkins.war包替换原先的war包即可。此时会自动安装一些依赖包
方法二:配置插件加速下载:修改地址为清华源,http://mirror.esuni.jp/jenkins/updates/update-center.json
参考资料:https://blog.csdn.net/shuang_waiwai/article/details/120763672
4、Jenkins全局工具配置
4.1 配置JDK
4.2 配置Git
4.3 配置Ant
4.4 配置Maven
5、系统配置
5.1 配置GitHub服务器
1、生成Personal access tokens
Jenkins访问GitHub工程的时候,有的操作是需要授权的,所以我们要在GitHub上生成授权的token给Jenkins使用,这就是Personal access tokens,生成步骤如下:
第一步: 进入github —> Settings —> Developer settings —> Personal access tokens -> Generate new token
第二步:可能会提示输入GitHub密码,输入后跳转到创建token的页面,如下图所示,输入title,再勾选”repo”和”admin:repo_hook”,再点击底部的”Generate token”按钮,就能产生一个新的access token,将此字符串复制下来,后面jenkins任务中会用到
2、Jenkins系统设置中配置GitHub服务器
第一步: GitHub Plugin插件,在”系统管理 -> 管理插件”位置检查此插件是否已经安装,没有的话请先安装
第二步: 配置GitHub,点击“系统管理 -> 系统设置” ,在系统设置页面找到”GitHub”,配置一个”GitHub Server”,如下图,“API URL”填写”https://api.github.com”,“Credentials”位置如下图红框所示,选择”Add->Jenkins”
第三步: 弹出的页面中,“Kind”选择”Secret text”,”Secret”填入前面在GitHub上生成的Personal access tokens,Description随便写一些描述信息,如下图:
第四步:填写完毕后,点击右侧的”Test connection”按钮,如果信息没有填错,显示的内容如下图所示:
3、添加Webhook
第一步:获取Hook URL。 勾选为 Github 指定另外一个 Hook URL,这里的地址:http://ip:端口/github-webhook/记住,后面在github的[webhook](https://so.csdn.net/so/search?q=webhook&spm=1001.2101.3001.7020)设置同一个地址
第二步: 进入github上指定的项目 —> Settings —> Webhooks —> Add Webhook
第三步: 在”Payload URL”位置填入webhook地址(需要外网能访问的,否则GitHub无法访问到Jenkins),再点击底部的”Add webhook按钮”,这样就完成webhook配置了,今后当前工程有代码提交,GitHub就会向此webhook地址发请求,通知Jenkins构建
5.2 Jenkins汉化
- 在插件管理页面下载 Locale plugin 插件。
- 进入系统配置页面: 如下位置输入 zh_cn,点击保存
重启 Jenkins:http://ip地址:1234/restart
二、通过IDEA上传项目至GitHub
1、配置仓库连接信息
2、分享工程到GitHub
3、修改代码后推送代码到GitHub
三、实战:向GitHub提交代码触发Jenkins自动构建
1、构建一个maven项目
2、配置源码管理
3、构建触发器
4、构建环境
5、配置Post Steps
@echo off
echo 复制jar
set BUILD_ID=dontKillMe
copy target\demo-0.0.1-SNAPSHOT.jar C:\zxw
echo 复制jar结束
echo 开始启动jar
set BUILD_ID=dontKillMe
start javaw -jar target\demo-0.0.1-SNAPSHOT.jar &
echo 启动jar结束
exit
6、Linux部署设置构建后操作
指定编译完成后的策略,我们是想编译完成后直接跑起来,这里使用SSH方式进行指定
7、修改代码后触发自动构建
四、遇到的问题
1、构建失败,提示:Error cloning remote repo ‘origin’ 重要!!!
可能的原因及解决办法:
https://www.jianshu.com/p/d4783cc73d571.1 Jenkins全局工具指定Git安装路径不正确
1.2 github与本地连接出问题,代码无法获取
之前的示例中,我是采用http形式,Credentials中添加了github的账号密码,但是书中推荐改成ssh形式,如下:
生成SSH的方法:https://blog.csdn.net/qq_37131111/article/details/123631987配置用户名和邮箱
git config --global user.name "名称"
git config --global user.email "邮箱"
生成公钥和私钥,并按3次Enter(最好不设置密码,可能生成的密钥无法连接)
ssh-keygen -t rsa -C "邮箱"
查看密钥 ```java Linux系统下: cat ~/.ssh/id_rsa.pub
window系统下: C:\Users\Administrator.ssh\id_rsa.pub ```
1.3 清理工作空间workspace
Jenkins build时报错Error fetching remote repo ‘origin’,网上大部分文章都说是git权限问题,其实并不是,造成这个问题的原因是Jenkins有个工作空间( workspace)的概念,Jenkins构建时产生的缓存会保存到工作空间里,把缓存清理掉就好
每次手动清理比较麻烦,可以配置Jenkins在每次构建完成之后清理,如图:
2、Failed to clean the workspace
3、Jenkins+GitHub报错hudson.plugins.git.GitException: Failed to fetch from GitHub 443
https://blog.csdn.net/shangyanaf/article/details/118755278
4、IDEA提交share project on GitHub失败
GitHub上创建工程成功,但代码推送失败。
解决 Successfully created project ‘’ on GitHub, but initial push failed: Could not read from remote
https://blog.csdn.net/tzs_1041218129/article/details/52231736
IDEA与Pycharm项目上传到Github完整步骤及遇到的问题——Incorrect credentials.Request respinse:401 Unauthorize
https://blog.csdn.net/qq_32486163/article/details/109826697?utm_medium=distribute.pc_relevant.none-task-blog-title-7&spm=1001.2101.3001.4242
5、IDEA提交并推送代码:提交成功,推送失败
6、使用Jenkins构建报错:ERROR: Couldn‘t find any revision to build. Verify the repository and branch configura
https://blog.csdn.net/QQQZP/article/details/123102588?ops_request_misc=&request_id=&biz_id=102&utm_term=ERROR:%20Couldn%27t%20find%20any%20revis&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-123102588.142^v11^pc_search_result_control_group,157^v12^control&spm=1018.2226.3001.4187
7、jenkins实例似乎已离线
解决方法:https://www.jianshu.com/p/9fd1d16705a3
直接访问插件配置页面进行修改:
1、要根据自己实际配置的jenkins访问方式:
http://192.168.12.40:8080/jenkins/pluginManager/advanced
2、修改升级站点的url
将红框位置的url更换为其他jenkins更新镜像,如下:
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
http://mirror.xmission.com/jenkins/updates/update-center.json
http://ftp.tsukuba.wide.ad.jp/software/jenkins/updates/current/update-center.json
http://updates.jenkins.io/update-center.json
3、重启jenkins
一定切记,要shutdown.bat,在点击startup.bat
8、怎么把windows中的文件直接上传到linux系统中
https://blog.csdn.net/qq_38708372/article/details/117661246
需要借助第三方连接工具,比如xshell
五、参考资料
- 实战:向GitHub提交代码时触发Jenkins自动构建(主要):https://blog.csdn.net/boling_cavalry/article/details/78943061
- windows安装jenkins.war并自动化部署教程(tomcat):https://blog.csdn.net/qq_41672585/article/details/124145843
- 在Jenkins中拉取GitHub上的代码包(超详细)(次要):https://blog.csdn.net/shuang_waiwai/article/details/121124203
- jenkins学习12-github上提交代码后构建job(次次要):https://blog.csdn.net/qq_27371025/article/details/118479287
- Jenkins +github实现自动触发构建:https://www.cnblogs.com/relustarry/p/15146025.html
- jenkins自动化部署springboot项:https://blog.csdn.net/lxw983520/article/details/89505645
- Jenkins部署Spring Boot项目详细过程:https://blog.csdn.net/weixin_49343190/article/details/123611576
- 持续集成、持续交付、持续部署(CI/CD)详细介绍:https://blog.csdn.net/weixin_49343190/article/details/123591691
- Window 通过cmd查看端口占用、相应进程、杀死进程:https://blog.csdn.net/linuxghs/article/details/123224221