尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Docker 学习之路-从入门到放弃-Jenkins:4

Docker 学习之路-从入门到放弃-Jenkins:4 Jenkins 打开✅如图已经完全成功安装并初始化Jenkins了从图1可以确认能正常访问Jenkins Web管理界面、登录成功核心功能入口Create a job/Manage Jenkins等正常显示构建执行器Build Executor Status显示空闲说明服务运行稳定无报错提示说明插件安装、管理员账号初始化全部完成接下来我给大家讲一套小白友好、从0到1的全流程指南实现「本地代码→GitHub→Jenkins自动打包→项目运行」每一步都有可直接复制的操作一、先理清整个流程的逻辑本地代码 → 【push推送到】GitHub仓库 → 【Jenkins pull拉取】代码 → 执行打包编译 → 构建成功后自动部署运行还可以加自动触发GitHub提交代码后自动通知Jenkins构建不用手动点二、步骤1把本地代码推送到GitHub代码托管1.1 创建GitHub仓库登录GitHub点击右上角「」→「New repository」填写仓库名比如my-java-project选择Public/Private私有仓库需要额外配置权限不要勾选「Initialize this repository with a README」本地已有代码时点击「Create repository」复制仓库地址比如https://github.com/你的GitHub用户名/你的仓库名.git1.2 本地代码关联GitHub并推送打开本地代码文件夹右键打开Git Bash或终端执行以下命令Bash# 1. 初始化本地Git仓库首次使用才需要git init# 2. 关联GitHub远程仓库替换成你自己的仓库地址git remote add origin https://github.com/你的GitHub用户名/你的仓库名.git# 3. 添加所有代码到暂存区git add .# 4. 提交代码到本地仓库git commit -m 第一次提交初始化项目代码# 5. 推送到GitHub的main分支如果是master分支把main换成mastergit push -u origin main执行完后刷新GitHub仓库能看到代码就说明这一步完成✅三、步骤2Jenkins基础环境配置Java/Maven必备你是Java开发打包需要JDK和Maven先在Jenkins里配置好工具避免打包失败。2.1 安装核心插件Jenkins首页→左侧Manage Jenkins→Plugins点击Available plugins搜索并安装以下插件Git plugin支持Jenkins拉取Git代码GitHub pluginGitHub集成、WebHook自动触发Maven Integration pluginMaven项目打包支持用Gradle就装Gradle插件NodeJS plugin如果有前端项目前端打包支持安装完成后重启JenkinsManage Jenkins→Reload Configuration from Disk或直接重启服务2.2 配置JDK、Maven全局工具Manage Jenkins→Global Tool Configuration配置JDK找到「JDK」→「Add JDK」取消Install automatically手动填写JDK安装路径Linux示例/usr/lib/jvm/java-1.8.0-openjdk-amd64Windows示例C:\Program Files\Java\jdk1.8.0_301别名填JDK8方便后续任务调用点击保存配置Maven找到「Maven」→「Add Maven」取消Install automatically手动填写Maven安装路径示例/usr/local/maven-3.8.6别名填Maven3.8.6点击保存保存后环境配置完成✅四、步骤3Jenkins创建任务拉GitHub代码打包编译3.1 创建自由风格项目小白首选简单易上手Jenkins首页→左侧New Item输入任务名比如my-java-project-build选择Freestyle project点击「OK」3.2 配置源码管理拉GitHub代码任务配置页→找到Source Code Management→选择「Git」Repository URL填写你的GitHub仓库地址私有仓库需要添加凭证点击「Add」→「Jenkins」选择Username with passwordUsername填GitHub用户名Password填GitHub Personal Access TokenPAT生成方法GitHub→Settings→Developer settings→Personal access tokens→Tokens(classic)勾选repo权限生成Branches to build填*/main对应GitHub分支master就填*/master点击「Save」再点击「Build Now」测试进入Build History→对应构建→Console Output看到拉取代码成功就说明没问题3.3 配置构建步骤Maven打包回到任务配置页→Build→「Add build step」→「Invoke top-level Maven targets」Maven Version选择刚才配置的Maven3.8.6Goals填写打包命令clean package -DskipTestsclean清理旧编译文件package打包成jar/war-DskipTests跳过测试加快打包速度避免测试失败导致打包失败点击「Save」再次点击「Build Now」测试看到BUILD SUCCESS就说明打包成功打包后的jar包在任务页→Workspace→target目录下五、步骤4GitHub自动触发Jenkins构建WebHook配置推荐现在是手动点「Build Now」配置WebHook后GitHub提交代码会自动触发Jenkins构建实现「提交自动打包」。4.1 Jenkins配置触发权限任务配置页→Build Triggers→勾选GitHub hook trigger for GITScm polling点击「Save」确认Jenkins能被外网访问如果是内网需要用ngrok等内网穿透工具4.2 GitHub配置WebHookGitHub仓库→Settings→Webhooks→「Add webhook」Payload URL填写http://你的Jenkins服务器IP:8080/github-webhook/末尾必须加/否则会失败Content type选择application/json触发事件选择Just the push event仅代码推送时触发勾选Active点击「Add webhook」配置完成后GitHub会发送测试请求显示绿色对勾就成功✅六、步骤5构建成功后自动运行项目部署启动情况1Jenkins和项目在同一台服务器最简单任务配置页→Post-build Actions→「Add post-build action」→Execute shellLinux/Execute Windows batch commandWindows填写启动脚本Linux示例替换成你的jar包名Bash# 1. 进入打包目录cd /var/lib/jenkins/workspace/my-java-project-build/target# 2. 停止旧进程避免端口占用ps -ef | grep my-java-project.jar | grep -v grep | awk {print $2} | xargs kill -9# 3. 后台启动项目指定端口输出日志nohup java -jar my-java-project.jar --server.port8081 /var/log/my-java-project.log 21 点击「Save」构建成功后会自动执行脚本启动项目✅情况2Jenkins和项目在不同服务器安装Publish Over SSH插件配置目标服务器的SSH连接构建后操作选择Send files or execute commands over SSH传输jar包到目标服务器再执行启动脚本七、小白必看避坑指南GitHub私有仓库权限GitHub已禁用密码登录必须用Personal Access TokenPATWebHook无法访问内网Jenkins需要用ngrok等内网穿透把本地8080端口映射到公网Maven打包慢配置Maven阿里云镜像直接替换settings.xml即可我可以给你现成配置Jenkins权限问题Linux下Jenkins默认用户是jenkins需要给jenkins用户操作服务器的权限端口占用启动项目时如果端口被占用换端口或杀掉占用进程如果打开Manage Jenkins 出现下图情况不用惊慌这些红色报错不是安装失败是插件版本不兼容导致的你装的插件版本太新要求更高的 Jenkins 核心版本而你当前的 Jenkins 版本不够所以插件加载失败了完全不影响基础功能使用。没关系的我的配置如下版本如下如果不放心Jenkins 借助 Docker-compose 的完美升级流程核心docker-compose pull默认会拉取配置文件里所有服务的镜像MySQL、Redis、Jenkins 全拉完全可以只拉取 Jenkins 镜像 只重启 Jenkins 容器其他服务完全不受影响关键在命令后面加上你的服务名jenkins就能精准定位操作你直接复制用的 2 条命令仅更新重启 Jenkins更新docker-compose.yml你的docker-compose.yml里服务名是jenkins所以直接用这两个命令1. 仅拉取最新的 Jenkins 镜像不拉其他任何镜像Bashdocker-compose pull jenkins✅ 作用只更新 Jenkins 镜像MySQL/Redis/其他服务完全不动2. 仅重启/重建 Jenkins 容器不重启其他容器Bashdocker-compose up -d jenkins✅ 作用用刚拉取的最新 Jenkins 镜像重建容器只操作 Jenkins其他容器保持运行无任何影响保留你的所有数据、配置、任务数据卷挂载没变补充纯重启 Jenkins不更新镜像如果只是想重启 Jenkins不想更新版本用这个Bashdocker-compose restart jenkins关键知识点一看就懂命令作用适合场景docker-compose pull拉取所有服务镜像全部服务都要更新docker-compose pull jenkins仅拉取 Jenkins 镜像只更新 Jenkinsdocker-compose up -d重启所有更新的容器全部服务重启docker-compose up -d jenkins仅重建 Jenkins 容器用新镜像只更新重启 Jenkinsdocker-compose restart jenkins仅重启 Jenkins旧镜像仅重启不更新完整升级流程零风险、不影响其他服务进入你的docker-compose.yml所在目录执行仅更新 JenkinsBashdocker-compose pull jenkins执行仅重启 JenkinsBashdocker-compose up -d jenkins等待 1 分钟访问 Jenkins 就完成升级了 ✅
返回列表