Note
このドキュメントは2026-02-27 02:15にPLaMo Translation Modelを使用して自動翻訳されました。
FEP-7d8c: ドキュメント:FEPプロセスの自動化
概要
本FEPでは、FEPプロセスの一部を自動化するために使用されるスクリプトとWoodpecker構成について議論します。FEPプロセスの詳細についてはFEP-a4edを参照してください。
FEP-a4edと同様に、このドキュメントは生きた文書であり、FEPプロセスが進化するにつれて随時更新される必要があります。
ビジョン
自動化の目的は、ファシリテーターの負担を軽減することにあります。具体的には:
- Gitに関する深い知識を持たない人でもファシリテーターとして活動可能にすること。つまり基本的に、文書を読んで当社の基準を満たしているか確認し、「マージ」ボタンをクリックするだけで済むようにする。
- 可能な限り多くのチェックを自動化によって実施する。
この業務を簡素化した後、FEPプロセスのより広範な導入を推進することが可能になります。
ToDoリスト
これは生きたドキュメントです。以下にToDoリストを作成します:
- [ ] リンク切れのチェックを実施する
- [ ] FEP作成プロセスの簡略化。GitやCodebergアカウントは本当に必要か?
- [ ] より多くのユーザーがツールを開発できるようにするためのコードドキュメンテーション(例:どのFEPがどこで使用されているかを自動で生成する機能)
最初の2項目は私自身のToDoリストに長らく記載されており、そのまま残る可能性があります...ご自由に引き継いでください。
自動化システム
FEPリポジトリの自動化にはCodeberg Woodpeckerを使用しています。以下の2つのジョブが設定されています:
- FEPに含まれる内容に対して基本的なチェックを実行する
README.mdファイルを更新し、トラッキング用Issueを作成する- 静的ウェブサイトを生成する
自動化スクリプトはPythonで記述されており、scriptsフォルダに格納されています。
スクリプトとテスト
FEPでは、一部の管理作業をPythonスクリプトで処理しています。これらのスクリプトはパッケージをインストールすることなく実行可能である必要があります。これらのスクリプトを継続的に動作させるため、.woodpecker/test.ymlファイルに含めるようにしてください。
設定変数
これらの構成作業を行うには、__admin__グループに所属する必要があります。詳細は最初の議論こちらを参照してください。
設定用.woodpecker/readme.ymlファイルでは、以下の2つのシークレットを使用しています:
- codeberg_api_token:トラッキングIssue作成に使用するCodeberg APIトークン
- deploy_key:Codebergリポジトリへのプッシュに使用するSSHプライベートキー
さらに、環境変数CI_REPO_CLONE_SSH_URLも使用します(Woodpeckerドキュメント参照)。
これらのシークレットを取得する方法について以下に説明します。
APIトークン
APIトークンはCodebergでユーザー設定→「アプリケーション」→「権限選択」→「issue」セクションで「読み取りと書き込み」を許可し、任意の名前を付与することで生成できます。これらは40文字の16進数文字列で、例えば以下のようになります:
33104dd6847e87ef3d6925effdfc852349233034
デプロイキー
前述のとおり、デプロイキーはSSH鍵です。Linux環境では以下のコマンドで生成できます:
ssh-keygen -t ed25519 -f deploy_key
パスフレーズの指定は不要です。具体例は以下の通りです:
$ cat deploy_key
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
QyNTUxOQAAACCQ5XqPCdvHPHsukhPS+RMDpMnOCCLW0csGGoFgijQRiwAAAJDpM7fx6TO3
8QAAAAtzc2gtZWQyNTUxOQAAACCQ5XqPCdvHPHsukhPS+RMDpMnOCCLW0csGGoFgijQRiw
AAAEB2ofBDBwUcZs5FHsaFMvyO95Qrvn8+PO3BchraucMRwJDleo8J28c8ey6SE9L5EwOk
yc4IItbRywYagWCKNBGLAAAADWhlbGdlQHJhaW5ib3c=
-----END OPENSSH PRIVATE KEY-----
$ cat deploy_key.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJDleo8J28c8ey6SE9L5EwOkyc4IItbRywYagWCKNBGL helge@rainbow
公開鍵deploy_key.pubは、Codebergリポジトリの「設定」→「デプロイキー」→「新しいデプロイキー追加」で追加し、「書き込みアクセスを有効にする」チェックボックスをオンにする必要があります。
詳細はこちらを参照してください。
Woodpeckerへのシークレット登録
これらのシークレットはWoodpeckerで追加できます。設定メニューから「設定歯車」→「シークレット」→「新しいシークレット追加」を選択します。シークレットは「プッシュ」アクション(マージされたプルリクエストに対応)でのみ利用可能であれば問題ありません。
deploy_keyをWoodpecker UIに貼り付ける際は、必ず改行コードを含めてください。
開発作業
ツールはscriptsフォルダ内に配置されており、scripts/fep_toolsフォルダにはPythonパッケージfep_toolsが含まれています。これらのツールのほとんどはPythonのみで動作するため、例えばscripts/new_proposal.pyやscripts/create_readme.mdはどの環境からでも実行可能です。
テストの実行方法
テストを実行するにはpytestが必要です。なお、テストはベースフォルダから実行する必要があります。以下に仮想環境のセットアップ、依存関係のインストール、およびテスト実行の手順を示します:
python -mvenv .venv
pip install ./scripts
pytest
仮想環境を終了するには、deactivateコマンドを実行してください。
ウェブサイトのビルド方法
ウェブサイトを構築するには、まず以下の方法で依存関係をインストールします:
python -mvenv .venv
pip install ./scripts
./scripts/create_site_pages.py
その後、以下のコマンドでmkdocsを起動します:
mkdocs serve --config-file scripts/mkdocs.yml
参考情報:
- ウェブサイトはmkdocsを使用して構築されています
- 多くのプラグインにはmkdocs-materialを採用しています
自動デプロイ機能
詳細はwebsite.ymlを参照してください。
変更点
- トラッキングIssueへのリンクを追加し、表形式でフォーマットを整備しました(@helge、2025年3月7日)
- 静的ウェブサイト関連の機能を実装 FEP#673
参考文献
- pukkamustard, FEP-a4ed: The Fediverse Enhancement Proposal Process, 2020年
著作権
CC0 1.0 Universal(パブリックドメイン献呈)
法律で認められる範囲において、本Fediverse Enhancement Proposalの著者らは、本作品に関するすべての著作権および関連または隣接する権利を放棄しています。