Text
Page: 1
debusine.debian.netを活用した パッケージの更新方法 しくみで”やらかし”アップロードを避ける Kentaro Hayashi ClearCode Inc. 2025年12月 東京エリア・関西合同Debian勉強会
Page: 2
スライドはRabbit Slide Showにて 公開済みです debusine.debian.netを活用したパッケージの更新方法 https://slide.rabbit-shocker.org/authors/kenhys/tokyodebian-debusine-202512
Page: 3
本日の内容 Debusineとはなにか? Debusineで何ができるのか? Debusineに関する豆知識 Debusineを使ってみよう
Page: 4
本日の内容 Debusineとはなにか? Debusineで何ができるのか? Debusineに関する豆知識 Debusineを使ってみよう
Page: 5
Debusineとはなにか? https://debusine.debian.net
Page: 6
debusineの発音 DebConf25: Using Debusine to pre-test your unstable uploadsより
Page: 7
Debusineとはなにか? Debusine’s goal is to be an integrated solution to build, distribute and maintain a Debian-based distribution.
Page: 8
Debusineとはなにか? https://wiki.debian.org/DebusineDebianNet Freexianがスポンサーとなっているプロダクト パッケージング作業に関するインフラを提供する debusine.debian.netはDebusineを運用しているインスタンス 外部の利用者からするとCIプラットフォーム
Page: 9
本日の内容 Debusineとはなにか? Debusineで何ができるのか? Debusineに関する豆知識 Debusineを使ってみよう
Page: 10
Debusineではなにができるの? DDやDMが利用できる (認証はsalsa.d.oと連携している) パッケージに関するCIをまるっとおまかせできる 🎉 CI結果が問題なければ、そのままアップロードもできる tag2uploadとはまったく関係ない別のしくみ tag2uploadについては2024年7月のDebian勉強会参照
Page: 11
それsalsa.d.oでよくない? 現時点ではそれぞれメリット・デメリットがある debusineがsalsa.d.oのCIの完全な上位互換というわけでもない あくまで2025年12月時点の話
Page: 12
salsa.d.oでのCI ビルド対象(amd64, i386) チェック対象 autopkgtest blhc (hardeningのチェック) debrebuild (new!) lintian piuparts
Page: 13
debusine.d.nでできるCI ビルド対象 (amd64, arm64, armhf, i386, ppc64el) チェック対象 autopkgtest hardening (最近有効になったblhc) lintian piuparts
Page: 14
debusine.d.nとsalsa.d.oの比較 debusine.d.n ビルド対象arch チェック対象arch autopkgtest blhc debrebuild lintian piuparts 5 5 ✅ ✅ ❌ ✅ ✅ salsa.d.o 2 (amd64,i386) amd64のみ ✅ ✅ ✅ ✅ ✅
Page: 15
debusine.d.nとsalsa.d.o debusine.d.nがおすすめな人 ✅複数アーキテクチャでチェックしたいDDもしくはDM ✅CI完了までの速さが欲しい salsa.d.oがおすすめな人 ✅DDやDMではないコントリビューター ❌salsa.d.oは利用者が多いので速度的に不利
Page: 16
本日の内容 Debusineとはなにか? Debusineで何ができるのか? Debusineに関する豆知識 Debusineを使ってみよう
Page: 17
ScopeとWorkspaces debusineではscopeとworkspacesが基本 Scope: 現在はdebianのみ (将来的にはdebian派生も考慮) Workspaces: developersワークスペースをDD等が利用する
Page: 18
ScopeとWorkspaces 参考: https://debusine.debian.net
Page: 19
Workflows どのチャンネルに対してパッケージング作業するかを示す 通常はunstableにアップロードするのでupload-to-unstableを利用する アップロードするソースパッケージで自動的に決まる
Page: 20
Workflowsの種類 参考: https://wiki.debian.org/DebusineDebianNet
Page: 21
Workflowsの例 参考: https://debusine.debian.net/debian/developers/workflow/
Page: 22
本日の内容 Debusineとはなにか? Debusineで何ができるのか? Debusineに関する豆知識 Debusineを使ってみよう
Page: 23
Debusineを使えるようにする 前提: debusineでCIを実行してunstableへアップロードする アクセストークンの事前発行 (debusine.d.n) debusineクライアントのインストール セットアップを実行してトークンを設定
Page: 24
アクセストークンの事前発行(1) 参考: debusine.d.nユーザー設定のTokens画面
Page: 25
アクセストークンの事前発行(2) 参考: debusine.d.nでcreate a new tokenを実行した画面
Page: 26
アクセストークンの事前発行(3) 参考: create a new tokenを実行した画面
Page: 27
debusineクライアントのインス トール 必要なパッケージをインストール $ sudo apt install dput-ng debusine-client
Page: 28
debusine setupを実行する $ debusine setup
Page: 29
debusine setup (1) > debusine setup Configured servers # Name Current Description ──────────────────────────────────────────────────────────────────── 1 debian debusine.debian.net 2 freexian Freexian (E)LTS 3 localhost debusine-admin runserver for development 1…3, new, quit:
Page: 30
debusine setup (2) ⭐ Default server was not set, setting it to debian >1 Configuration for debian (default server) ────────────────────────────────────────────────────────── [server:debian] scope = debian (scope) api-url = https://debusine.debian.net/api/ (url) token = acquired on save (token) default-workspace = developers (workspace) Commands: url, token, scope, (make) default, save, quit:
Page: 31
debusine setup (3) > token Enter (or clear) API token > (あらかじめ生成しておいたトークンをここにコピペする) Configuration for debian (default server) ────────────────────────────────────────────────────────── [server:debian] scope = debian (scope) api-url = https://debusine.debian.net/api/ (url) token = present (token) default-workspace = developers (workspace) Commands: url, token, scope, (make) default, save, quit:
Page: 32
debusine setup (4) 👍 > save Configuration saved
Page: 33
サンプル: Groongaの例 前提:パッケージの修正はひととおり終わった状態 $ dput debusine.debian.net ./groonga_15.2.1+dfsg-1_source.changes
Page: 34
groonga: dput-ngでアップロードし たとき Uploading groonga using debusine to debusine.debian.net (host: debusine.debian.net; directory: /) running debusine-check-workflow: check debusine workflow for distribution running checksum: verify checksums before uploading running suite-mismatch: check the target distribution for common errors running gpg: check GnuPG signatures before the upload Not checking GPG signature due to allow_unsigned_uploads being set. Uploading groonga_15.2.1+dfsg-1.dsc Uploading groonga_15.2.1+dfsg.orig.tar.xz Uploading groonga_15.2.1+dfsg-1.debian.tar.xz Uploading groonga_15.2.1+dfsg-1_amd64.buildinfo Uploading groonga_15.2.1+dfsg-1_source.changes Uploading /home/kenhys/work/debian/groonga/build-area/groonga_15.2.1+dfsg-1_amd64.buildinfo to https://debusine.debian.net/api/1.0/artifact/2862652/files/groonga_15.2.1%2Bdfsg-1_amd64.buildinfo/ Uploading /home/kenhys/work/debian/groonga/build-area/groonga_15.2.1+dfsg-1.debian.tar.xz to https://debusine.debian.net/api/1.0/artifact/2862652/files/groonga_15.2.1%2Bdfsg-1.debian.tar.xz/ Uploading /home/kenhys/work/debian/groonga/build-area/groonga_15.2.1+dfsg-1.dsc to https://debusine.debian.net/api/1.0/artifact/2862652/files/groonga_15.2.1%2Bdfsg-1.dsc/ Uploading /home/kenhys/work/debian/groonga/build-area/groonga_15.2.1+dfsg-1_source.changes to https://debusine.debian.net/api/1.0/artifact/2862652/files/groonga_15.2.1%2Bdfsg-1_source.changes/ Uploading /home/kenhys/work/debian/groonga/build-area/groonga_15.2.1+dfsg.orig.tar.xz to https://debusine.debian.net/api/1.0/artifact/2862652/files/groonga_15.2.1%2Bdfsg.orig.tar.xz/ Created artifact: https://debusine.debian.net/debian/developers/artifact/2862652/ running debusine-create-workflow: create a debusine workflow Created workflow: https://debusine.debian.net/debian/developers/work-request/259991/
Page: 35
groonga: ワークフロー開始
Page: 36
salsa.d.oのCIとdebusine.d.nの処理 の目安(1) 10分でできること salsa.d.o: sourceの展開くらい debusine.d.n: armやppc64elを除いてビルド完走 パッケージや負荷状況で変わることに注意
Page: 37
salsa.d.oのCIとdebusine.d.nの処理 の目安(2) 20分でできること salsa.d.o: まだビルド中 debusine.d.n: CI完走 パッケージや負荷状況で変わることに注意
Page: 38
salsa.d.oのCIとdebusine.d.nの処理 の目安(3) 40分でできること salsa.d.o: ようやくCIが完走する パッケージや負荷状況で変わることに注意
Page: 39
groonga: salsa.d.oでのCI
Page: 40
groonga: ワークフロー完走したと き
Page: 41
groonga: パッケージに署名して アップロードする
Page: 42
groonga: 署名してアップロード実 行 実行例: リクエストIDは都度変わる debusine --server debusine.debian.net/debian provide-signature (リクエストID)
Page: 43
groonga: 署名してアップロード実 行 debusine --server debusine.debian.net/debian provide-signature 260032 Artifact file downloaded: /tmp/debusine-debsign-_zigpwdf/groonga_15.2.1+dfsg-1_amd64.buildinfo Artifact file downloaded: /tmp/debusine-debsign-_zigpwdf/groonga_15.2.1+dfsg-1.dsc Artifact file downloaded: /tmp/debusine-debsign-_zigpwdf/groonga_15.2.1+dfsg-1_source.changes signfile dsc groonga_15.2.1+dfsg-1.dsc 719EB2D93DBE9C4D21FBA064F7FB75C566ED20E3 fixup_buildinfo groonga_15.2.1+dfsg-1.dsc groonga_15.2.1+dfsg-1_amd64.buildinfo signfile buildinfo groonga_15.2.1+dfsg-1_amd64.buildinfo 719EB2D93DBE9C4D21FBA064F7FB75C566ED20E3 fixup_changes dsc groonga_15.2.1+dfsg-1.dsc groonga_15.2.1+dfsg-1_source.changes fixup_changes buildinfo groonga_15.2.1+dfsg-1_amd64.buildinfo groonga_15.2.1+dfsg-1_source.changes signfile changes groonga_15.2.1+dfsg-1_source.changes 719EB2D93DBE9C4D21FBA064F7FB75C566ED20E3 Successfully signed dsc, buildinfo, changes files Uploading /tmp/debusine-debsign-_zigpwdf/groonga_15.2.1+dfsg-1_amd64.buildinfo to https://debusine.debian.net/api/1.0/artifact/2862808/files/groonga_15.2.1%2Bdfsg-1_amd64.buildinfo/ Uploading /tmp/debusine-debsign-_zigpwdf/groonga_15.2.1+dfsg-1.dsc to https://debusine.debian.net/api/1.0/artifact/2862808/files/groonga_15.2.1%2Bdfsg-1.dsc/ Uploading /tmp/debusine-debsign-_zigpwdf/groonga_15.2.1+dfsg-1_source.changes to https://debusine.debian.net/api/1.0/artifact/2862808/files/groonga_15.2.1%2Bdfsg-1_source.changes/
Page: 44
さいごに ✅DDやDMであれば、debusine.d.nを併用するのがおすすめ ✅事前にdebusine.d.nでCIを実行することで特定の環境の問題に気づける DDやDMになろう!