《开源软件构建技术》第5章 开源代码管理与持续集成_第1页
《开源软件构建技术》第5章 开源代码管理与持续集成_第2页
《开源软件构建技术》第5章 开源代码管理与持续集成_第3页
《开源软件构建技术》第5章 开源代码管理与持续集成_第4页
《开源软件构建技术》第5章 开源代码管理与持续集成_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

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

文档简介

APACHESOFTWARE

FOUNDATION20TH

ANNIVERSARY

OpenEuler创开源之势

·享无境未来—GitLirk开源软件构建技术——开源代码管理与持续集成《开源软件构建技术:

理论与实践》课件LINUX确实

开源开源项目的好坏由哪几个方面决定

2课件使用介绍1.课程资源网站(正在建设中,持续更新维护):

https://www.opendevcourse.com2.

8

:/paths/krytlieb部署在头歌平台,

关卡作答模式,平台配套实验环境。欢迎老师在头歌平台新建课堂,引入课程实验案例资源。3.

课程部分互动,学生作答环节(投票题),需要下载安装“雨课堂”应用。赋

系开源软件构建技术理论与实践王莹黎立王伟朱志良/编著重子工堂出版林图开源社区对开源代码质量的评判准则已经达成共识,开源项目的好坏通常由以下几个方面决定:1

开源代码质量问题:开源代码质量评判共识准则4·

开源许可证合理性●

社区治理透明性·

软件生态系统健全性●

持续集成与交付高效性·

资金可持续性●代码完整性●代码一致性与可读性·依赖管理复杂性●社区支持活跃度●文档与教程完善性

1

开源代码质量问题:开源代码质量评判共识准则5·

信任危机与参与减少●项目发展停滞●

法律与安全风险●项目废弃风险开源代码质量问题:违反准则的严重后果16·

问题追踪系统:

用GitHub

Issues

等工具记录管理bug

与功

能请求,明确描述与复现步骤,定期审查更新问题列表·

规范发布说明:

详细记录每个版本的新功能、修复

bug

及已知

问题,帮助用户快速了解版本更新内容·

持续集成

(CI)

:设置自动化构建和测试流程,确保代码

提交后自动运行测试,快速反馈结果,也可以集成测试覆盖率

工具与代码质量检查工具,帮助开发者及时发现并修复潜在问

题关键管理手段核心技术支撑开源代码质量问题:开源代码质量保障措施1核心原则·

透明化:公开代码仓库、问题跟踪系统与详细文档,增强信任并吸引贡献者。·

协作化:通过贡献指南、代码审查和开放沟通渠道,加速项目发展并提升质量。·

自动化:利用CI/CD

工具、自动化测试与构建流程,减少人为错误并确保快速交付。·

可持续化:明确项目目标、建立核心团队与资金支持机制,保障长期健康发展。核心定义:

代码管理是一种系统化方法,通过版本控制系统实现:·跟踪代码变化与开发人员贡献·

协调多人协作与分支管理·

处理代码合并等关键任务核心目标:·提高团队工作效率与代码质量·增强代码可维护性与可靠性·确保代码变更的全程可追踪性·应对开源代码质量问题的系统性方案开源代码管理策略:定义与目标28类别核心功能常用工具项目管理与规划

工具任务规划、资源分配、进度

跟踪GitLab、TaskTop、Trello、Azure

Boards问题追踪系统记录与管理Issues、功能请求Atlassian

Jira、JetBrains

YouTrack、ZenDesk源代码控制工具版本控制、代码审查、变更

追溯Git、GitHub、GitLab、Bitbucket、Subversion构建工具自动化编译、打包、依赖管

理Maven/Gradle、MSBuild、JFrog

Artfactory测试工具功能/性能/安全性自动化测试JUnit、xUnit.net、Selenium、CucumberCI/CD工具自动化集成、测试、部署Jenkins、GitHub

Actions、CircleCI、Spinnaker、

AWS

CodePipeline开源代码管理策略:技术解决方案工具2类别核心功能常用工具云平台提供弹性的计算、存储和网

络资源Amazon

Web

Services(AWS)、Microsoft

Azure、Google

Cloud

Platform(GCP)配置管理工具基础设施与环境自动化配置Terraform、Ansible、Chef、Puppet容器调度程序管理和调度容器化应用程序Docker

Swarm、ApacheMesos、Kubernetes。监控与协作工具系统监控、团队沟通、知识

共享ELK

Stack、Datadog、New

Relic、Prometheus、

Zipkin、Azure

Monitor。通讯工具团队成员之间的实时沟通和

协作Slack、MicrosoftTeams、GoogleHangouts、Zoom。知识共享工具记录和分享项目文档、经验和最佳实践GitHubPages、Confluence、Jekyll、GoogleSites。开源代码管理策略:技术解决方案工具210(>Code

⊙Issues

630

n

Pull

requests87◎ActionsAdd

constant

for'Alt-Svc'to!

问题状态sdavidsopenedonAug26,2024-editedby

sdavidsAPI(s)Howdo

youwant

itto

beimproved?Pleaseada

constant

for

Alt-ScWhy

do

we

need

it

to

be

improved?QTypetosearch田Projects

m

wk

Security

Insightscom.google.common.net.HttpHeaders#7373问题描述

责任人分配严重等级标签分类MilestoneExampleresponse:setieader

(Httpleaders

.LT_SK

,"h3-25-1”:443V”;Current

BehaviorDevelopmentno

constantDesiredBehaviorconstantfor"Alt-Swe"existsWourenotrecewngnotifcatiosstrontisthread.Concrete

Use

CasesHTTP/3endpointadvertisementinJava-basedAPIgateway.问题追踪系统是用于记录、跟踪和管理软件开发过程

中问题的工具,涵盖Issues、功能请求、任务等。核心价值:

帮助团队系统

化管理问题,

确保及时发

现、分配、

解决和验证,提高问题管理透明度和效率,为项目进度和质量提

供数据支持。问题追踪系统:什么是问题追踪系统34subscribe1600,h2-1":44°;m-3600°);Notbraneso

pull

requeRetatiomchipsPrticipants11Notifcation1)问题记录·

问题描述:详细记录背景、现象和复现步骤·

优先级和严重性:按影响程度设高、中、低优先级,致命、严重、

一般严重性·

标签和分类:用Bug

、Feature

、Enhancement等标签分类3)问题追踪·

状态管理:跟踪新建、进行中、已解决、已关闭等生命周期状态·

评论和讨论:支持团队成员讨论,记录解决方案和进展问题追踪系统在问题管理方面的核心功能包括:问题记录、问题分配、问题

追踪、报告和分析四个方面4)报告和分析·

统计报表:生成问题数量、解决率、平均解决时间等报表·

趋势分析:分析问题趋势,识别潜在风险2)问题分配·

责任人分配:将问题指派给具体开发人员或团队·

截止日期:设定问题解决期限问题追踪系统:问题管理的核心功能312问题状态的生命周期包括五个主要阶段:1.

新建(New):问题被创建,但尚未分配或处理2.进行中(In

Progress):

问题已被分配,正在处理中3.已解决(Resolved):

问题已解决,等待验证4.

已关闭(Closed):

问题已验证并关闭5.

重新打开(Reopened);

问题未完全解决,需要重新处理问题状态的转换规则·

新建

进行中:

问题被分配给责任人·

进行中

已解决:

责任人完成问题修复·已解决

已关闭:问题通过验证·已解决→

重新打开:问题未通过验证,需要

重新处理·

重新打开→进行中:问题重新分配给责任人问题已解决,等待验证已解决(Resolved)问题被创建,但尚来分配或处理问题米究金解决,需要重新处理问题追踪系统:问题状态的生命周期进行中(In

Progress)重新打开(Reopened)问题已被分配,正在处理中已关闭(Closed)新建(New)问翘已验证并关闭313工具特点适用场景Atlassian

Jira功能强大,支持敏捷开发,可定制

性高中大型团队,复杂项目

管理GitHub

Issues与代码仓库深度集成,轻量级,易

于使用开源项目或小型团队GitLab

Issues与GitLab集成,支持CI/CD和项

目管理使用GitLab的团队JetBrainsYouTrack灵活的工作流配置,支持敏捷和看

板需要高度定制化流程的团队ZenDesk专注于客户支持,支持多渠道问题收集需要与客户支持系统集成的团队问题追踪系统:常用问题追踪系统对比314什么是GitHub

Actions?·GitHub

提供的自动化工具,支持持续集成

(CI)

和持续交付(CD)·通过定义自动化工作流程,响应代码推送、PR

等事件·

可执行构建、测试、部署等任务,提升开发效率与软件质量核心优势·

无缝集成GitHub:

无需额外配置,全平台操作一体化·

事件驱动灵活:精确控制触发条件(推送、PR

、定时等)·

丰富生态:官方+社区Actions覆盖全流程,无需重复造轮子·

跨平台支持:兼容Linux、Windows

、macOS多环境·

可视化日志:实时查看执行状态,便捷调试典型应用场景·

自动化测试:代码推送/PR时自动运行测试·

持续部署:测试通过后自动部署到测试/生产环境·

代码质量检查:集成格式化、静态分析工具·

定时任务:数据备份、报告生成、通知发送持续集成与部署:GitHub

Actions概述415工作流

(Workflow)任务1(Job1)(Event)步骤1(Step1)日志结果动作或shell命令运行器2

(Runner2)任务2

(Job2)步

1(Step1)日志结果动作或shell

命令步骤1

(Step1)动作或shell命令工作流程

(Workflow)

:.yml文件定义的自动化流程,包含多个任务(Job)事件

(Event)

:

触发工作流的条件(推送、PR、定时等)任务

(Job)

:

独立执行单元,含多个步骤,可并行/依赖执行步骤

(Step)

:

任务的具体操作

(Shell

命令或Action)Action:

可重用单元,执行特定任务(官方/社区/自定义)持续集成与部署:GitHubActions核心组件运行器1

(Runner1)运行动作或shell命令4运行动作或shell命令事件16事件类型触发条件适用场景push代码推送到分支/标签自动测试、构建、部署pull_request创建/更新PR代码检查、测试、格式化schedule定时触发(cron语法)数据备份、报告生成workflow_dispatch手动触发临时部署、测试持续集成与部署:常用事件类型417工作流结构·

(name):

工作流标识,显示在GitHub

界面·

触发器

(on)

:

定义触发事件(推送、

PR、

定时等)·

(jobs)

:

包含多个步骤,指定运行环境

(runs-on)·

环境变量

(env):

全局/作业级变量配置·权限

(permissions):

控制资源访问权限持续集成与部署:GitHubActions工作流语法4181.

事件过滤机制·分支过滤:仅特定分支触发·路径过滤:仅文件变更触发·标签过滤:仅特定标签触发on:push:paths:-'src/**'

#

仅当

src

目录下文件变更时触发on:push:t

ags:-

'v1.*on

:push:branches:[main,'releases/**']持续集成与部署:GitHub

Actions工作流语法419jobs:deploy:runs-on:ubuntu-latestif

:github.ref=='refs/heads/main'#

仅在main

分支上执行steps:-run:echo"Deployingtoproduction..."env

:PYTHON_VERSION:‘3.9’#

环境变量steps:-name:Printbranchnamerun:echo${{github.ref}}#

输出当前分支jobs:deploy:{

needs:build,..

}

#等待build

完成2.任务和步骤配置·任务依赖:needs控制执行顺序持续集成与部署:GitHubActions工作流语法·条件执行:if

控制任务/步骤是否运行·

环境变量与上下文:动态获取信息420steps:-uses:actions/

cache@v3

#缓存依赖with:key:${{runner.os}}-pip-${{hashFiles('requirements.txt')}}path:~/.cache/pipsteps:-uses:actions/checkout@v3#检出代码-uses:actions/setup-python@v4

#配置Pythonwith:{python-version:'3.9'}steps:-uses:./.github/actions/my-action#引用本地Action3.Actions的使用·

官方Actions:

基础工具类持续集成与部署:GitHubActions工作流语法·

社区Actions:

功能扩展(如缓存)·自定义Actions:

本地/私有功能421jobs:test:runs-on:${{matrix.os

}}strategy:m

tSri:x[u:buntu-latest,windows-latest]python-version:['3.8','3.9','3.10']steps:oa-uses:actions/setup-python@v4with:{python-version:${{matrix.python-version}}}-run

:pytest4.矩阵构建·多环境并行测试(操作系统+版本组合)持续集成与部署:GitHubActions工作流语法4226.安全与权限管理#密钥管理:用secrets

存储敏感信息steps:-run:deploy.shenv:{DEPLOY_KEY:${{secrets.PRODUCTION_KEY}}}#最小权限原则:限制工作流权限permissions:contents:read

#仅允许读取仓库内容issues:write#

允许写入问题ste-

:es:actions/cache@v3with:path:~/.cache/pip

#

缓存路径key:${{runner.os}}-pip-${{hashFiles('requirements.txt')}}usps5.缓存与依赖管理·

使

用actions/cache减少依赖安装时间持续集成与部署:GitHub

Actions工作流语法23steps:-name:

发送邮件通知ru

:cho"Workflow完成!"

|mail-s

“状态通知”${{secrets.EMAIL_RECIPIENT}}env:SMTP_SERVER:${{secrets.SMTP_SERVER}}EMAIL_USER:${{secrets.EMAIL_USER}}EMAIL_PASSWORD:${{secrets.EMAIL_PASSWORD

}}en7.集成通知工具·与

Slack/Email

集成,实时反馈结果持续集成与部署:GitHub

Actions工作流语法424接下来可以打开头歌平台的课程,通过一个简单的案例实践,来体会开源代码管理与持续集成:第5章节:开源代码管理与持续集成开源代码管理与持续集成是现代软件开发中至关重要的环节,旨在提高代码质量、协作效率和交付速度。本章详细讲解开源代码管理的内容,涉及代码版本控制、问题跟踪(Bugs/lssues

管理)和发布说明(Release

Note)的规范化。通过问题跟踪系统(如GitHub

Issues)帮助团队记录和解决缺陷,确保项目健康发展。发布说明的规范化则增强了版本更新的透明度和用户信任。持续集成(CI)

通过自动化构建、测试和部署流程,确保代码的快速迭代和高质量交付。

GitHub

Actions

、Travis

CI和Jenkins

等CI工具为开源项目提供了灵活且强大的自动化支持,帮助开发者快速发现并修复问题,减少人工干预

。开源代码管理与持续集成对开源生态发展的意义重大。首先,它们降低了参与门槛,使得更多开发者能够高效协作,推动了开源项目的快速迭代和创新。其次,通过规范化的代码管理和自动化流程,开源项目的质量和稳定性得到显著提升,增强了用户和企业的信任与依赖。此外,持续集成的普及促进阅读全文3-

1

GitHub

Actions实现自动化测试与持续集成

ō

实验数13-2GitHubActions

自动部署静态网站到GitHubPages实验数1实验数13-4Jenkins实现自动化测试和持续部署(CI/CD)

实验数1课程链接:

https://www.educoder.net/paths/krytlieb实践:简介25实践项目1:

使

GitHub

Actions

实现自动化测试26任务目标通过本任务,你将学会:1.

创建基本的GitHub

Actions工作流配置文件2.

触发工作流运行并观察其执行过程3.

验证工作流是否成功执行任务要求你需要完成以下核心操作:1.创建一个GitHub仓库2.

准备一个python项目3.

创建并编写工作流配置文件(ci.yml)4.

推送代码,触发工作流并验证测试结果5.

在头歌平台进行测评实践项目:使用

GitHub

Actions

实现自动化测试427步骤1-创建仓库1.

登录你的GitHub

账号2.

击New

repository(新建仓库)3.设置仓库信息:·

名:github-actions-practice

(可自定义)·

公开性:Public

(必须公开!)·

描述:我的第一个GitHubActions实践

4.

点击

Create

repository实践项目:使用

GitHub

Actions

实现自动化测试428my-python-project/

.github/workflows/#工作流文件目录——ci.yml

calculator.py

#被测试的代码

test_calculator.py

#测试代码

requirements.txt

#

项目依赖(可选)步骤2-准备Python项目创建一个标准的Python项目结构:实践项目:使用

GitHub

Actions

实现自动化测试429import

pytestfrom

calculator

import

add,multiplydef

test_add():assert

add(2,3)==5assert

add(-1,1)==0def

test_multiply():assert

multiply(3,4)==12assert

multiply(2,0)==0def

add(a,b):returna

+bdef

multiply(a,b):return

a*b实践项目:使用

GitHub

Actions

实现自动化测试示例代码内容calculator.py

(被测试的功能模块)步骤2-准备Python项目test_calculator.py(单元测试)430步骤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:

安装依赖ru

:ython-m

pip

install--upgrade

pippipinstall

pytest-name:

运行测试run:pytest

-Vpn工作流步骤解析1.

检出代码:获取仓库代码到虚拟环境2.设置Python:

配置指定版本的Python环境3.安装依赖:安装测试所需的包

(pytest)4.运行测试:执行pytest命令,-V参数显示详细结果实践项目:使用

GitHub

Actions

实现自动化测试431测试通过(成功):状态为绿色对勾日志中显示:=====

PASSED=====

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

FAILED===明确指出哪个测试用例失败及原因1.将所有文件推送到GitHub

仓库

2.

点击顶部的Actions

标签页3.

选择Python

单元测试工作流4.

查看运行状态和详细日志步骤4-触发并验证工作流

如何判断测试结果?实践项目:使用

GitHub

Actions

实现自动化测试43203569b7a

main查看构建详情python-ci.ymlon:pushbuild-and-test在仓库页面点击Actions

查看构建结果Re-runtriggered46minutesago实践项目:使用

GitHub

Actions

实现自动化测试QType7to

search中Wiki①Security区InsightsSettingsRe-runall

jobs④Latest#2手动重新构建Artifacts←Python

CI

Pipelineupdate

#2n

Summarybuild-and-testRundetailsUsageWorkflow

file结果展示如图<>Code

!

。Pull

requests

[

◎Actions

由4Totalduration16sStatusSuccess33步骤5-尝试一个失败的案例1.

修改calculator.py中的add

函数,使其返回错误结果2.提交并推送代码3.观察工作流运行状态变为失败4.查看日志,学习如何阅读错误信息def

add(a,b):return

a*b#错误的实现!实践项目:使用

GitHub

Actions

实现自动化测试434步骤6-提交任务1.确保最后一次工作流运行成功(绿色对勾)2.复制你的仓库地址:/你的用户名/你的仓库名

3.在头歌平台提交该链接实践项目:使用

GitHub

Actions

实现自动化测试435实践项目2:

过GitHub

Actions自动部署静态文档到GitHub

Pages36实践项目:通过GitHub

Actions自动部署静态文档到GitHub

Pages任务目标本次实践项目旨在让大家掌握使用GitHub

Actions实现静态网站

(MkDocs

文档)的自动化构建与部署,

最终通过GitHub

Pages

托管可访问的文档网站,具体目标如下:1.

搭建MkDocs

文档项目结构2.配置GitHub

Actions

工作流实现自动部署3.

验证部署结果,确保文档网站可访问任务步骤总览本次实践任务共分为6个核心步骤,将带领大家从0到1完成静态文档的自动化部署:1.

创建GitHub

仓库并初始化项目2.

编写文档内容3.

配置MkDocs4.配置GitHub

Actions自动部署工作流5.

配置仓库并触发部署6.

提交任务437my-docs/—docs/#存放Markdown

文档(必填)十

index.md#主页(必填)—

about.md#关于页面(必填)—guide.md

#

使用指南(必填)api.md

#API参

考(

).github/#

工作流配置目录(必填)—workfdl

sl

y.yml

#

自动化部署工作流配置(必填)mkdocs.yml

#MkDocs

配置文件(必填)README.md#项目说明(可选)epow实践项目:通过GitHub

Actions自动部署静态文档到GitHub

Pages步骤1-创建GitHub

仓库并初始化项目1.1新建GitHub

仓库1.2克隆仓库到本地并创建目录结构1.克隆仓库:使用gitclonehttps://githu/你的GitHub用户名/你的仓库名.git命令,将

仓库克隆到本地2.按以下结构创建文件和目录(必填项需确保存在):38实践项目:通过GitHub

Actions自动部署静态文档到GitHubPages步骤2-编写文档内容需为docs目

4

个Markdown

文件填充指定内容,确保文档可正常跳转和展示:2.1

docs/index.md

(

)#欢迎使用MkDocs这是一个示例文档,使用**MkDocs**进行构建。-

[关于](about.md)-

[使用指南](guide.md)-[API

参考](api.md)作用:文档网站的首页,包含到其他页面的跳转链接439#使用指南1.

编写Markdown文档2.提交代码到GitHub3.GitHub

Actions自动构建并部署作用:说明文档项目的使用流程#关于本项目本项目使用MkDocs

生成技术文档,并通过

GitHub

Pages

自动部署。#API

参考这里是

API

参考文档示例。实践项目:通过GitHub

Actions自动部署静态文档到GitHub

Pages作用:展示API

相关文档示例(可根据实际需求扩展)作用:介绍项目的核心信息和技术栈2.3docs/guide.md

(使用指南)2.2docs/about.md

(关于页面)2.4docs/api.md(API

参考)440实践项目:通过GitHub

Actions自动部署静态文档到GitHub

Pages步骤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

主题需后续安装,无

需手动下载441实践项目:通过GitHub

Actions自动部署静态文档到GitHub

Pages步骤4-配置GitHub

Actions自动部署工作流4.1创建deploy.yml

件在.github/workflows/

目录下创建deploy.yml文件,定义自动化部署的触发条件、运行环境和执行步骤,内容如下:name:Deploy

MkDocs

to

GitHub

Pages#工作流名称(自定义)on:#

触发条件push:branches:-main

#

仅在main

分支推送代码时触发paths:-'docs/**'#

仅当docs

目录下文件变化时触发-'mkdocs.yml'#

仅当

MkDocs配置文件变化时触发jobs:#

工作流任务deploy:runs-on:ubuntu-latest#运行环境:Ubunt

u

最新版steps:

#

任务执行步骤-name:

检出代码#步骤1:拉取GitHub

仓库代码4实践项目:通过GitHub

Actions自动部署静态文档到GitHub

Pages步骤5-配置仓库并触发部署5.1创建gh-pages

分支(部署目标分支)1.进入GitHub

仓库页面,点击顶部

“Branches”2.在"Find

or

create

abranch”输入框中输入ghs,点击

“Createbranch:ghs

from

'main'"3.

说明:该分支无需手动添加内容,后续GitHub

Actions会自动向该分支推送静态文件5.2开启工作流权限(关键步骤)1.

进入

GitHub

仓库页面,点击顶部

“Settings”2.在左侧导航栏中找到并点击

“Actions”→“General”3.

滚动到

“Workflow

permissions”区域:·

选择"Read

and

write

permissions"(工作流需读写权限以推送文件到gh-pages

分支)·勾选

“Allow

GitHubActions

to

create

and

approve

pull

requests”4.

点击

“Save”保存设置443实践项目:通过GitHub

Actions自动部署静态文档到GitHub

Pages步骤5-配置仓库并触发部署5.3提交代码并触发部署在本地项目根目录打开终端,执行以下命令提交代码:#1.将所有文件添加到暂存区git

add

.#2.提交代码(备注信息可自定义)gitcommit-m"初始化MkDocs项目并配置GitHubActions"#3

.

推送到GitHub的main分支git

push

origin

main444实践项目:通过GitHub

Actions自动部署静态文档到GitHub

Pages步骤5-配置仓库并触发部署5.4验证部署结果1.查

态:进入GitHub仓

部“Actions”,

查看名为

"DeployMkDocstoGitHub

Pages”

的工作流是否显示"Success"

(绿色对勾)2.访问文档网站:工作流成功后,等待1-2分钟

(GitHub

Pages

更新需时间),访问地址:https://

的GitHub用户名.github.io/你的仓库名/·

示例:若用户名为

“testuser”,仓库名为

“my-docs”,

则访问地址为https://testuser.github.io/my-docs/445我的技术文档首页关于指南API欢迎使用MkDocs这是一个示例文档,使用MkDocs

进行构建。·

于●

使用指南·

API

参考实践项目:通过GitHub

Actions自动部署静态文档到GitHub

Pages结果展示如图我的技术文档

Search446实践项目:通过GitHub

Actions自动部署静态文档到GitHub

Pages步骤6-提交任务(环境配置与评测)6.1配置实验环境(避免报错)打开实验环境终端,执行以下命令安装依赖包6.2提交评测在实验平台中,输入以下信息提交任务:·

GitHub账户名·

Git

Hub

Token

(需提前准备,确保拥有仓库操作权限)·

仓库链接(格式:/你的GitHub

用户名/你的仓库名.git)#升级requests、urllib3、chardetpip

install

--upgrade

requests

urllib3

chardet#安装pyyaml(用于解析配置文件)pip

install

pyyaml47实践项目3:

使

用GitHu6Actione实现自动化部署web项

目48一、项目核心目标掌握从「代码开发」到「自动化上线」的全流程,具体实现:1.基

于GitHub

Actions

搭建CI/CD

流水线,自动完成代码拉取、依赖安装、自动化测试2.实现代码推送后,自动部署Flask

项目到头歌服务器3.用Supervisor

理Flask

进程,确保应用稳定运行4.

验证部署结果,确保应用可正常访问二、

实践价值1.告别「手动上传代码、手动重启服务」的低效流程2.理解自动化测试与部署的核心逻辑,适配各类Web

项目3.掌握服务器进程管理、

SSH

密钥配置等运维基础技能4.

通过本次实践,实现了「

一次配置,永久自动化」,大幅提升项目迭代效率!实

目:

使

用GitHub

Actions实现自动化部署web

目449实践项目:使用GitHub

Actions实现自动化部署web项目三、整体流程概览本次实践分为4个核心阶段,按「准备→手动验证→

自动化部署」逐步推进:1.前置准备:服务器环境、

GitHub仓库、SSH

密钥配置2.项目准备:搭建Flask

项目结构、编写核心代码与测试用例3.

手动部署验证:首次手动部署项目,确保服务器环境与进程管理正常4.自动化部署实现:配置GitHub

Actions

工作流,实现「代码推送即部署」自动化部署:ssh链

接服务器,拉取最

新代码,重启服务自动化测试:安装

依赖,执行测试用例代码推送到GitHub

main分支GitHubActions触发工作流访问链接验证结果450第一部分:

前置准备工作1.服务器与GitHub

仓库·已拥有服务器,获取SSH

访问信息,可以使用ssh在本地链接服务器·

新建公开仓库2.

SSH

密钥配置(无密码登录)·

让GitHubActions(虚拟环境)能无密码通过SSH

连接头歌服务器,避免明文传输密码

3.

头歌服务器环境安装·

为后续项目运行和代码拉取提供环境支持第二部分:

项目准备准备一个python-web项目,可参考头歌平台上提供的项目目录结构和文件内容

将项目推送到main分支实践项目:使用GitHub

Actions实现自动化部署web项目451第三部分:手动部署项目首次手动部署,验证服务器环境、代码拉取、依赖安装是否正常,为后续自动化部署铺路第四部分:

自动化部署实现1.

配置

GitHub

Secrets·存储敏感信息

(SSH

私钥、服务器IP),

避免硬编码到cicd.yml中(安全风险)2.配置

cicd.yml

工作流·

当代码推送到main分支时,触发以下流程:1.拉取代码→2.配置Python

环境

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

→4.SSH

连接服务器部署3.

测试自动化流程·自动化流程闭环:代码推送→

自动测试→

自动部署→结果验证实践项目:使用GitHub

Actions实现自动化部署web项目452(1)什么是Jenkins?·开源持续集成与持续交付

(CI/CD)工具,专注于自动化构建、测试、部署流程·核心优势:灵活性高(支持多技术栈)、可扩展性强(通过插件生态集成工具Jenkins持续集成与部署:Jenkins概述453(1)本地安装·

官网下载最新Jenkins

WAR包·

终端执行启动命令:

java-jarjenkins.war

(默认监听8080端口)·

浏览器访问:

http://IP:8080

进入配置页面(2)Docker

安装·

确保Docker

已安装并启动服务·

拉取镜像:

dockerpulljenkins/jenkins:lts·

创建数据卷mkdir-p~/jenkins_homechown1000:1000~/jenkins_home·

启动容器:

docker

run-d-name

jenkins-p8080:8080-p

50000:50000-v~/jenkins_home:/var/jenkins_home-

restart=always

jenkins/jenkins:lts·

浏览器访问:http://IP:8080进入配置页面·

获取初始密码:

docker

exec

jenkins

cat/var/jenkins_home/secrets/initialAdminPassword持续集成与部署:Jenkins

安装与配置454(3)Jenkins初

置安装完成后,需要进行一些基本的配置。需要配置的内容如下:·

访问http://IP:8080,

输入在终端输出的初始管理员密码·

选择安装推荐插件,建议安装Git

、Pipeline

等常用插件·

创建管理员账户,设置用户名、密码和邮箱地址·

进入Jenkins

仪表盘,检查安装是否成功。安装成功后如图所示Set

up

an

agentConfigure

a

cloudLearn

more

ahout

distrihuted

builds欢迎来到Jenkins!This

page

is

where

your

Jenkins

jobs

will

be

displayed.To

get

started,you

can

set

up

distributedbuildsorstartbuildingasoftware

project.Startbuildingyoursoftwareproject持续集成与部署:Jenkins安装与配置Create

a

job构建执行状态O/2∨4构建队列队列中没有构建任务Setupa

distributed

build55ViewsMy□持续集成与部署:Jenkins

用户管理与权限控制Jenkins提供了灵活的用户管理功能,支持多用户协作和权限控制。并且,为了提高安全性和管理效率,

Jenkins

允许设置不同级别的用户权限创建管理员账户1.

路径:Manage

Jenkins

→Manage

Users→Create

User2.输入用户名、密码、邮箱完成创建角色管理与权限控制1.

安装插件:Role

Strategy

Plugin

(

:Manage

Plugins→Available搜索安装)2.

开启策略:

ManageJenkins→ConfigureGlobalSecurity→Authorization→Role-BasedStrategy3.

配置角色:

Manage

and

Assign

Roles创建角色(管理员、开发者、只读用户)并分配权

限4.

分配用户:将用户关联至对应角色,实现细粒度权限控制456组件定义与作用Job基本执行单元,定义构建/测试/部署流程,支持自

由风格、流水线等类型Pipeline高级CI/CD解决方案,通过代码定义流程,支持多阶段、并行执行、条件判断(Groovy编写)Node工作节点,分主节点(Master,负责任务调度)和从节

点(Agent,执行构建任务),支持分布式构建持续集成与部署:Jenkins

核心组件457自由风格任务(适用于简单场景)1.创建:NewItem→

输入名称

选择Freestyle

project→OK2.

配置:·General:设置描述、构建触发器;·Build:添加构建步骤(如执行Shell

脚本安装依赖、运行测试)3.

验证:保存后手动触发构建,检查结果参数化构建

(灵活配置场景)1.

开启:在任务配置页勾选This

project

is

parameterized2.

添加参数:点击AddParameter,

选择类型(如

StringParameter、Boolean

Parameter)3.使用参数:在构建步骤中通过Shell

脚本引用参数(如$PARAM_NAME)实现动态逻辑持续集成与部署:Jenkins

任务与流水线:构建自动化流程(1)任务创建与配置58pipeline

{agent

any

//使用任意节点environment{PYTHON_ENV='/usr/bin/python3'}//

全局环境变量stages

{//

阶段定义stage('Checkout'){steps

{git

'仓库地址'}}stage('InstallDependencies'){steps{sh'${PYTHON_ENV}-mpipinstall

-r

requirements.txt'}}discover'}}stage('Deploy'){steps

{sh'./deploy.sh'}}post

{always

{cleanws()}}//构建后清理声明式流水线

(简洁易读,适合多数场景)语法结构清晰,固定格式定义流程:持续集成与部署:Jenkins

任务与流水线:构建自动化流程(2)Pipeline流水线:代码定义自动化流程stage('Run

Tests'){

steps

{sh

'${PYTHON_ENV}-m

unittestnode

{

//

绑定节点stage('Checkout'){git

'仓库地址'}stage('InstallDependencies')

{

sh

'python3-m

pip

install

-rrequirements.txt'}stage('Run

Tests'){sh'python3

-m

unittest

discover'}stage('Deploy'){sh'./deploy.sh'}脚本化流水线

(高自定义,适合复杂场景)基于Groovy

脚本实现灵活逻辑:持续集成与部署:Jenkins

任务与流水线:构建自动化流程460触发器核心作用构建触发器是Jenkins

实现任务自动化执行的关键配置,通过预设规则触发任务,无需人工干

预,核心价值包括:1.

实现代码提交后自动构建,缩短开发反馈周期2.

支持定时执行重复性任务,减少人工操作成本3.

提升开发流程自动化程度,提高整体研发效率持续集成与部署:Jenkins构建触发器配置461常见构建触发器类型1.定时构建:按时间计划触发基于Cron

表达式定义时间规则,Jenkins

按照预设计划自动执行任务,适用于“定期执行”的

场景(如每日构建、每小时巡检)。配置步骤

(Jenkins

端)1.

进入目标Job的配置页面,找到“构建触发器”模块2.

“Build

periodically”(定期构建)选项3.在

“Schedule”输入框中填写Cron

表达式(如H/15****)4.点击“保存”,Jenkins

会自动按计划执行任务持续集成与部署:Jenkins构建触发器配置4622.SCM触发:代码变更时触发SCM(Source

Code

Management,源码管理)触发指当代码推送到版本控制系统(如Git

、SVN)

时,自动触发Jenkins

任务执行,通常与Webhook

结合实现“实时构建”,适用于“代码变更

后立即验证”的场景(如提交代码后自动跑测试、打包)。配置流程(分Jenkins

端+代码仓库端)步骤1:Jenkins

端配置1.进入Job

配置页面,在“源码管理”模块选择

“Git”,填写仓库地址(如

https://github.com/xxx/xxx.git)和需要监听的分支(如*/main)2.

进入“构建触发器”模块,根据仓库类型勾选对应选项:·

若为GitHub

仓库:勾选“GitHub

hook

trigger

for

GITScm

polling”(

赖Webhook

若为其他

Git

库(

GitLab

、Gitee):

“Poll

SCM”(Jenkins

定期检查代码变

更,需填写Cron

表达式,如H/5****

表示每5分钟检查

次)持续集成与部署:Jenkins构建触发器配置463步骤2:代码仓库端配置(以GitHub

为例)1.进入GitHub

仓库页面,点击顶部"Settings"→左侧

“Webhooks”→

"Add

webhook"2.在“Payload

URL”中

入Jenkins

的Webhook

地址,格式为:

http://<Jenkins

服务器IP

域名>/github-webhook/(如

http://00:8080/github-webhook/)3.“Content

type”选择applicati

温馨提示

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

评论

0/150

提交评论