跳轉到內容

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 伺服器上的上傳目錄。

華夏公益教科書