本发布指南主要受到Hipparchus发布指南和Orekit发布指南的启发。它列出了过去发布新版本Rugged所使用的步骤。如果有疑问,请咨询专家:Sébastien Dinot sebastien.dinot@csgroup.eu(有关网站问题)和Luc Maisonobe luc.maisonobe@csgroup.eu(有关其他问题)。
9A928E5485FBC44A2A4F9C2E9128808ECB6C9DED
如果需要帮助,请在Rugged论坛的开发部分提问。
一旦您拥有SonaType OSS账号,相应的凭据必须在$HOME/.m2/settings.xml
文件的servers
部分中设置,使用ossrh
作为id:
<servers>
<server>
<id>ossrh</id>
<username>连接到OSS网站的用户名</username>
<password>加密的密码</password>
</server>
</servers>
使用mvn -ep
生成加密密码。
Graphviz (dot)用于生成技术文档(静态网站)的图表。
在进行任何操作之前,请在持续集成网站上检查develop分支的状态是否正常:
如果有问题,请先修复警告和错误!
还需要在Gitlab CI/CD上检查develop分支的状态是否正常(即所有阶段都通过)。
发布将在专用分支上进行,而不是直接在主分支或develop分支上进行。因此,必须创建一个新分支,并用于其他所有操作:
git branch release-X.Y
git checkout release-X.Y
发布是更新maven插件版本的好机会。它们都集中在一个地方,在rugged/pom.xml
中的一组属性中,例如:
<rugged.spotbugs-maven-plugin.version>4.0.4</rugged.spotbugs-maven-plugin.version>
<rugged.jacoco-maven-plugin.version>0.8.5</rugged.jacoco-maven-plugin.version>
<rugged.maven-assembly-plugin.version>3.1.1</rugged.maven-assembly-plugin.version>
...
您可以使用http://search.maven.org/#search上的搜索功能找到插件的最新版本。所有属性的名称都遵循rugged.some-plugin-name.version
的模式,应该在Web表单中使用插件名称来检查可用版本。
请注意,在某些情况下,由于不兼容性,无法使用最新版本。例如,当插件最近没有更新并且与其依赖项的较新版本发生冲突时。
还要注意,某些插件使用可能需要更新的配置文件。这通常是maven-checkstyle-plugin
和spotbugs-maven-plugin
的情况。可能需要检查/checkstyle.xml
和/spotbugs-exclude-filter.xml
文件。
在提交这些更改之前,您必须检查一切是否正常运行。因此,请运行以下命令:
mvn clean
LANG=C mvn -Prelease site
如果出现问题,请通过更改插件配置来修复问题,或者回滚到插件的早期版本。
浏览生成的站点,从页面target/site/index.html
开始,检查是否正确呈现了所有内容。您还可以检查页面的内容。
当一切正常运行且生成的站点正常时,您可以提交更改:
git add rugged/pom.xml rugged/checkstyle.xml rugged/spotbugs-exclude-filter.xml
git commit -m "更新maven插件版本。"
完成src/changes/changes.xml
文件。
发布日期和描述通常在开发过程中仅设置为TBD
,必须设置为适当的值。此步骤中的发布日期只是一个猜测,大约在未来一两周内,以考虑到5天的发布投票延迟。
用描述版本发布的文本替换TBD
描述:说明它是一个次要版本还是主要版本,列出版本引入的主要功能等(请参见以前版本的描述示例)。
提交changes.xml
文件。
git add src/changes/changes.xml
git commit -m "为正式发布更新changes.xml。"
需要更新多个文件以考虑新版本:
文件名 | 用途 | 需要更新 |
---|---|---|
src/site/markdown/index.md |
站点首页 | 更新关于新功能的文本(参见 changes.xml 中的更改) |
src/site/markdown/downloads.md.vm |
下载链接 | 声明新版本,不要忘记日期 |
更新完文件后,提交更改:
git add src/site/markdown/*.md
git commit -m "为发布更新文档。"
pom.xml
文件包含库的版本号。在开发过程中,该版本号的形式为 X.Y-SNAPSHOT
。发布时,必须去掉 -SNAPSHOT
部分。
提交更改:
git add pom.xml
git commit -m "为正式发布删除版本号中的 -SNAPSHOT。"
根据 JDK 版本(Oracle、OpenJDK 等),可能会出现一些 JavaDoc 警告。通过运行以下命令确保没有 JavaDoc 警告:
mvn javadoc:javadoc
如果可能,使用不同的 JDK 版本运行上述命令。
当完成了所有前面的步骤后,本地 git 仓库保存了发布的源代码和构建文件的最终状态。必须对其进行标记并签署。请注意,在投票结束之前,标记只能用 -RCx
后缀进行签署,以表示发布候选版本。一旦投票成功,将在同一提交上放置没有 -RCx
后缀的最终标记(因此该提交将有两个标记)。使用以下命令进行标记和签署,将 -RCn
替换为发布候选版本号:
git tag X.Y-RCn -s -u 9A928E5485FBC44A2A4F9C2E9128808ECB6C9DED -m "版本 X.Y 的第 n 个发布候选版本。"
应使用以下命令验证标记:
git tag -v X.Y-RCn
当标记准备好后,必须将分支和标记推送到 Gitlab,以便每个人都可以审查:
git push --tags origin release-X.Y
静态网站是在本地生成的,使用以下命令:
mvn clean
LANG=C mvn site
当工作合并到develop
、release-*
或master
分支时,官方网站会自动更新到托管平台。
当这些设置已经完成后,通过运行以下命令来生成签名文件:
mvn deploy -DskipStagingRepositoryClose=true -Prelease
在生成过程中,maven会触发gpg,要求用户输入密码来访问签名密钥。如果maven没有提示您,请添加-Dgpg.passphrase=[密码]
命令执行完毕后,登录到SonaType OSS网站https://oss.sonatype.org/,检查暂存库中是否包含预期的带有关联签名和校验和的文件:
签名和校验和文件的名称类似,添加了扩展名.asc
、.md5
和.sha1
。
有时,部署到Sonatype OSS网站还会添加带有双扩展名.asc.md5
和.asc.sha1
的文件,实际上它们是签名文件上的校验和文件,没有任何用途,可以删除。
删除rugged-X.Y.source-jar*
,因为它们是rugged-X.Y-sources.jar*
文件的重复项。然后点击“Close”按钮。
在发起投票之前,需要对Rugged网站进行一次编辑。获取当前代码:
git clone https://gitlab.orekit.org/orekit/website-2015
切换到develop
分支,并编辑_data/rugged/versions.yml
,将新版本X.Y添加到列表中。
一旦修改推送到develop分支,测试网站将会更新
现在一切准备就绪,开发人员和PMC可以对发布进行投票。在论坛的Rugged开发类别中创建一个帖子,主题行的格式如下:
[VOTE] 从发布候选版本n中发布Rugged X.Y
内容的格式如下:
这是一个投票,目的是发布Rugged库的X.Y版本。
X.Y版本是一个维护版本。
X.Y版本的亮点包括:
- 功能1描述
...
- 功能n描述
发布候选版本n可以在GitLab仓库的release-X.Y分支中找到,标签为X.Y-RCn:
<https://gitlab.orekit.org/orekit/rugged/tree/X.Y-RCn>
发布说明可以在这里阅读:
<https://test.orekit.org/site-rugged-X.Y/changes-report.html>
Maven构件可在此处获取:
<https://oss.sonatype.org/content/repositories/orgorekit-xxxx/>
投票将在120小时后进行统计,时间为20yy-mm-ddThh:mm:00Z(这是UTC时间)。
您还应该提醒PMC成员,让他们知道投票。根据项目治理,他们的投票对于发布是至关重要的。
如果投票失败,必须通过删除存储库来从OSS网站中删除Maven构件。然后必须创建一个新的发布候选版本,包括新的编号、新的标签和新的构件。需要对这个新的发布候选版本进行另一次投票。因此,请进行必要的更改,然后从“标记和签署git存储库”步骤开始。
如果发布候选版本的投票成功,请按照以下步骤发布发布版本。
由于投票通过,必须向成功的发布候选版本添加最终签名的标签,并进行验证和推送:
git tag X.Y -s -u 9A928E5485FBC44A2A4F9C2E9128808ECB6C9DED -m "版本 X.Y."
git tag -v X.Y
git push --tags
将发布分支合并到master
分支中,以包含所做的任何更改。
git checkout master
git merge --no-ff release-X.Y
然后提交并推送。
将master
分支合并到develop
分支中,以包含所做的任何更改。
git checkout develop
git merge --no-ff master
然后更新版本号,为下一个开发周期做准备:
/src/changes/changes.xml
文件中为新的更改腾出空间。然后提交并推送。
必须使用OSS网站发布Maven构件以发布存储库。在“Staging Repositories”中选择Rugged存储库,然后在Nexus Repository Manager中点击“Release”按钮。
导航到Projects > Rugged > Repository > Tags。找到X.Y标签,点击编辑按钮进入发布说明。使用Nexus存储库中的路径设置发布说明中的构件。
导航到Projects > Rugged > Project Overview > Releases,确保显示正常。
为了增加项目的可见性,维护了一个镜像在Github上。在Gitlab上创建的发布不会自动推送到这个镜像上。必须手动声明它们,以展示Rugged的活力。
Github会自动添加两个资产(标记源代码的zip和tarball存档)。
在投票后,需要对Rugged网站进行一些编辑。
编辑download/.htaccess
,将3个Rugged构件的URL替换为用于创建发布说明的URL。
编辑_layouts/home_rugged.html
,编辑按钮的文本以使用新版本。
使用新的Orekit和Hipparchus版本编辑rugged/overview.html
。不要忘记使用新的依赖项更新rugged/img/rugged-architecture.png图像。
在_post/
中创建一个新的发布帖子,使用之前的Rugged帖子作为模板(以便在Rugged新闻页面上发布)。请注意,需要使用--future
选项才能在未来看到帖子,否则jekyll serve
将忽略它!
运行:
jekyll serve --future
确保网站看起来不错。在http://localhost:4000/上查看。
在Gitlab中,导航到项目 > Rugged > 问题 > 里程碑。点击对应于发布X.Y的行的“关闭里程碑”。
最后一步是在论坛的Rugged公告分类中创建一个帖子来宣布发布,主题行的格式如下:
Rugged X.Y发布
内容的格式如下:
Rugged团队很高兴地宣布发布Rugged版本X.Y。
这是一个次要/主要版本,包括新功能和错误修复。
主要更改包括:
- 功能1描述
...
- 功能n描述
此版本依赖于Orekit X.x和Hipparchus Y.y。
完整的发布说明请参见:
https://www.orekit.org/site-rugged-X.Y/changes-report.html
Maven构件可在Maven中央获取。
源代码和二进制文件可从Forge发布页面获取:
https://gitlab.orekit.org/orekit/rugged/-/releases