[FrontPage] [TitleIndex] [WordIndex

This is a read-only archived version of wiki.centos.org

SIG 指南:目的

CentOS 的特別興趣小組(SIG)是 CentOS 社區內的一些小組,以特定的 CentOS Linux 主題作為開發焦點,或增加對那些問題的關注。本指南是為有興趣開創、管理、或參與 CentOS SIG 的人而設。以下是整個程序中每個步驟的範本及最佳做法。

CentOS 屬性

0.1. accounts.centos.org

連結: http://accounts.centos.org

描述: ACO 是申請存取社群建設系統(CBS)的地方。暫時這些帳戶只適用於 CBS

科技: accounts.centos.org 是 FAS2 的一個實例

聯絡人: CentOS 架構小組(freenode 上的 #centos-devel)或 centos-devel 郵件列表。

備註:

0.2. git.centos.org

連結: https://git.centos.org

描述: git.c.o 是 CentOS Linux 7 源套件的權威性收藏庫。git.c.o 亦包含 SIG 專用的收藏庫及 CentOS 計劃內不同部份的源碼

科技: git.c.o 是 Pagure 的一個實例

聯絡人: CentOS 系統管理小組 —— (Freenode 上的 #centos-devel)或 centos-devel 郵件列表

備註:

0.3. cbs.centos.org

連結: http://cbs.centos.org

描述: 社群建設系統讓(Community Buildsystem)特別興趣小組(SIG)能建立及管理他們的套件,放入專用的軟件庫內

科技: CBS 是 Koji 建設系統 的一個實例

聯絡人: CentOS 架構小組(Freenode 上的 #centos-devel)或 centos-devel 郵件列表。

備註:

  • 有別於 Fedora 計劃下的 Koji,現時 cbs.centos.org 上的臨時建設會被保留及不會過期
  • 現時所有映像必須以臨時建設的形式進行

0.4. mirror.centos.org

由特別興趣小組(SIG)所出產的內容都收錄在 mirror.centos.org。mirror.centos.org 是由分佈世界各地的 50 多個伺服器所組成,並利用 GeoIP 把用戶指向最近的鏡像。mirror.centos.org 機器及頻寬是捐贈給 CentOS 的,它們是由 CentOS 架構小組管理。

這個做法聽來十分乾淨利落(它的確是!),但發放檔案給用戶還有一個更佳的方法。mirror.centos.org 上的所有內容已經由 600 多個外置鏡站所複製,它們比 mirror.centos.org 伺服器提供還要好的地區性覆蓋。採用外置鏡像能釋出 mirror.centos.org 伺服器的頻寬,供這些鏡站同步時使用。你只須在你的軟件庫設定檔內加入 mirrorlist 選項便能採用外置鏡像。詳情見「建立 centos-release-* 套件」分段。

SIG 程序

任何人皆可建議及/或參與特別興趣小組(SIG),以下是有關 SIG 運作的一些指引及提示。

0.1. 建議

新 SIG 的成立必須有一位 CentOS 管理委員會 成員參與,而每個 SIG 都須要乎合某些條件:

0.1.1. 條件

  1. 主題必須關於 CentOS,或採用 CentOS
  2. CentOS 的社群必須有足夠的監管及回饋
  3. 一般來說,所有關於 SIG 的通訊都應該是公開的,但亦理解某些事情需要私隱。遇有這情況,請與諮詢贊助的管理委員會成員
  4. SIG 內產生的所有源代碼必須兼容 CentOS 現時採用的免費開源軟件(FOSS)授權
  5. SIG 內產生的所有文件必須兼容此 wiki 的授權
  6. SIG 應該注意管理委員會為 CentOS 定的大方向
  7. 其中一位 SIG 成員必須為管理委員會/開發小組的成員

0.1.2. 建議程序

  1. 檢查合作主題是否已被現有 SIG 所涵蓋
  2. 在 centos-devel 郵件列表發送一個 RFC 的簡介電郵並徵求意見
  3. 找一位 CentOS 管理委員會成員參與在其中
  4. 該委員會成員將會:
    1. 申請建立起首所需要資源
    2. 在 wiki 的 SpecialInterestGroup 頁列出新的 SIG

0.2. 接納

贊助的管理委員會成員將會在委員會的例會推出建議。如何建議獲接納,委員會將會容許 SIG 開始運作。

SIG 的創辦人應該在這個過程中與贊助人保持緊密聯絡,以便排除從建議所衍生的任何問題。

0.3. 設置帳戶

0.3.1. 社群建設系統(CBS)

0.3.1.1. 先決條件

我們在 CentOS-Extras 軟件庫內提供了一套工具,可以利用社群建設系統(CBS)建立特別興趣小組的套件。如果你開發用的工作台執行 CentOS 7:

    yum install centos-packager

這些工具大部份將會成為 Centpkg 的組件([zh-tw/HowTos/Centpkg])。

如果你的工作台是 Fedora(23/24/25),你可選用 Copr

    dnf copr enable bstinson/centos-packager
    dnf install centos-packager

0.3.1.2. 第一步:註冊帳戶(ACO)
  1. 拜訪 帳戶系統

  2. 選擇 New Account
  3. 在表格內填上你的資料

0.3.1.3. 第二步:加入特別興趣小組

你的 CBS 帳戶必須在成為特別興趣小組成員後才會啟動

  1. 登入後 accounts.centos.org,選擇 Group List 並尋找你有意加入的特別興趣小組。(特別興趣小組列於 s 下,例如:sig-cloud)
  2. 申請會籍
  3. 請你的特別興趣小組主席批核你的申請

0.3.1.4. 第三步:建立你的用戶憑證

你的用戶憑證包含三個檔案:

檔名

用途

~/.centos.cert

含有你的 X509 客端憑證的 PEM 檔

~/.centos-server-ca.cert

來自 ACO 的簽證機構憑證

~/.centos-upload-ca.cert

lookaside 的簽證機構憑證

要建立你的憑證,請採用 centos-packager 套件內的 centos-cert 工具:

  Usage: centos-cert [OPTIONS] 

Options:
  -h, --help            show this help message and exit
  -u USERNAME, --username=USERNAME
                        ACO Username.
  -n, --new-cert        Generate a new User Certificate.
  -f CERTFILE, --file=CERTFILE
                        User Certificate.
  -v, --verify-cert     Verify Certificate.

假如你註冊的名稱為 tuser,你可以這樣建立新的憑證:

    [tuser@myworkstation]$ centos-cert -u tuser -n
    ACO Password: <這裡輸入密碼>

ArtWork/WikiDesign/icon-admonition-idea.png

請注意 centos-cert -u tuser -n 將會申請一張新的憑證,因此你過往所擁有的其它憑證將會自動失效。如果你需要在多台機器上使用 cbs/koji,你只需把上述檔案複製至其它電腦便可以了。

0.3.1.5. 第三‧一步:更新你的憑證

/!\ 你的用戶憑證的有效期為六個月。假若你在憑證過期四個月後仍未將它更新,你的 accounts.centos.org 帳戶將會被停用

更新憑證的步驟:

    [tuser@myworkstation]$ centos-cert -u tuser -n
    ACO Password: <輸入密碼>

0.3.2. ci.centos.org

0.3.2.1. 建立錯誤報告
  1. 拜訪 https://pagure.io/

  2. 在 centos-infra 追蹤器 https://pagure.io/centos-infra/issues/ 匯報問題

  3. 在你的報告內包含以下資訊:
    • 你的名稱
    • 你所牽涉的項目
    • 你選用的用戶名稱
    • 你的電郵地址
    • 你的 gpg 公鑰(普遍已在 ACO 內)

0.3.2.2. 帳戶批核

特別興趣小組成員: 請聯絡你的 SIG 主席在報告內給予認可

上游計劃: 我們會與你合作,安排負責人在 ci 內批核新的成員

Translation of revision 6

0.3.3. Devcloud

0.4. 申請資源

0.4.1. 簽署內容用的金鑰

0.4.2. 郵件列表

0.4.3. IRC 頻道

0.4.4. 追縱器內的錯誤「項目」

SIG 推薦人(委員會成員)在 https://pagure.io/centos-infra/issues/ 內處理 SIG 項目的申請。

每個 SIG 應設在例會中取得共識,繼而聯絡推薦人。

0.4.5. CBS 上的 SIG Bot 帳戶

有些 SIG 可能會利用 bot 帳戶通過 CICO 或其它架構在 CBS 進行自動化建設。

0.4.5.1. 條件
  1. 帳戶名稱是該特別興趣小組的縮寫(cloud、configmanagement、cloudinstance)等
  2. 帳戶的電郵 必須 寄給一位能在生產環境下更改憑證的用戶

帳戶的批核程序沿用一般的贊助模式。請通知一位 ACO 管理員,他們便會在相關的群組中贊助該帳戶。

0.4.6. CBS 標籤

如要在 CBS 申請新的標籤,請建立一個 錯誤報告 Project: Buildsys Category: community buildsys

務請包括以下資料:

  • SIG 的名稱
  • SIG 項目
  • 項目的發行編號(有的話)

CBS 的標籤有以下格式: <SIG_名稱><CentOS_版本>-<項目>-<發行編號>-{candidate,release,testing}

例:cloud7-openstack-kilo-testing

SIG:

Cloud

項目:

Openstack

發行編號:

Kilo

如果申請者不是 SIG 主席,主席本人應該在該錯誤報告內以 +1 或 -1 的評語表示認同還是否決新的標籤。

0.5. 日常運作(會議)

Translation of revision 15

管理內容

0.1. 匯入至版本管理系統

提交至 git.centos.org 的套件源都採用已解壓的 SRPM 格式。這意味著套件的工作目錄最少要有 SPECS/ 子目錄。

0.1.0.1. 新的套件(來自源代碼)

若要從上游的源代碼建立一個仍未提交至 git.centos.org 的套件:

# 該我們通過建立 rpm 的結構來建立一個名叫 new-package 的套件
[bstinson@localhost]$ mkdir -p ~/src/rpms/new-package/{SOURCES,SPECS}

[bstinson@localhost]$ cd ~/src/rpms/new-package/

# 編寫你的 spec 檔。你可由零開始,但 rpmdevtools 提供了一個骨幹
[bstinson@localhost new-package]$ rpmdev-newspec -o SPECS/new-package.spec

0.1.0.2. 新的套件(來自現有的 SRPM)

若要從現有的 SRPM 建立一個仍未提交至 git.centos.org 的套件:

# 讓我們匯入 new-package-1.0.1-2.el7 的源代碼 RPM 到新的工作空間
[bstinson@localhost new-package]$ rpm --define "%_topdir `pwd`" -Uvh ~/Downloads/new-package-1.0.1-2.el7.src.rpm

Translation of revision 3

0.2. 在 CBS 下進行建設

現時向 CBS 提交建設要求的流程,是在開發者的工作目錄內建立一個源碼 RPM,然後提交給建設系統。開發者必須擁有一個有效的 CBS 帳戶,並在他們的工作台上安裝了客端工具(見 zh-tw/SIGGuide#CBSAccount)。

0.2.0.1. 建立源碼 RPM

暫時仍支援並供 --scratch 建設之用,但利用 git.centos.org 進行建設才是正確做法

[bstinson@localhost new-package]$ rpmbuild --define "%_topdir `pwd`" -bs SPECS/new-package.spec

0.2.1. 繞道描述標籤及目標

利用 CBS 進行建設時,我們應該知道往那裡提交源碼,及在那裡可找到新建的套件。

0.2.1.1. 定義
  • 建設目標: 指定被提交的套件的建設根目錄及目的地。這要加進 /usr/bin/cbs 指令行,以便能將套件指向正確的位置

  • 標籤: 一個把套件集合起來的位置。新建的套件可以自動被標籤起來(即剛被建立後),或利用 /usr/bin/cbstag-build 指令手動增添標籤

0.2.1.2. 建設目標

建設目標是根據 CentOS 版本、SIG、項目、項目版本及發行標籤而命名的。以 cloud7-openstack-kilo-el7 為例:

SIG

cloud

CentOS 版本

7

項目

openstack

版本

kilo

發行標籤

el7

每當有新的標籤申請,建設目標便會獲分配,而現有的目標已收錄於 http://cbs.centos.org/koji/buildtargets

0.2.1.3. 標籤

當 SIG 的主席申請新一系列的建設標籤時,我們建議興趣小組採納預設的流程:

[建設] -> cloud7-openstack-kilo-candidate -> cloud7-openstack-kilo-testing -> cloud7-openstack-kilo-release

新套件的建設根目錄包括以下軟件庫:

  • CentOS Linux 的基本操作系統
  • 候選標籤內所有套件的最新版本。

這樣開發者便能依賴基本操作系統的內容來滿足套件的要求,或確保所需的版本加上 -candidate 標籤(隨相關的建設目標獲建立,或執行 tag-build 指令來囊括現有的套件)。

0.2.1.4. 進行建設!

新套件:

要是你的套件從未被建設過,請在你的目標標籤的套件清單內加上它:

[bstinson@localhost new-package]$ cbs add-pkg --owner=bstinson cloud7-openstack-kilo-candidate new-package
[bstinson@localhost new-package]$ cbs add-pkg --owner=bstinson cloud7-openstack-kilo-testing new-package
[bstinson@localhost new-package]$ cbs add-pkg --owner=bstinson cloud7-openstack-kilo-release new-package

臨時建設:

# 提交源碼 RPM 作為臨時建設
[bstinson@localhost new-package]$ cbs build --scratch cloud7-openstack-kilo-el7 SRPMS/new-package-1.0.1-2.el7.src.rpm

臨時建設會出現在 CBS 的網頁,而獲建立的 RPM 可以從該處下載,但那些套件不會被加進任何 CBS 標籤(或這些標籤所建立的軟件庫)。臨時建設有助於正式進行標籤建設前先行測試。

已標籤(正常)建設:

# 提交源碼 RPM 作為建設目標
[bstinson@localhost new-package]$ cbs build cloud7-openstack-kilo-el7 SRPMS/new-package-1.0.1-2.el7.src.rpm

已標籤的建設完成後,便會加進 -candidate 標籤,並出現在建設根目錄供依賴它的套件存取。

/!\ 註:CBS 規定套件的 名稱-版本-發行 必須是獨一無二的。言下之意就是假如有人(甚至另一個 SIG)已建立了 new-package-1.0.1-2.el7,你必須採用該套件,或建立另一個版本

0.2.1.5. 從 git.centos.org 進行建設

與其建立本地的 .src.rpm 套件並上載至 CBS 進行建設,你也可提交指向 git.centos.org 的建設請求(見上文有關 lookaside 及 git push 的步驟)。

你只需調用 cbs build 並指向 git+https://git.centos.org/rpms/<套件名稱>.git#<commit_散列>

要是沿用上述有關 centpkg-minimal 套件的範例,我們可以輕易地從 git 的歷史取得我們剛推送到 git.centos.org 的 c7-sig-core 分支的 commit 散列:

git log|head -n 1
commit ca63b53c8bde1efc91d55548f194dbecbf457cad

因此當告訴 cbs 建設系統從 git.centos.org 自動存取所有資料時(.spec、修正檔及 .<pkg_name>.metadata 內宣告的 lookaside 物件),我們可以如此調用它(根據我們的範例並以 infrastructure7-el7 作為 cbs 標籤的目標,因此這視乎你的特別興趣小組/標籤):

cbs build infrastructure7-el7 git+https://git.centos.org/rpms/centpkg-minimal.git#ca63b53c8bde1efc91d55548f194dbecbf457cad

0.2.1.6. 常見錯誤訊息
  • FAILED: BuildError: package new-package not in list for tag cloud7-openstack-kilo-candidate

    • 請確保你已將套件加進清單內:見「進行建設」下的 新套件 部份

0.3. 發行至鏡站網絡

整個過程中,有兩個階段可以讓套件獲更廣泛的應用。測試內容可以發放到 buildlogs.centos.org 分發網絡供開發者及 CI 系統應用。已適合發行的內容可以透過 mirror.centos.org 上的 SIG 專用目錄供使用者應用。

首先,決定軟件庫在 mirror.centos.org 上的最終發行位置。你可以在 buildlogs.centos.org 上採用同一路徑。

0.3.1. 推送測試內容至 Buildlogs

由 2020 年 3 月 25 日起實施的新簽署程序只須將套件標籤進 -testing 軟件庫便足夠了。

每當你把新建的套件標籤為 -testing,便會觸發 koji 上的 distRepo 任務並將它推進 buildlogs.centos.org 假設你的標籤是 cloud7-openstack-train-testing,而你啟用了三個架構(x86_64、ppc64le 及 aarch64),套件就會出現在

0.3.2. 在 mirror.centos.org 發行內容

在鏡像網絡上申請空間的步驟

與 -testing 的步驟相同,唯獨現有的程序會接獲通知有套件被標籤為 -release,因此它們會被推送到 mirror.centos.org 網絡(及外部鏡站),並以適當的 SIG GPG 金鑰簽署。

此外 debuginfo 套件會被推送到 debuginfo.centos.org,而 src.rpm 套件被推送到 vault.centos.org

值得留意的是針對 CentOS 7,x86_64 會被推送到 mirror.centos.org/centos/$path,而其它架構如 ppc64le/ppc64/aarch64 會被推送到 mirror.centos.org/altarch/$path。你可以運用 $contentdir 這個 yum 變數在你的 .repo 檔內選擇分支(centos 或 altarch)。

0.3.3. centos-release 套件

若要放送 SIG 套件給用戶,yum 的 repo 檔必須收錄在一個名為 centos-release-<元件> 的套件內。此 centos-release-<元件> 套件將會在 CentOS Extras 軟件庫內發行。該 .repo 檔亦應包含 gpg 公鑰,以便能驗證從鏡站點下載的資源。

舉例說,雲端 SIG 利用 centos-release-openstack-rocky 內的軟件庫定義檔來發行 OpenStack Rocky。

0.3.3.1. 建立 centos-release-* 套件
  1. 如果你是一個新的 SIG,但仍未被編配 SIG gpg 金鑰(公鑰應列於 https://www.centos.org/keys/#community-driven-project-keys),你必須在 https://pagure.io/centos-infra/issues/ 建立錯誤報告。

當你收到 gpg 公鑰後,便可以開始建設 centos-release--* sig 套件。

  1. 為 centos-release-<SIG> 套件申請於 https://git.centos.org 上建立一個源碼庫(例如 https://git.centos.org/rpms/centos-release-openstack):請在 https://pagure.io/centos-infra/issues/ 提交申請

  2. 在 .repo 檔內設定你的內容。舉個例說,centos-release-openstack-rocky 可以有下列的主軟件庫定義:
    [centos-openstack-rocky]
    name=CentOS-7 - OpenStack rocky
    mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=cloud-openstack-rocky
    #baseurl=http://mirror.centos.org/$contentdir/$releasever/cloud/$basearch/openstack-rocky/
    gpgcheck=1
    enabled=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Cloud
  3. repo 檔內亦可以有其它軟件庫的定義,例如 testing、debuginfo 及 sources。參考其它 centos-release-* 作為例子。 以上例子利用 mirrorlist.centos.org 來選取最近的外置鏡站。透過 mirrorlist.centos.org 來取得鏡站是首選的方法,因為它提供最快的鏡站給用戶,並減低 mirror.centos.org 的負荷。作為後備方案,baseurl 指向由 CentOS 控制的 mirror.centos.org 並被詮釋掉。留意 $contentdir 是用來選取 centos 或 altarch。

    建設 mirrorlist.centos.org 軟件庫參數的方法是從路徑移除架構,然後以破折號代替斜杠。譬如,cloud/x86_64/openstack-rocky 內的檔案來自名為 cloud-openstack-rocky 的軟件庫,而 sclo/x86_64/rh/rh-python36 來自 sclo-rh-rh-python36。請確保你的 .repo 檔含有正確的路徑及軟件庫名稱。mirror.centos.org 上的內容每三個小時便會掃描一次,任何新的軟件庫會自動被加進鏡站的搜查資料庫。

  4. 如何你是首次建立套件,請將 centos-release-mycomponent 加進 Extras 的標籤內
    [bstinson@localhost centos-release-mycomponent]$ cbs add-pkg --owner=bstinson core7-extras-common-candidate centos-release-mycomponent
    [bstinson@localhost centos-release-mycomponent]$ cbs add-pkg --owner=bstinson core7-extras-common-testing centos-release-mycomponent
    [bstinson@localhost centos-release-mycomponent]$ cbs add-pkg --owner=bstinson core7-extras-common-release centos-release-mycomponent
  5. 在 CBS 內針對 Extras 標籤建立套件
    [bstinson@localhost centos-release-openstack-mycomponent]$ cbs build core7-extras-common-el7.centos centos-release-mycomponent-0.0.1-1.rpm
  6. 建立一個錯誤報告,申請把內容同步至 mirror.centos.org(見 zh-tw/SIGGuide#MirrorSpace

  7. 為建設加上 testing 標籤
    [bstinson@localhost centos-release-openstack-mycomponent]$ cbs tag-build core7-extras-common-testing centos-release-mycomponent-0.0.1-1
  8. 利用 yum install 測試從新軟件庫安裝套件

  9. 準備就緒後,為建設加上 release 標籤
    [bstinson@localhost centos-release-openstack-rocky]$ cbs tag-build core7-extras-common-release centos-release-mycomponent-0.0.1-1

0.3.3.2. 有關 centos-release-* 套件的一些指引
  • centos-release-* 套件應該被建立為 noarch RPM

與其它 SIG 合作

Translation of revision 4


2023-09-11 07:23