linux我的openEuler社区参与之旅个人文章

最直观的方式是访问openEuler官方repo,看看发布件。

另外一种方式,就是访问openEulerOBS上的构建工程,可以知道每个版本里包含哪些软件,当前的构建状态是啥样的。

openeuler源码仓库管理:

openeuler/community仓库下,以下三个文件比较重要:

通过修改这几个文件,来新增、删除软件包仓库,来给相应的软件包划分sig,从而实现sig的owner对软件包的权限管理。

SIG就是SpecialInterestGroup的缩写,openEuler社区按照不同的SIG来组织,以便于更好的管理和改善工作流程。

openEulerSIG维护策略

上图是openEuler社区开发指引图。

全景图中涉及的规范:

阶段动作规范或指导引入

指导:《如何申请SIG》--待输出--

规范:《软件包升级选型规范》--待输出--

规范:《openEuler软件包随版本发布规范》--待输出--指导:《如何将软件包加入openEuler发布版本》--待输出--

建议:

包括但不限于:

结合前面的开发者全景图,可以分解成以下动作:

注意事项:

检视代码:

对于贡献者,为了使您的提交更容易被接受,您需要:

stateDiagram

[*]-->查找sig列表

查找sig列表-->加入SIG:已存在

查找sig列表-->按模板提交PR:不存在

按模板提交PR-->订阅邮件,申请议题

订阅邮件,申请议题-->TC评审

TC评审-->合入PR:评审通过

TC评审-->按模板提交PR:不通过

合入PR-->[*]

加入SIG-->[*]

SIG列表:gitee.com/openeuler/community/tree/master/sig

TC邮件列表:gitee.com/openeuler/community/tree/master/zh/technical-committee

PR模板:gitee.com/openeuler/community/tree/master/sig/sig-template

提交示例:gitee.com/openeuler/community/pulls/398

找到您感兴趣的SIG或项目

找到您感兴趣的SIG组,可以帮助您在正确的地方提出问题,并得到更快的社区响应。

[*]-->查找软件

查找软件-->[*]:已存在

查找软件-->引入软件:不存在

引入软件-->确定所属SIG

确定所属SIG-->SIG是否存在

SIG是否存在-->创建SIG兴趣小组:不存在

SIG是否存在-->对应SIG下添加仓库:存在

对应SIG下添加仓库-->评审合入

评审合入-->[*]

当前发现openEuler社区缺少你需要的软件时,你可以尝试动手为社区贡献软件包。这里不再赘述OS是如何由linux软件包组成的,以及如何制作一个rpm包。这里着重讲解贡献软件包的流程。

原本是作为发行版openSUSE专用的rpm打包的平台,后续扩展为面向多发行版、多架构、多格式的打包发布平台。

与koji的不同

与koji只管理包(包括源码包与二进制包)仓库不同,OBS同时管理着源码与包两个仓库。koji是从一个包编译完成后开始接手,根据包的NVR(Name-Version-Release)确定包的位置,在编译验证后入库保存。而OBS是从源码阶段开始管理,它拥有自己的包版本标记与changelog日志。OBS可以像git一样保存源码的历史版本,对源码进行分支管理。并生成各版本的二进制包与源码包。

换句话说,OBS可以同时实现koji和git的功能。>OBS接受源码的格式与git普遍的保存格式并不相同,所以OBS无法完全取代git。

OBS可以生成rpm、deb等格式的包,而koji只适用于rpm格式。

方便测试框架、构建工程调用。

安装osc

这里以Fedora30为例:

执行dnfinstallosc命令安装osc。

配置openEuler的OBS

有很多方法可以将osc链接至openEuler外网的OBS:

注册OBS账号

oschelp是帮助指南。类似git命令。

ListExistingContentontheServer

oscls#listprojects

osclsApache#listpackagesinaproject

osclsApacheflood#listfilesofpackageofaproject

CheckoutContent

osccoApache#entireproject

osccoApacheflood#apackage

osccoApachefloodflood.spec#singlefile

UpdateaWorkingDdirectory

oscup

oscup[directory]

oscup*#fromwithinaprojectdir,updateallpackages

oscup#fromwithinaprojectdir,updateallpackagesANDcheckoutallnewlyaddedpackages

UploadChangedContent

oscci#currentdir

oscci[file1][file2]#onlyspecificfiles

oscci[dir1][dir2]...#multiplepackages

oscci-m"updatedfoobar"#specifyacommitmessage

ChecktheCommitLog

osclog

Showthestatus(whichfileshavebeenchangedlocally)

oscst

oscst[directory]

Ifanupdatecannotbemergedautomatically,afileisin'C'(conflict)state,andconflictsaremarkedwithspeciallines.Aftermanuallyresolvingtheproblem,useoscresolved*FILE*.

MarkfilestobeAddedorRemovedontheNextCheckin

oscaddfoo

oscrmfoo

AddallNewFilesinLocalCopyandRemovesallDisappearedfiles

oscaddremove

Generateadifftoviewthechanges

oscdiff[file]

ShowtheBuildResultsofthePackage

oscresults

oscresults[platform]

ShowtheLogFileofaPackage

(youneedtobeinsideapackagedirectory)

oscbuildlog[platform][arch]

在本地机器上构建

oscbuild[platform][arch][specfile][--clean|--noinit|...]

以abuild用户进入chroot环境,方便调试

oscchroot[platform][arch]

配置Project

两种方法:网页操作、命令行操作

在obs主页点击右上角

依次进入HomeProject->Repositories->AddfromaDistribution。

按上图所示填写基础配置,并在Name栏填写喜欢的名字。

在选择后后退至Repositories界面,可以看到如下图所示的环境:

执行命令:oscmetaprj-e[project名],会看到类似如下文本:

其中,1.repository标签为仓库标签,可添加此项添加编译时的基础环境2.Path标签为可用包路径标签,需手动添加发行版包路径。如需要额外依赖,也可以单独添加。3.Arch标签为编译架构,可同时添加多个。

例如:

`xml

//此为额外添加依赖

aarch64

armv7l//此为多架构选项

`

新建包

进入Project目录:cd[project名]

新建Package:oscmkpac[package名]

进入Package目录并将下载源码以【tar包、所有patch、spec文件、其他source文件】格式放置:

向新创建的package中添加以上文件:oscadd*

将更改上传至服务器:osccommit

在这里可以注明本次上传的简短介绍,用:wq保存并退出

之后就可以在网页上等待编译并查看结果了。

查看包状态与下载包

您可以在Project与Package主页右侧看到当前编译状态

您可以点击_编译平台->Gotodownloadrepository_到达编译仓库,获得此Project的repo源与所有编译成功的package。

更新包

进入project文件夹:cd[project名]

更新本地代码为最新代码:oscup

进入package目录,使用oscadd命令将新文件添加到package,修改spec文件后使用osccommit命令上传新版本。

分为两部分:

源服务就像是系统中的函数,我们可以通过运行脚本调用它;而脚本就是Package中的_service文件。

创建使用源服务的Package

编辑_service文件

最基础的_service文件将会如下所示:

git

git://github.com/cs2c-fu/hi.git

xz

*.tar

最外层为标记,在内则为一个个函数,而则为``函数的参数。

为了实现“利用源服务直接获取git源码并编译成包”这个目标,

我们的_service应该类似于这样(以下格式请根据具体情况选择合适的顺序):

helloworld

VERSION.git

.

/.spec/.patch

下面将对所需的服务逐一进行介绍:

tar_scm会将链接url中的仓库下载下来并打包为tar文件,文件包命名格式为:

可选参数:

在OBS官方服务器中,tar_scm服务由于在空间利用率上表现不佳,已被obs_scm、tar服务取代,但openEuler的外网OBS暂时还不支持obs_scm,所以这里选择tar_scm。

extract_file可以从tar包中提取文件,具体需要提取什么文件取决于git仓库中的文件格式。

一般来说我们可以将打包需要的内容分为四大类:

对于git仓库来说,一般会将所有文件放到仓库的根目录。

此时我们需要将spec文件、patch文件、源文件提取出来,源码则留在tar包中等待之后的服务将其压缩打包。

对于OBS仓库来说,为了方便OBS系统使用,人们已经对源码进行压缩打包。

此时我们需要将所有文件提取出来并省略之后的压缩打包环节。

参数:

recompress会对指定文件进行压缩

会将spec文件中的Version替换为obs_scm时的

[Version].[commit_timestamp]

spec文件中可以以

helloworld-%{version}.tar.xz

格式定位源码包。

等待编译完成

当状态显示为blocked时,表明源服务正在运行。当源服务运行完毕时会正常开始打包过程。

SourceServices在实际场景中的应用

首先,我们在git仓库中以:spec文件、patch文件、源码tar包**的格式上传并管理源码。

在OBS系统中建立对应包并以一下格式定义_service文件:

ioprocess

/

由于我们已经很好的在git仓库中设置了存储格式,此时我们只需将所有文件下载并提取即可。

在这之后,OBS系统会帮助我们完成编译与打包的环节。

在写此文时,OBS系统还不支持gitee格式的webhook,所以以下内容为使用github仓库实现。

obs可以创建令牌(token),当令牌被触发时,OBS会运行源服务。

将网址与令牌添加到git仓库的webhook列表中,就可以在git仓库中实现触发源服务,进而更新OBS中的包版本。

具体步骤:

创建专属包的OBSToken(OBS令牌):

osctoken--create

命令将生成仅对Project/Package生效的token。

打开git仓库网址(以github为例):

打开仓库->Setting->Webhooks

点击左上方的Addwebhook。

在PayloadURL中以:

为格式填入。

在Secret中填入令牌秘匙,按需求选择trigger类型,保证Webhook为Active状态。

之后点击Addwebhook即成功实现。

可尝试触发trigger以验证成果。

添加小助手openEuler,加入openEuler交流群

openEuler是由开放原子开源基金会(OpenAtomFoundation)孵化及运营的开源项目

THE END
1.MicrosoftProject替代工具盘点:11款高效项目管理软件以Trello为例,它提供了一个免费的基本版本,满足大多数团队的基础项目管理需求。即使是付费版本,它的价格也比Microsoft Project便宜得多,且支持灵活的付费方案,适合不同规模的团队。而Asana虽然有免费的基础版,但它的功能扩展性非常强,提供了丰富的协作和集成功能,对于预算有限的团队来说,也是一项值得投资的工具。 https://blog.csdn.net/xgggyxgs/article/details/144367517
2.microsoftproject2013中文版32&64绿色安装步骤激活+破解——Project 2013,作为项目管理领域的革新工具,以其精细化的流程控制能力,备受推崇。该软件将易用性、强大功能与高度灵活性完美结合,助力管理者高效规划、掌控项目的时间https://www.jianshu.com/p/e7f0d24ea372
3.MicrosoftProject2021中文版软件免费安装包下载及安装教程!Microsoft Project 2021中文版软件免费安装包下载及安装教程!,project是项目管理工具软件,作用是可以快速、准确地创建项目计划;可以帮助项目经理实现项目进度、成本的控制、分析和预测;可产生关键路径日程表,关键链以甘特图形象化;可以辨认不同类别的用户,对专案、https://blog.51cto.com/u_16460456/11558799
4.Project2007破解版下载MicrosoftOfficeProject2007Microsoft Office Project 2007 用户评分:8.4 用户推荐: 206 897 官方网站:微软 Project 2007将可用性、功能和灵活性完美地融合在一起,project 2007提供了一些可靠的项目管理工具,以便可以更加经济有效地管理项目。zol提供Project 2007破解版下载。 Project 2007破解版下载软件截图https://xiazai.zol.com.cn/detail/43/428469.shtmlhttp
5.googleplaystore? install on windows in-app purchases wuthering waves, now available on pc get started on google play games beta wuthering waves hk kuro games limited ? install on windows in-app purchases experience our top picks on pc download "google play games" and get started三国志?战略版(港澳https://play.google.com/
6.CHIProject专区CHIProject中文版下载汉化攻略视频期待 打开游民App,点击免费领取游戏详情 短评0 评测0 攻略 资讯 专区 我的点评添加点评 登录后点评 内容简介 Every 7 years, the prestigious King's Invitational is held in the nation of Lyssidia. Sponsors seek out only the most promising gladiator candidates to rise to the occasion. The prize? https://wap.gamersky.com/ku/chi-project/
7.SeggerEmbeddedStudio,试试这个新嵌入式编译器环境!使用SEGGER Embedded Studio(简称SES)据说是越来越多,毕竟,你们都收钱我免费。最近我用dw1000上开发一些定位通信项目,所以也开始用了这个SES平台,但是由于很久没搞这些了,https://www.eet-china.com/mp/a50634.html
8.TheCentOSProjectCommunity-driven free software effort focused around the goal of providing a rich base platform for open source communities to build upon. CentOS Stream Continuously delivered distro that tracks just ahead of Red Hat Enterprise Linux (RHEL) development, positioned as a midstream between Fedora Linux https://www.centos.org/
9.DevProject Samples Project Activity 2 months ago Emma Oliviaposteda commentondiscussion General Discussion endl This is used in C++ to insert a new line and flush the output buffer. Flushing means it forces the program to write all the buffered output to the console immediately. This can be usefulhttps://sourceforge.net/projects/orwelldevcpp/
10.AppleDeveloperThere’s never been a better time to develop for Apple platforms.https://developer.apple.com/
11.mediaplayerclassicHome·MPCAll around player MPC-HC can also be used as DVB player. RSS Feed Latest news v1.7.13 is released and farewell July 16, 2017XhmikosR v1.7.13, the latest, and probably thelastrelease of our project… v1.7.11 is released March 06, 2017XhmikosR http://mpc-hc.org/
12.Dictionary.comMeanings&DefinitionsofEnglishWordsThe world’s leading online dictionary: English definitions, synonyms, word origins, example sentences, word games, and more. A trusted authority for 25+ years!https://dictionary.com/
13.项目游戏时间怎么下载ProjectPlaytime下载方法介绍有玩家想知道项目游戏时间怎么下载,这次带来Project Playtime下载方法介绍,一起来看看吧,希望能帮助到大家。 下载方法介绍 《项目:游戏时间》英文版下载>>> 游戏已在12月12日上线steam平台,游戏免费游玩,玩家可以在steam平台进行游戏。 商店页面 》》》Steam商店页面点击此处《《《 下载方法 登录商店页面后,点击开始游https://gl.ali213.net/html/2022-12/971423.html
14.大型IC设计中心的IT环境[/project2:/secret] manager1 = 以上配置允许user1,user2,manager1,manager2访问project1的所有文件,并且都可以读写;user3,user4,manager2访问project2的所有文件可以读写,但是manager1只允许读写除了secret目录下的所有其他文件。 建立过程及基本使用 http://www.360doc.com/content/20/1215/18/39626951_951692946.shtml
15.今日头条扫码下载今日头条APP 看最新、最热资讯内容 热门视频 换一换 1 07:33 叙利亚的悲剧,经济崩溃与战争的双重打击 #叙利亚 #经济 #军事 1万点赞 80万次观看卢克文工作室 2 14:26 俄罗斯伊朗遭遇重大打击,叙利亚一夜变天为哪般?拜登中东埋大雷 1万点赞 https://www.toutiao.com/
16.安装Project如果你订阅了Project的基于云的解决方案之一,则你将看不到安装它的选项,除非你有分配的许可证。 如果你是负责分配许可证的 Microsoft 365 管理员,请参阅向用户分配许可证。 注意:Project Online 协作版 不包括 Project 的桌面版,因此不需要安装。 Project Standard 或 Project Professional: https://support.office.com/article/7059249b-d9fe-4d61-ab96-5c5bf435f281?wt.mc_id=O365_Comm_TS_Link