跳转到内容

Aros/开发者/NightlyConfig

来自 Wikibooks,开放世界中的开放书籍

创建夜间构建

[编辑 | 编辑源代码]

夜间构建

[编辑 | 编辑源代码]

先决条件

[编辑 | 编辑源代码]

使用术语

[编辑 | 编辑源代码]
<SCRIPTDIR>
夜间脚本存储的位置
<Sourceforge SSH 帐户名>
在 sourceforge 上具有访问 AROS 权限的有效 SSH 帐户
<夜间构建用户名>
您将使用它构建二进制文件的本地用户帐户
<开发邮件列表电子邮件地址>
能够访问 AROS 开发邮件列表的电子邮件帐户
这将用于将日志发送到邮件列表
<您的服务器配置文件名>

夜间包名称

[编辑 | 编辑源代码]

构建脚本使用包名称来识别为特定服务器构建的内容。这些包告诉构建脚本在 <SRCDIR>/pkg/ 中运行哪些文件,从而创建所选的二进制文件。

有效包名称

[编辑 | 编辑源代码]

通常适用于所有平台的文件的名称只是它们的 target,其中 all 是构建目标。当前定义的为

常用包名称
[编辑 | 编辑源代码]
  sources.svn.all
  changelogs.svn.all
  documentation.svn.all
特定架构的包名称
[编辑 | 编辑源代码]
  sdk.svn.pc-i386
  sdk.svn.pc-x86_64
  
  contrib.svn.pc-i386
  contrib.svn.pc-x86_64
  
  bootiso-grub.svn.pc-i386
  bootiso-grub2.svn.pc-i386
  bootiso-grub2.svn.pc-x86_64
  
  bootfloppy.svn.pc-i386
  
  hosted.svn.linux-i386
  hosted.svn.linux-x86_64
  hosted.svn.linux-ppc

不允许的名称

[编辑 | 编辑源代码]
  bootiso                            generic routine used by the arch specific nightly targets
  hosted
  sdk

准备系统

[编辑 | 编辑源代码]

首先,您需要在系统上设置一个用户帐户,该帐户将用于执行构建。创建一个用户

  adduser <Nightly-Build User Name>

第一步是获取夜间构建脚本。cd 到您将执行构建的位置,并检出脚本,如下所示 -

  cd /home/<Nightly-Build User Name>
  mkdir -p MyNightlyBuildDir
  cd MyNightlyBuildDir
  svn checkout https://svn.aros.org/svn/aros/trunk/AROS/scripts/nightly

您将有一个名为 nightly 的新子目录,其中包含用于构建夜间二进制文件的所有脚本。从现在开始,我们将把这个目录称为 <SCRIPTDIR>。

现在 cd 到该目录,并创建一个目录树来保存 AROS 源代码

  cd <SCRIPTDIR>
  mkdir -p Source
  mkdir -p Source/Contrib
  mkdir -p Source/Documentation
  mkdir -p Source/Necessary

最后,创建一个初始缓存,其中包含用于构建 AROS 的 svn 文件

重要:您必须在此时为系统设置正确的区域设置!!

键入以下内容 -

  cd Source
  export LANG=en_US.ISO8859-1

然后检出执行夜间构建软件包所需的所有源代码存储库

例如...

  svn checkout https://svn.aros.org/svn/aros/trunk/AROS
  cd Contrib
  svn checkout https://svn.aros.org/svn/aros/trunk/contrib
  cd ../Necessary
  svn checkout https://svn.aros.org/svn/aros/trunk/contrib/necessary

如果您不想将 complete contrib 包含在存档中,可以省略它。只需将相应的目录保留为空。

准备服务器配置文件

[编辑 | 编辑源代码]

在 cfg 目录中创建一个纯文本文件,名为 <您的服务器配置文件名>。在文本编辑器中打开它,并添加您要构建的软件包。

例如..

  CFG_PACKAGES=(sources.svn.all documentation.svn.all sdk.svn.pc-x86_64 bootiso-grub2.svn.pc-x86_64)

要启用将构建结果的电子邮件报告发送到开发邮件列表,请添加以下行..

  CFG_MAIL_ENABLE=yes
  CFG_MAIL_CC=<Dev Mailing List eMail Address>

要启用上传二进制文件以便可以在 AROS.org 上列出它们,请添加..

  CFG_UPLOAD_ENABLE=yes
  CFG_DS_USER=<Sourceforge SSH Account Name>
  CFG_BACKUP_ENABLE=no

执行第一次运行

[编辑 | 编辑源代码]

第一次检查系统是否正常运行时...通过执行以下操作执行手动模拟运行

  cd <SCRIPTDIR>; ./build <Your Servers Config-Name>

并观察它如何显示所有构建输出。

如果一切顺利,并且您在服务器配置中启用了电子邮件记录,您应该在 AROS 开发邮件列表中看到一封确认电子邮件,确认构建已成功完成。如果您还启用了文件上传,并且在 sourceforge 上具有有效的 AROS SSH 帐户,则二进制文件应该上传到临时存储位置,准备移动到 AROS.org 下载页面 上的实时文件夹中。

设置自动运行

[编辑 | 编辑源代码]

您需要为模拟运行中执行的构建步骤创建一个 cron 作业。您需要添加一条命令,该命令每 24 小时执行一次,运行构建脚本并使用您的服务器的配置上传生成的存档到 AROS.org。

   0 2 * * * ( cd <SCRIPTDIR> && ./build <Your Server's Config-Name> ) > /dev/null

这将使构建机器尝试在凌晨 2 点构建和上传 AROS。所有输出将被重定向到 NULL(当然,除了生成的日志文件)

将二进制文件添加到 AROS.org 网站

[编辑 | 编辑源代码]

如果您只是为现有的 AROS 目标提供二进制文件,那么前面的步骤应该足以将文件添加到 AROS.org 网站。但是,如果您想提供新的 AROS 版本,则需要使用有关它们的信息更新 AROS.org 网站。继续阅读...

用于在 AROS.org 上列出二进制文件的脚本和页面定义在 https://svn.aros.org/svn/aros/trunk/documentation 中的 svn 中维护。

要编辑文件,您需要检出存储库并进行自定义以适合。

列出新的下载

[编辑 | 编辑源代码]

如果您为当前不存在的 AROS 目标提供二进制文件,则需要更新在 AROS.org 上列出它们的那些文件。

编辑 db/download-descriptions/<Language> 文件以列出您构建的软件包的描述。请确保遵循现有软件包使用的命名约定。

故障排除

[编辑 | 编辑源代码]

二进制文件中的损坏本地化文件名

[编辑 | 编辑源代码]

这通常意味着使用的源文件在源代码库缓存中具有 utf8 文件名,这是由于初始检出是在系统区域设置为 utf8 时进行的。

要修复它,请依次更改到每个源目录,然后删除除顶层 .svn 目录之外的所有文件和目录。

现在输入 ..

  export LANG=en_US.ISO8859-1

.. 最后在每个目录中执行 "svn update"。

维护主夜间构建机器

[编辑 | 编辑源代码]

主夜间构建机器还承担着运行脚本以将上传的二进制文件移至实时 AROS.org 下载页面并清理上传目录的责任。其他构建机器不需要运行这些脚本。

将上传的二进制文件移至实时 AROS.org 下载页面。

您需要创建一个在一天中定期运行的 cron 作业,目前每小时运行一次。但是,此作业不是在本地执行的,将需要一个 AROS SSH 帐户才能访问 sourceforge。它的目标是将各种构建机器上传的存档移至 AROS.org 网站上的正确文件夹,以便它们可以供下载。它还删除了这些文件的任何旧版本,以便只有最新的版本可用(没有足够的存储空间来保留每个文件的多个版本)。

   00 * * * * ssh <Sourceforge SSH Account Name> 'bash -l -c aros/scripts/nightly-update' > /dev/null

这将使服务器每小时将上传目录中存在的所有文件传输到 AROS.org 网站。同样,所有输出都发送到 NULL。

此步骤将从上传目录中删除不完整或损坏的夜间构建文件。

   51 7 * * * ssh <Sourceforge SSH Account Name> 'bash -l -c aros/scripts/nightly-clean' > /dev/null

这将在每天上午 7:51 清理 AROS.org 服务器上的上传目录。

华夏公益教科书