伝えたいこと
- 生成 AI はプログラミング以外にも使える
- ワークフローの yaml 生成をサポートしてもらう
概要
- GitHub Actions はワークフローを YAML 形式で定義して実行することができる
- テキスト形式になるので生成 AI のサポート受けやすい
実例
GPT-4 Turbo を使った例
プロンプト
GitHub Actions で利用するワークフローを作りたい。yaml ファイルを生成して。要件は以下。
- python を利用
- 手動実行
- sample.py を実行する
生成されたYAML
name: Manual Python Script Execution
on:
workflow_dispatch: # このワークフローは手動でトリガーされます
jobs:
run-python-script:
runs-on: ubuntu-latest # 最新の Ubuntu ランナーを使用
steps:
- name: Checkout repository
uses: actions/checkout@v3 # リポジトリのコードをチェックアウト
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.x' # Python 3.x を使用
- name: Install dependencies
run: |
python -m pip install --upgrade pip
# 必要な依存関係があればここでインストールします
- name: Run sample.py
run: python sample.py # sample.py スクリプトを実行
runs-on は環境に合わせて変更していく。
そのまま実行可能なものが生成された。
定期実行も可能だが UTC で指定する必要がある。
日本時間でを強調しての生成にも成功した。
プロンプト
日本時間で毎週火曜日の午後2時からワークフローを実行させるには?
on:
workflow_dispatch:
schedule:
- cron: '0 5 * * 2' # 毎週火曜日の05:00 UTCに実行(日本時間の午後2時)
フロー失敗時にslack通知したいケース
プロンプト
処理が異常終了した場合に slack 通知したい場合はどうすれば良い?
(省略)
- name: Run sample.py
run: python sample.py
continue-on-error: true # エラーが発生しても次のステップに進む
- name: Notify Slack on failure
if: ${{ failure() }} # 前のステップでエラーが発生した場合にのみ実行
uses: 8398a7/action-slack@v3
with:
status: ${{ job.status }}
fields: workflow,job,commit,repo,ref,author,took # 通知に含めるフィールド
author_name: GitHub Actions
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} # GitHub Secrets から Webhook URL を取得
slack 通知に使用するアクションも色々あるが対応してくれた
GitHub Copilot でチャットから指示した場合も同等の結果を得ることが出来た。