【Git】GitHub ActionsでWikiを自動管理 - j-komatsu/myCheatSheet GitHub Wiki
GitHub Wikiを自動管理し、ページをカテゴリ分けすることで、効率的に情報を整理できます。本記事では、GitHub Actionsを活用してWikiを管理しつつ、キーワード辞書を使ってページを分類する具体的な方法を紹介します。
- GitHub Wikiリポジトリをクローンする。
- キーワード辞書を使ってページをカテゴリ分けするスクリプトを作成する。
- GitHub Actionsを設定して、自動化する。
GitHub Wikiは独立したGitリポジトリとして管理されています。
-
WikiページのURLにアクセスします。
- URL形式:
https://github.com/<username>/<repository>/wiki
- URL形式:
-
Wikiリポジトリをクローンします。
git clone https://github.com/<username>/<repository>.wiki.git
-
クローンしたフォルダに移動します。
cd <repository>.wiki
キーワード辞書を使用して、Wikiページのタイトルを自動的にカテゴリ分けするスクリプトを作成します。
- 背景: Wikiのページタイトルはさまざまな内容を含むため、一定のルールに基づいて整理する必要があります。
- 役割: JSON形式の辞書は、カテゴリとそれに対応するキーワードを明確に定義し、分類を自動化するための入力データとして機能します。
-
keywords.json
: キーワード辞書のファイル- 配置場所: Wikiリポジトリのルートディレクトリ(例:
<repository>.wiki/keywords.json
)。
- 配置場所: Wikiリポジトリのルートディレクトリ(例:
-
generate_index.py
: インデックス生成スクリプト- 配置場所: Wikiリポジトリのルートディレクトリ(例:
<repository>.wiki/generate_index.py
)。
- 配置場所: Wikiリポジトリのルートディレクトリ(例:
-
.github/workflows/wiki-index.yml
: GitHub Actionsの設定ファイル- 配置場所: ルートリポジトリ内の
.github/workflows/
ディレクトリ。
- 配置場所: ルートリポジトリ内の
以下は、スクリプトで使用するキーワード辞書の例です。
{
"Gitコマンド": ["Git", "branch", "commit", "push", "merge", "rebase", "clone", "pull", "fetch"],
"Linuxシステム": ["Linux", "shell", "bash", "command", "cron", "chmod", "chown", "grep", "awk", "sed", "systemctl"],
"プログラミング": ["Python", "Java", "JavaScript", "コード", "プログラム", "関数", "クラス", "オブジェクト", "ライブラリ", "モジュール"],
"データベース": ["SQL", "MySQL", "PostgreSQL", "MongoDB", "データ", "クエリ", "スキーマ", "テーブル", "カラム", "インデックス", "ビュー"],
"ネットワーク": ["TCP/IP", "HTTP", "HTTPS", "DNS", "プロトコル", "ポート", "ファイアウォール", "ロードバランサ", "VPN", "Ping"],
"クラウド": ["AWS", "Azure", "GCP", "クラウド", "コンテナ", "Kubernetes", "Docker", "Lambda", "EC2", "S3", "CloudFront"],
"セキュリティ": ["暗号化", "SSL", "TLS", "ファイアウォール", "認証", "認可", "セキュリティグループ", "IAM", "脆弱性", "ペネトレーションテスト"],
"その他": []
}
-
読み込み: スクリプトは
load_keywords()
関数を通じて、このJSONファイルを読み込みます。 - 処理: タイトル内のキーワードをマッチさせ、対応するカテゴリに分類します。
-
出力: 分類結果を元に
INDEX.md
を生成します。
import json
import os
# キーワード辞書の読み込み
def load_keywords(file_path):
with open(file_path, "r", encoding="utf-8") as f:
return json.load(f)
# カテゴライズ関数
def categorize(title, keywords):
for category, words in keywords.items():
if any(word.lower() in title.lower() for word in words):
return category
return "その他"
# インデックス生成
def generate_index(base_path, keywords):
index = {}
for file in os.listdir(base_path):
if file.endswith(".md"):
title = file.replace(".md", "")
category = categorize(title, keywords)
index.setdefault(category, []).append(title)
with open(os.path.join(base_path, "INDEX.md"), "w", encoding="utf-8") as f:
for category, pages in sorted(index.items()):
f.write(f"## {category}\n")
for page in sorted(pages):
f.write(f"- [{page}]({page.replace(' ', '%20')}.md)\n")
GitHub Actionsを使って、Wikiページのインデックス生成を自動化します。
以下の例では、GitHub ActionsがWikiリポジトリをチェックアウトし、スクリプトを実行してINDEX.md
を更新します。
name: Update Wiki Index
on:
push:
branches:
- main
schedule:
- cron: '0 0 * * *' # 毎日深夜に実行
jobs:
update-index:
runs-on: ubuntu-latest
steps:
- name: Checkout Wiki
uses: actions/checkout@v3
with:
repository: '<username>/<repository>.wiki'
path: 'wiki'
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.x'
- name: Install Dependencies
run: pip install -r requirements.txt
- name: Generate Index
run: python wiki/generate_index.py wiki
- name: Commit and Push Changes
run: |
cd wiki
git config --local user.name "github-actions[bot]"
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git add INDEX.md
git commit -m "Update Wiki Index"
git push
GitHub ActionsがWikiリポジトリにアクセスできるようにするため、Personal Access Tokenを設定します。
-
GitHubの「Settings > Developer settings > Personal access tokens」からトークンを作成します。
- スコープ:
repo
- スコープ:
-
トークンをGitHub Secretsに追加します。
- リポジトリの「Settings > Secrets and variables > Actions」から
WIKI_TOKEN
として登録。
- リポジトリの「Settings > Secrets and variables > Actions」から
-
Actions設定ファイルで以下を追加します。
with: token: ${{ secrets.WIKI_TOKEN }}
以下の3つのファイルを正しい場所に配置し、リポジトリにプッシュすることで自動生成が行われます。
-
keywords.json
: キーワード辞書のファイル- 配置場所:
<repository>.wiki/keywords.json
- 配置場所:
-
generate_index.py
: インデックス生成スクリプト- 配置場所:
<repository>.wiki/generate_index.py
- 配置場所:
-
.github/workflows/wiki-index.yml
: GitHub Actionsの設定ファイル- 配置場所: ルートリポジトリ内の
.github/workflows/
ディレクトリ
- 配置場所: ルートリポジトリ内の
-
ファイルをステージングしてコミットします。
git add keywords.json generate_index.py .github/workflows/wiki-index.yml git commit -m "Add files for Wiki automation" git push
-
GitHub Actionsがトリガーされ、
generate_index.py
が実行されます。 -
自動的に
INDEX.md
が生成され、Wikiリポジトリに反映されます。
- GitHub ActionsがWikiページを監視し、変更があれば自動で
INDEX.md
を生成します。 - インデックスには、キーワード辞書を基にカテゴリ分けされたページが一覧表示されます。
# インデックス
## Gitコマンド
- [Gitの基本コマンド](Gitの基本コマンド.md)
## Linuxシステム
- [Linuxで使える便利なシェルスクリプト](Linuxで使える便利なシェルスクリプト.md)
## プログラミング
- [Pythonを使ったデータ分析](Pythonを使ったデータ分析.md)
GitHub Actionsとキーワード辞書を組み合わせることで、Wiki管理が効率化され、インデックス生成やページの分類を自動化できます。 この記事を参考に、ぜひ自動管理を始めてみてください!