LoginSignup
1
0

生成AIで GitHub Actions のワークフローを作成する

Posted at

伝えたいこと

  • 生成 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 でチャットから指示した場合も同等の結果を得ることが出来た。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0