软件基础技术构建 7_第1页
软件基础技术构建 7_第2页
软件基础技术构建 7_第3页
软件基础技术构建 7_第4页
软件基础技术构建 7_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

开源软件构建技术——开源代码管理与持续集成《开源软件构建技术:理论与实践》课件开源项目的好坏由哪几个方面决定23课件使用介绍课程资源网站(正在建设中,持续更新维护):课程配套8个实践案例:/paths/krytlieb

部署在头歌平台,

关卡作答模式,平台配套实验环境。欢迎老师在头歌平台新建课堂,引入课程实验案例资源。3.课程部分互动,学生作答环节(投票题),需要下载安装“雨课堂”应用。

1开源代码质量问题:开源代码质量评判共识准则4开源社区对开源代码质量的评判准则已经达成共识,开源项目的好坏通常由以下几个方面决定:1开源代码质量问题:开源代码质量评判共识准则5代码完整性代码一致性与可读性依赖管理复杂性社区支持活跃度文档与教程完善性开源许可证合理性社区治理透明性软件生态系统健全性持续集成与交付高效性资金可持续性1开源代码质量问题:违反准则的严重后果6信任危机与参与减少项目发展停滞法律与安全风险项目废弃风险1开源代码质量问题:开源代码质量保障措施7问题追踪系统:利用GitHubIssues等工具记录管理bug与功能请求,明确描述与复现步骤,定期审查更新问题列表规范发布说明:详细记录每个版本的新功能、修复bug及已知问题,帮助用户快速了解版本更新内容关键管理手段持续集成(CI)实践:设置自动化构建和测试流程,确保代码提交后自动运行测试,快速反馈结果,也可以集成测试覆盖率工具与代码质量检查工具,帮助开发者及时发现并修复潜在问题核心技术支撑2开源代码管理策略:定义与目标8核心定义​:代码管理是一种系统化方法,通过版本控制系统实现:​跟踪代码变化与开发人员贡献​协调多人协作与分支管理​处理代码合并等关键任务​核心目标​:提高团队工作效率与代码质量​增强代码可维护性与可靠性​确保代码变更的全程可追踪性​应对开源代码质量问题的系统性方案核心原则​透明化​:公开代码仓库、问题跟踪系统与详细文档,增强信任并吸引贡献者。​协作化​:通过贡献指南、代码审查和开放沟通渠道,加速项目发展并提升质量。​自动化​:利用CI/CD工具、自动化测试与构建流程,减少人为错误并确保快速交付。​可持续化​:明确项目目标、建立核心团队与资金支持机制,保障长期健康发展。2开源代码管理策略:技术解决方案工具9类别核心功能常用工具项目管理与规划工具任务规划、资源分配、进度跟踪GitLab、TaskTop、Trello、AzureBoards问题追踪系统记录与管理Issues、功能请求AtlassianJira、JetBrainsYouTrack、ZenDesk源代码控制工具版本控制、代码审查、变更追溯Git、GitHub、GitLab、Bitbucket、Subversion构建工具自动化编译、打包、依赖管理Maven/Gradle、MSBuild、JFrogArtifactory测试工具功能/性能/安全性自动化测试JUnit、xU、Selenium、CucumberCI/CD工具自动化集成、测试、部署Jenkins、GitHubActions、CircleCI、Spinnaker、AWSCodePipeline2开源代码管理策略:技术解决方案工具10类别核心功能常用工具云平台提供弹性的计算、存储和网络资源AmazonWebServices(AWS)、MicrosoftAzure、GoogleCloudPlatform(GCP)配置管理工具基础设施与环境自动化配置Terraform、Ansible、Chef、Puppet容器调度程序管理和调度容器化应用程序DockerSwarm、ApacheMesos、Kubernetes。监控与协作工具系统监控、团队沟通、知识共享ELKStack、Datadog、NewRelic、Prometheus、Zipkin、AzureMonitor。通讯工具团队成员之间的实时沟通和协作Slack、MicrosoftTeams、GoogleHangouts、Zoom。知识共享工具记录和分享项目文档、经验和最佳实践GitHubPages、Confluence、Jekyll、GoogleSites。3问题追踪系统:什么是问题追踪系统11问题追踪系统是用于记录、跟踪和管理软件开发过程中问题的工具,涵盖Issues、功能请求、任务等。核心价值:帮助团队系统化管理问题,确保及时发现、分配、解决和验证,提高问题管理透明度和效率,为项目进度和质量提供数据支持。3问题追踪系统:问题管理的核心功能12问题追踪系统在问题管理方面的核心功能包括:问题记录、问题分配、问题追踪、报告和分析四个方面问题记录问题描述:详细记录背景、现象和复现步骤优先级和严重性:按影响程度设高、

中、

低优先级,致命、

严重、

一般严重性​标签和分类:用Bug、Feature、Enhancement等标签分类2)问题分配​责任人分配:将问题指派给具体开发人员或团队截止日期:设定问题解决期限3)问题追踪​状态管理:跟踪新建、进行中、已解决、已关闭等生命周期状态评论和讨论:支持团队成员讨论,记录解决方案和进展4)报告和分析​统计报表:生成问题数量、解决率、平均解决时间等报表趋势分析:分析问题趋势,识别潜在风险3问题追踪系统:问题状态的生命周期13问题状态的生命周期包括五个主要阶段:新建(New):问题被创建,但尚未分配或处理进行中(InProgress):问题已被分配,正在处理中已解决(Resolved):问题已解决,等待验证已关闭(Closed):问题已验证并关闭重新打开(Reopened):问题未完全解决,需要重新处理问题状态的转换规则 新建→进行中:问题被分配给责任人进行中→已解决:责任人完成问题修复已解决→已关闭:问题通过验证已解决→重新打开:问题未通过验证,需要重新处理重新打开→进行中:问题重新分配给责任人3问题追踪系统:常用问题追踪系统对比14工具特点适用场景AtlassianJira功能强大,支持敏捷开发,可定制性高中大型团队,复杂项目管理GitHubIssues与代码仓库深度集成,轻量级,易于使用开源项目或小型团队GitLabIssues与GitLab集成,支持CI/CD和项目管理使用GitLab的团队JetBrainsYouTrack灵活的工作流配置,支持敏捷和看板需要高度定制化流程的团队ZenDesk专注于客户支持,支持多渠道问题收集需要与客户支持系统集成的团队4持续集成与部署:GitHubActions概述15什么是GitHubActions?GitHub提供的自动化工具,支持持续集成(CI)和持续交付(CD)通过定义自动化工作流程,响应代码推送、PR等事件可执行构建、测试、部署等任务,提升开发效率与软件质量核心优势无缝集成GitHub:无需额外配置,全平台操作一体化事件驱动灵活:精确控制触发条件(推送、PR、定时等)丰富生态:官方+社区Actions覆盖全流程,无需重复造轮子跨平台支持:兼容Linux、Windows、macOS多环境可视化日志:实时查看执行状态,便捷调试典型应用场景自动化测试:代码推送/PR时自动运行测试持续部署:测试通过后自动部署到测试/生产环境代码质量检查:集成格式化、静态分析工具定时任务:数据备份、报告生成、通知发送4持续集成与部署:GitHubActions核心组件16工作流程(Workflow):.yml

文件定义的自动化流程,包含多个任务(

Job)事件(Event):触发工作流的条件(推送、PR、定时等)任务(Job):独立执行单元,含多个步骤,可并行/依赖执行步骤(Step):任务的具体操作(Shell命令或Action)Action:可重用单元,执行特定任务(官方/社区/自定义)4持续集成与部署:常用事件类型17事件类型触发条件适用场景push代码推送到分支/标签自动测试、构建、部署pull_request创建/更新PR代码检查、测试、格式化schedule定时触发(cron语法)数据备份、报告生成workflow_dispatch手动触发临时部署、测试4持续集成与部署:GitHubActions工作流语法18工作流结构名称(name):工作流标识,显示在GitHub界面触发器(on):定义触发事件(推送、PR、定时等)作业(jobs):包含多个步骤,指定运行环境(runs-on)环境变量(env):全局/作业级变量配置权限(permissions):控制资源访问权限4持续集成与部署:GitHubActions工作流语法19on:push:

tags:-'v1.*'

事件过滤机制分支过滤:仅特定分支触发路径过滤:仅文件变更触发标签过滤:仅特定标签触发on:push:branches:[main,'releases/**’]on:push:

paths:-'src/**'

#仅当src目录下文件变更时触发4持续集成与部署:GitHubActions工作流语法20env:PYTHON_VERSION:‘3.9’#环境变量steps:-name:Printbranchnamerun:echo${{github.ref}}#输出当前分支2.任务和步骤配置任务依赖:needs控制执行顺序jobs:deploy:{needs:build,...}#等待build完成jobs:deploy:runs-on:ubuntu-latest

if:github.ref=='refs/heads/main'#仅在main分支上执行

steps:-run:echo"Deployingtoproduction..."条件执行:if控制任务/步骤是否运行环境变量与上下文:动态获取信息4持续集成与部署:GitHubActions工作流语法21steps:-uses:./.github/actions/my-action

#引用本地Action3.Actions的使用官方Actions:基础工具类steps:-uses:actions/checkout@v3

#检出代码

-uses:actions/setup-python@v4

#配置Pythonwith:{python-version:'3.9'}steps:-uses:actions/cache@v3

#缓存依赖

with:path:~/.cache/pipkey:${{runner.os}}-pip-${{hashFiles('requirements.txt')}}社区Actions:功能扩展(如缓存)自定义Actions:本地/私有功能4持续集成与部署:GitHubActions工作流语法224.矩阵构建多环境并行测试(操作系统+版本组合)jobs:test:runs-on:${{matrix.os}}strategy:

matrix:

os:[ubuntu-latest,windows-latest]python-version:['3.8','3.9','3.10']steps:-uses:actions/setup-python@v4with:{python-version:${{matrix.python-version}}}-run:pytest4持续集成与部署:GitHubActions工作流语法235.缓存与依赖管理使用actions/cache减少依赖安装时间steps:-uses:actions/cache@v3with:path:~/.cache/pip#缓存路径

key:${{runner.os}}-pip-${{hashFiles('requirements.txt')}}6.安全与权限管理#密钥管理:用secrets存储敏感信息steps:-run:deploy.shenv:{DEPLOY_KEY:${{secrets.PRODUCTION_KEY}}}#最小权限原则:限制工作流权限permissions:contents:read#仅允许读取仓库内容

issues:write#允许写入问题4持续集成与部署:GitHubActions工作流语法247.集成通知工具与Slack/Email集成,实时反馈结果steps:-name:发送邮件通知

run:|echo"Workflow完成!"|mail-s"状态通知"${{secrets.EMAIL_RECIPIENT}}env:SMTP_SERVER:${{secrets.SMTP_SERVER}}

EMAIL_USER:${{secrets.EMAIL_USER}}EMAIL_PASSWORD:${{secrets.EMAIL_PASSWORD}}6

实践:简介25接下来可以打开头歌平台的课程,通过一个简单的案例实践,来体会开源代码管理与持续集成:课程链接:/paths/krytlieb实践项目1:使用GitHubActions实现自动化测试264实践项目:使用GitHubActions实现自动化测试27任务目标通过本任务,你将学会:创建基本的GitHubActions工作流配置文件触发工作流运行并观察其执行过程验证工作流是否成功执行任务要求你需要完成以下核心操作:创建一个GitHub仓库准备一个python项目创建并编写工作流配置文件(ci.yml)推送代码,触发工作流并验证测试结果在头歌平台进行测评4实践项目:使用GitHubActions实现自动化测试28步骤1-创建仓库登录你的GitHub账号点击Newrepository(新建仓库)设置仓库信息:仓库名:github-actions-practice(可自定义)公开性:Public(必须公开!)描述:我的第一个GitHubActions实践点击Createrepository4实践项目:使用GitHubActions实现自动化测试29步骤2-准备Python项目创建一个标准的Python项目结构:my-python-project/├──.github/workflows/#工作流文件目录│

└──ci.yml├──calculator.py#被测试的代码├──test_calculator.py#测试代码└──requirements.txt#项目依赖(可选)4实践项目:使用GitHubActions实现自动化测试30步骤2-准备Python项目示例代码内容calculator.py(被测试的功能模块)defadd(a,b):returna+bdefmultiply(a,b):returna*btest_calculator.py(单元测试)importpytestfromcalculatorimportadd,multiplydeftest_add():assertadd(2,3)==5assertadd(-1,1)==0deftest_multiply():assertmultiply(3,4)==12assertmultiply(2,0)==04实践项目:使用GitHubActions实现自动化测试31步骤3-创建并配置工作流在.github/workflows/ci.yml文件中配置:name:Python单元测试on:[push,pull_request]#推送或提PR时触发jobs:test:runs-on:ubuntu-lateststeps:-name:检出代

码uses:actions/checkout@v4-name:设置Pythonuses:actions/setup-python@v5with:python-version:'3.11'-name:安装依赖run:|python-mpipinstall--upgradepippipinstallpytest-name:运行测试run:pytest-v工作流步骤解析检出代码:获取仓库代码到虚拟环境设置Python:配置指定版本的Python环境安装依赖:安装测试所需的包(pytest)运行测试:执行pytest命令,-v参数显示详细结果4实践项目:使用GitHubActions实现自动化测试32步骤4-触发并验证工作流将所有文件推送到GitHub仓库点击顶部的Actions标签页选择Python单元测试

工作流查看运行状态和详细日志如何判断测试结果?测试通过(成功):状态为绿色对勾

日志中显示:=====PASSED=====看到所有测试用例通过的信息测试失败:状态为红色叉号

日志中显示:=====FAILED=====明确指出哪个测试用例失败及原因4实践项目:使用GitHubActions实现自动化测试33结果展示如图4实践项目:使用GitHubActions实现自动化测试34步骤5-尝试一个失败的案例1.修改calculator.py中的add函数,使其返回错误结果2.提交并推送代码3.观察工作流运行状态变为失败4.查看日志,学习如何阅读错误信息defadd(a,b):returna*b#错误的实现!4实践项目:使用GitHubActions实现自动化测试35步骤6-提交任务1.确保最后一次工作流运行成功(绿色对勾)2.复制你的仓库地址:/你的用户名/你的仓库名3.在头歌平台提交该链接实践项目2:通过GitHubActions自动部署静态文档到GitHubPages364实践项目:通过GitHubActions自动部署静态文档到GitHubPages37任务目标本次实践项目旨在让大家掌握使用GitHubActions实现静态网站(MkDocs文档)的自动化构建与部署,最终通过GitHubPages托管可访问的文档网站,具体目标如下:搭建MkDocs文档项目结构配置GitHubActions工作流实现自动部署验证部署结果,确保文档网站可访问任务步骤总览本次实践任务共分为6个核心步骤,将带领大家从0到1完成静态文档的自动化部署:创建GitHub仓库并初始化项目编写文档内容配置MkDocs配置GitHubActions自动部署工作流配置仓库并触发部署提交任务4实践项目:通过GitHubActions自动部署静态文档到GitHubPages38步骤1-创建GitHub仓库并初始化项目1.1新建GitHub仓库1.2克隆仓库到本地并创建目录结构1.克隆仓库:使用gitclone/你的GitHub用户名/你的仓库名.git命令,将仓库克隆到本地2.按以下结构创建文件和目录(必填项需确保存在):my-docs/├──docs/#存放Markdown文档(必填)│

├──index.md#主页(必填)│

├──about.md#关于页面(必填)│

├──guide.md#使用指南(必填)│

└──api.md#API参考(必填)├──.github/#工作流配置目录(必填)│

└──workflows/│

└──deploy.yml#自动化部署工作流配置(必填)├──mkdocs.yml#MkDocs配置文件(必填)└──README.md#项目说明(可选)4实践项目:通过GitHubActions自动部署静态文档到GitHubPages39步骤2-编写文档内容需为docs目录下的4个Markdown文件填充指定内容,确保文档可正常跳转和展示:2.1docs/index.md(主页)作用:文档网站的首页,包含到其他页面的跳转链接#欢迎使用MkDocs这是一个示例文档,使用**MkDocs**进行构建。

-[关于](about.md)-[使用指南](guide.md)-[API参考](api.md)4实践项目:通过GitHubActions自动部署静态文档到GitHubPages402.2docs/about.md(关于页面)作用:介绍项目的核心信息和技术栈#关于本项目

本项目使用MkDocs生成技术文档,并通过GitHubPages自动部署。

2.3docs/guide.md(使用指南)作用:说明文档项目的使用流程#使用指南

1.编写Markdown文档

2.提交代码到GitHub3.GitHubActions自动构建并部署

2.4docs/api.md(API参考)作用:展示API相关文档示例(可根据实际需求扩展)#API参考

这里是API参考文档示例。

4实践项目:通过GitHubActions自动部署静态文档到GitHubPages41步骤3-配置MkDocs3.1创建并配置mkdocs.yml文件在项目根目录(my-docs/)下创建mkdocs.yml文件,用于指定网站主题、导航等核心配置,内容如下:site_name:我的技术文档#网站名称(将显示在页面标题和导航栏)theme:name:material#使用Material主题(美观且支持响应式)

nav:#网站导航结构(对应docs目录下的文件)-首页:index.md-关于:about.md-指南:guide.md-API:api.md说明:MkDocs通过该配置文件识别文档结构和网站样式,material主题需后续安装,无需手动下载4实践项目:通过GitHubActions自动部署静态文档到GitHubPages42步骤4-配置GitHubActions自动部署工作流4.1创建deploy.yml文件在.github/workflows/目录下创建deploy.yml文件,定义自动化部署的触发条件、运行环境和执行步骤,内容如下:name:DeployMkDocstoGitHubPages#工作流名称(自定义)on:#触发条件push:branches:-main#仅在main分支推送代码时触发

paths:-'docs/**'#仅当docs目录下文件变化时触发

-'mkdocs.yml'#仅当MkDocs配置文件变化时触发

jobs:#工作流任务deploy:runs-on:ubuntu-latest#运行环境:Ubuntu最新版steps:#任务执行步骤-name:检出代码#步骤1:拉取GitHub仓库代码uses:actions/checkout@v4-name:设置Python环境#步骤2:配置Python(MkDocs依赖Python)uses:actions/setup-python@v4with:python-version:'3.9'#指定Python版本-name:安装MkDocs及主题#步骤3:安装依赖工具run:|pipinstallmkdocs-material#安装MkDocs和Material主题-name:构建静态文档#步骤4:生成静态网站文件run:|mkdocsbuild#生成的文件存放在项目根目录的site/文件夹-name:部署到GitHubPages#步骤5:将静态文件部署到ghs分支uses:JamesIves/githubs-deploy-action@v4with:branch:ghs#部署目标分支(GitHubPages默认读取该分支)folder:site#待部署的文件目录(即步骤4生成的site目录)4实践项目:通过GitHubActions自动部署静态文档到GitHubPages43步骤5-配置仓库并触发部署5.1创建ghs分支(部署目标分支)进入GitHub仓库页面,点击顶部“Branches”在“Findorcreateabranch”输入框中输入ghs,点击“Createbranch:ghsfrom'main'”说明:该分支无需手动添加内容,后续GitHubActions会自动向该分支推送静态文件5.2开启工作流权限(关键步骤)进入GitHub仓库页面,点击顶部“Settings”在左侧导航栏中找到并点击“Actions”→“General”滚动到“Workflowpermissions”区域:选择“Readandwritepermissions”(工作流需读写权限以推送文件到ghs分支)勾选“AllowGitHubActionstocreateandapprovepullrequests”点击“Save”保存设置4实践项目:通过GitHubActions自动部署静态文档到GitHubPages44步骤5-配置仓库并触发部署5.3提交代码并触发部署在本地项目根目录打开终端,执行以下命令提交代码:#1.将所有文件添加到暂存区gitadd.#2.提交代码(备注信息可自定义)gitcommit-m"初始化MkDocs项目并配置GitHubActions"#3.推送到GitHub的main分支gitpushoriginmain4实践项目:通过GitHubActions自动部署静态文档到GitHubPages45步骤5-配置仓库并触发部署5.4验证部署结果查看工作流状态:进入GitHub仓库→点击顶部“Actions”,查看名为“DeployMkDocstoGitHubPages”的工作流是否显示“Success”(绿色对勾)访问文档网站:工作流成功后,等待1-2分钟(GitHubPages更新需时间),访问地址:https://你的GitHub用户名.github.io/你的仓库名/示例:若用户名为“testuser”,仓库名为“my-docs”,则访问地址为https://testuser.github.io/my-docs/4实践项目:通过GitHubActions自动部署静态文档到GitHubPages46结果展示如图4实践项目:通过GitHubActions自动部署静态文档到GitHubPages47步骤6-提交任务(环境配置与评测)6.1配置实验环境(避免报错)打开实验环境终端,执行以下命令安装依赖包6.2提交评测在实验平台中,输入以下信息提交任务:GitHub账户名GitHubToken(需提前准备,确保拥有仓库操作权限)仓库链接(格式:/你的GitHub用户名/你的仓库名.git)#升级requests、urllib3、chardetpipinstall--upgraderequestsurllib3chardet#安装pyyaml(用于解析配置文件)pipinstallpyyaml实践项目3:使用GitHubActions实现自动化部署web项目484实践项目:使用GitHubActions实现自动化部署web项目49一、项目核心目标掌握从「代码开发」到「自动化上线」的全流程,具体实现:基于GitHubActions搭建CI/CD流水线,自动完成代码拉取、依赖安装、自动化测试实现代码推送后,自动部署Flask项目到头歌服务器用Supervisor管理Flask进程,确保应用稳定运行验证部署结果,确保应用可正常访问二、实践价值告别「手动上传代码、手动重启服务」的低效流程理解自动化测试与部署的核心逻辑,适配各类Web项目掌握服务器进程管理、SSH密钥配置等运维基础技能通过本次实践,实现了「一次配置,永久自动化」,大幅提升项目迭代效率!4实践项目:使用GitHubActions实现自动化部署web项目50三、整体流程概览本次实践分为4个核心阶段,按「准备→手动验证→自动化部署」逐步推进:前置准备:服务器环境、GitHub仓库、SSH密钥配置项目准备:搭建Flask项目结构、编写核心代码与测试用例手动部署验证:首次手动部署项目,确保服务器环境与进程管理正常自动化部署实现:配置GitHubActions工作流,实现「代码推送即部署」代码推送到GitHubmain分支GitHubActions触发工作流自动化测试:安装依赖,执行测试用例自动化部署:ssh链接服务器,拉取最新代码,重启服务访问链接验证结果4实践项目:使用GitHubActions实现自动化部署web项目51第一部分:前置准备工作服务器与GitHub仓库已拥有服务器,获取SSH访问信息,可以使用ssh在本地链接服务器新建公开仓库SSH密钥配置(无密码登录)让GitHubActions(虚拟环境)能无密码通过SSH连接头歌服务器,避免明文传输密码头歌服务器环境安装为后续项目运行和代码拉取提供环境支持第二部分:项目准备准备一个python-web项目,可参考头歌平台上提供的项目目录结构和文件内容将项目推送到main分支4实践项目:使用GitHubActions实现自动化部署web项目52第三部分:手动部署项目首次手动部署,验证服务器环境、代码拉取、依赖安装是否正常,为后续自动化部署铺路第四部分:自动化部署实现配置GitHubSecrets存储敏感信息(SSH私钥、服务器IP),避免硬编码到cicd.yml中(安全风险)配置cicd.yml工作流当代码推送到main分支时,触发以下流程:1.拉取代码

→2.配置Python环境

→3.安装依赖并执行测试

→4.SSH连接服务器部署测试自动化流程自动化流程闭环:代码推送→自动测试→自动部署→结果验证4持续集成与部署:Jenkins概述53(1)什么是Jenkins?开源持续集成与持续交付(CI/CD)工具,专注于自动化构建、测试、部署流程核心优势:灵活性高(支持多技术栈)、可扩展性强(通过插件生态集成工具4持续集成与部署:Jenkins安装与配置54(1)本地安装官网下载最新JenkinsWAR包终端执行启动命令:java-jarjenkins.war(默认监听8080端口)浏览器访问:http://IP:8080进入配置页面(2)Docker安装确保Docker已安装并启动服务拉取镜像:dockerpulljenkins/jenkins:lts创建数据卷mkdir-p~/jenkins_home

chown1000:1000~/jenkins_home启动容器:dockerrun-d--namejenkins-p8080:8080-p50000:50000-v~/jenkins_home:/var/jenkins_home--restart=alwaysjenkins/jenkins:lts浏览器访问:http://IP:8080进入配置页面获取初始密码:dockerexecjenkinscat/var/jenkins_home/secrets/initialAdminPassword4持续集成与部署:Jenkins安装与配置55(3)Jenkins初始配置安装完成后,需要进行一些基本的配置。需要配置的内容如下:访问http://IP:8080,输入在终端输出的初始管理员密码选择安装推荐插件,建议安装Git、Pipeline等常用插件创建管理员账户,设置用户名、密码和邮箱地址进入Jenkins仪表盘,检查安装是否成功。安装成功后如图所示4持续集成与部署:Jenkins用户管理与权限控制56Jenkins提供了灵活的用户管理功能,支持多用户协作和权限控制。并且,为了提高安全性和管理效率,Jenkins允许设置不同级别的用户权限创建管理员账户路径:ManageJenkins→ManageUsers→CreateUser输入用户名、密码、邮箱完成创建角色管理与权限控制安装插件:RoleStrategyPlugin(路径:ManagePlugins→Available搜索安装)开启策略:ManageJenkins→ConfigureGlobalSecurity→Authorization→Role-BasedStrategy配置角色:ManageandAssignRoles创建角色(管理员、开发者、只读用户)并分配权限分配用户:将用户关联至对应角色,实现细粒度权限控制4持续集成与部署:Jenkins核心组件57组件定义与作用Job基本执行单元,定义构建/测试/部署流程,支持自由风格、流水线等类型Pipeline高级CI/CD解决方案,通过代码定义流程,支持多阶段、并行执行、条件判断(Groovy编写)Node 工作节点,分主节点(Master,负责任务调度)和从节点(Agent,执行构建任务),支持分布式构建4持续集成与部署:Jenkins任务与流水线:构建自动化流程58自由风格任务(适用于简单场景)创建:NewItem→输入名称→选择Freestyleproject→OK配置:General:设置描述、构建触发器;Build:添加构建步骤(如执行Shell脚本安装依赖、运行测试)3.验证:保存后手动触发构建,检查结果(1)任务创建与配置参数化构建(灵活配置场景)开启:在任务配置页勾选Thisprojectisparameterized添加参数:点击AddParameter,选择类型(如StringParameter、BooleanParameter)使用参数:在构建步骤中通过Shell脚本引用参数(如$PARAM_NAME)实现动态逻辑4持续集成与部署:Jenkins任务与流水线:构建自动化流程59声明式流水线(简洁易读,适合多数场景)语法结构清晰,固定格式定义流程:(2)Pipeline流水线:代码定义自动化流程pipeline{agentany//使用任意节点environment{PYTHON_ENV='/usr/bin/python3'}//全局环境变量stages{//阶段定义stage('Checkout'){steps{git'仓库地址'}}stage('InstallDependencies'){steps{sh'${PYTHON_ENV}-mpipinstall-rrequirements.txt'}}stage('RunTests'){steps{sh'${PYTHON_ENV}-munittestdiscover'}}stage('Deploy'){steps{sh'./deploy.sh'}}}post{always{cleanWs()}}//构建后清理}4持续集成与部署:Jenkins任务与流水线:构建自动化流程60脚本化流水线(高自定义,适合复杂场景)基于Groovy脚本实现灵活逻辑:node{//绑定节点stage('Checkout'){git'仓库地址'}stage('InstallDependencies'){sh'python3-mpipinstall-rrequirements.txt'}stage('RunTests'){sh'python3-munittestdiscover'}stage('Deploy'){sh'./deploy.sh'}}4持续集成与部署:Jenkins构建触发器配置61触发器核心作用构建触发器是Jenkins实现任务自动化执行的关键配置,通过预设规则触发任务,无需人工干预,核心价值包括:实现代码提交后自动构建,缩短开发反馈周期支持定时执行重复性任务,减少人工操作成本提升开发流程自动化程度,提高整体研发效率4持续集成与部署:Jenkins构建触发器配置62常见构建触发器类型1.定时构建:按时间计划触发基于Cron表达式定义时间规则,Jenkins按照预设计划自动执行任务,适用于“定期执行”的场景(如每日构建、每小时巡检)。

配置步骤(Jenkins端)进入目标Job的配置页面,找到“构建触发器”模块勾选“Buildperiodically”(定期构建)选项在“Schedule”输入框中填写Cron表达式(如H/15****)点击“保存”,Jenkins会自动按计划执行任务4持续集成与部署:Jenkins构建触发器配置632.SCM触发:代码变更时触发SCM(SourceCodeManagement,源码管理)触发指当代码推送到版本控制系统(如Git、SVN)时,自动触发Jenkins任务执行,通常与Webhook结合实现“实时构建”,适用于“代码变更后立即验证”的场景(如提交代码后自动跑测试、打包)。配置流程(分Jenkins端+代码仓库端)步骤1:Jenkins端配置进入Job配置页面,在“源码管理”模块选择“Git”,填写仓库地址(如/xxx/xxx.git)和需要监听的分支(如*/main)进入“构建触发器”模块,根据仓库类型勾选对应选项:若为GitHub仓库:勾选“GitHubhooktriggerforGITScmpolling”(依赖Webhook通知)若为其他Git仓库(如GitLab、Gitee):勾选“PollSCM”(Jenkins定期检查代码变更,需填写Cron表达式,如H/5****表示每5分钟检查一次)4持续集成与部署:Jenkins构建触发器配置64步骤2:代码仓库端配置(以GitHub为例)进入GitHub仓库页面,点击顶部“Settings”→

左侧“Webhooks”→“Addwebhook”在“PayloadURL”中输入Jenkins的Webhook地址,格式为:http://<Jenkins服务器IP或域名>/github-webhook/(如00

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论