GitHub Actionsのワークフローを可視化するactions-timelineを導入
GitHub Actionsのワークフローを可視化するactions-timelineを導入
Specteeでエンジニアをしている峯田です。
導入経緯
プロジェクトの規模が大きくなるにつれて、GitHub Actionsのワークフローが複雑化し、各ジョブやステップの実行状況を把握することが難しくなってきました。特に、実行時間の長いジョブやステップを特定し、最適化する必要がありました。
そこで、ワークフローの実行状況を視覚的に確認できるツールを探していたところ、actions-timelineを見つけました。このツールを導入することで、ワークフローの各ジョブやステップの実行時間や順序をタイムライン形式で表示し、直感的に把握できるようになると考えました。これにより、デバッグや最適化が容易になり、開発効率の向上が期待できるため、actions-timelineを導入することにしました。
概要説明
actions-timelineは、GitHub Actionsのワークフローをタイムライン形式で表示するツールです。これによって、各ジョブやステップの実行時間や順序を視覚的に確認することができます。具体的には、以下のような特徴があります。
- 視覚的な表示: ワークフローの各ジョブやステップがタイムライン形式で表示されるため、全体の流れを直感的に把握できます。
- 実行時間の確認: 各ジョブやステップの実行時間が表示されるため、どの部分に時間がかかっているのかを簡単に特定できます。
- デバッグの容易さ: 実行時間や順序が一目でわかるため、問題のある部分を迅速に特定し、デバッグを効率的に行うことができます。
よって、このツールを使うことで、ワークフローの最適化や問題解決が容易になり、開発効率の向上が期待できます。実際に公式で紹介されているタイムライン図のサンプルを以下に示します。
引用:Kesin11/actions-timeline
導入方法(実装例)
timelineジョブが最後に実行されることで、ワークフロー全体や各ジョブの実行時間を計測し、タイムライン形式で表示できます。
jobs:
# buildの処理
# testの処理
# deployの処理
#timelineの処理
timeline:
needs: deploy
permissions:
actions: read
runs-on: ubuntu-latest
steps:
- uses: Kesin11/actions-timeline@v2
導入効果
今回、actions-timelineの導入によって、課題解決できた例の一つを下記に共有します。
現行におけるワークフローの実行状況
タイムラインが作成されたことによって、静的解析におけるinstall dependencyがpythonとcspellを合わせて50秒近くかかっていたことがわかりました。
課題を解決
次の変更によって、install dependencyの実行時間を10秒に短縮することができました。
-
cspell install に関しては、"npm install -g cspell" の代わりに、"streetsidesoftware/cspell-action@v6" を使用した
-
python install に関しては、"pip" を使う代わりに、インストールが高速な "rye" を使用した
まとめ
今回、actions-timelineを導入することによって、ワークフローの実行状況を視覚的に把握し、最適化のポイントを特定することができました。このことをきっかけとして、各ジョブやステップの実行時間を短縮し、全体の開発効率を向上させることができました。
今後は、キャッシュ機能を使って、github-actionsのさらなる高速化を検討します。
次回もお楽しみに!
Discussion