学習教材自動生成パイプライン構築(開発日記 No.109)
関連リンク
はじめに
昨日はITIL4学習教材自動生成パイプラインの構築に取り組みました。本日は、その過程で発生したIssue #2に対応し、パイプラインのエラー解消と機能改善を目指します。
背景と目的
Issue #2は、ITIL4学習教材自動生成パイプラインの初期設定とcontent-converter
の利用方法に関するものです。初期値の誤りや、content-converter
の引数設定に不備があり、パイプラインが正常に動作していませんでした。これらの問題を解決し、教材の自動生成を安定させることを目的とします。
検討内容
まず、Issue #2の最新コメントを確認し、指摘されている問題点を洗い出しました。具体的には、current_day.txt
の初期値の修正と、content-converter
のインストール方法、引数の修正が必要です。また、GitHub Actionsの実行ログを分析し、エラーの原因を特定しました。
実装内容
以下に、具体的な実装内容を示します。
1. Issue #2 の初期値に関する修正
-
security-study/ITIL4-Foundation/current_day.txt
の初期値を Issue の最新コメントに基づき9
から11
に修正しました。 -
.github/workflows/generate_itil_study_material.yml
内の、current_day.txt
が存在しない場合の初期値も11
に修正しました。
content-converter
の利用方法に関する修正
2. -
.github/workflows/generate_itil_study_material.yml
にて、content-converter
のインストール方法をpip install git+https://github.com/centervil/content-converter.git
に修正しました。 -
content-converter
のコマンド引数を--prompt "${{ steps.generate_prompt.outputs.GENERATED_PROMPT }}"
から--input "security-study/ITIL4-Foundation/00_plan.md" --output "$OUTPUT_FOLDER_PATH/Day${CURRENT_DAY}_ITIL4-Foundation_study.md" --template "$FORMAT_FILE_PATH" --prompt "$PROMPT_FILE_PATH"
へと修正しました。 - プロンプト文字列を直接渡すのではなく、一時ファイルに書き出してそのファイルパスを
--prompt
に渡すように変更しました。これにより、多行のプロンプトが正しく処理されるようになりました。
3. エラーの解消
上記の修正により、GitHub Actions のパイプライン (実行ログ) で発生していたエラーが解消されました。
技術的なポイント
- GitHub Actionsの
GITHUB_OUTPUT
に多行文字列を渡す際に、EOF
デリミタを使用することで、特殊文字や改行を含む文字列を正しく処理できるようになりました。 -
content-converter
にプロンプト文字列を直接渡すのではなく、一時ファイルに書き出してそのファイルパスを渡すことで、多行のプロンプトを正しく処理できるようになりました。
所感
Issue #2への対応を通して、GitHub Actionsのワークフロー定義や、content-converter
の利用方法について深く理解することができました。特に、多行文字列の扱い方や、外部ツールへの引数渡し方など、実践的な知識を得ることができました。エラーが発生した際は、ログを丁寧に分析し、原因を特定することが重要だと改めて感じました。
今後の課題
GitHub Actionsの設定で、リポジトリの Actions > General > Workflow permissions にて Read and write permissions
を有効にし、Allow GitHub Actions to create and approve pull requests
をチェックする必要があることを確認しました。これにより、自動コミット・プッシュが可能になります。 今後はこの設定を行い、自動化をさらに進めていきたいと考えています。
まとめ
本日は、ITIL4学習教材自動生成パイプライン構築におけるIssue #2に対応し、初期値の修正、content-converter
の利用方法の改善、エラーの解消を行いました。これにより、パイプラインの安定性が向上し、教材の自動生成がスムーズに進むようになりました。
Discussion