github actions pythonファイルを無料で定期実行

Server

GitHub Actionsは、GitHubが提供するCI/CD(継続的インテグレーション/継続的デリバリー)の機能です
これにより、コードのビルド、テスト、デプロイなどのワークフローを自動化できます

今回はGitHub Actionsを使って、前回の記事で紹介した自動でLINE送信するコードを定期実行したいと思います

無料枠が十分にありますので是非試してください

前回の記事はこちらです

GitHub Actionsの特徴

  1. ワークフローの自動化
    • コードの変更があったとき(pushやpull request)に、自動でビルドやテストを実行
    • スケジュール実行(cronジョブ)も可能
    • IssueやPull Requestのラベル付けなどのタスク自動化
  2. YAMLベースの設定
    • .github/workflows/ディレクトリ内にYAMLファイルを作成し、ワークフローを定義
    • シンプルな記述で複雑なワークフローも構築可能
    • YAMLファイルとは?
      • YAML(YAML Ain’t Markup Language) は、シンプルで可読性の高いデータ記述フォーマットです
        主に、設定ファイル(configファイル)として使用されます
  3. 豊富なアクション(Actions)
    • 公式およびサードパーティ製のアクションがGitHub Marketplaceで利用可能
    • 独自のカスタムアクションを作成することも可能
  4. マトリクス構成
    • 異なるOS(Windows, Linux, macOS)や異なるバージョンの環境で並列実行可能

GitHub Actionsの使い方

GitHub Actions は、リポジトリ内の .github/workflows/ フォルダにワークフローファイル(YAML形式)を作成することで設定できます

設定の流れ

  1. リポジトリの作成(または既存のリポジトリを使用)
  2. ワークフローファイルの作成(YAMLファイルを .github/workflows/ に配置)
  3. 環境変数の定義
  4. ワークフローをプッシュ
  5. GitHub Actionsの実行と確認

① リポジトリの作成

まずは今回定期実行したいファイルをGithubのリモートリポジトリにプッシュします

Githubにプッシュする方法は以前の記事で紹介しているので参考にしてください


② ワークフローファイルを作成

  1. GitHubリポジトリを開く
  2. .github/workflows/ フォルダを作成
  3. .github/workflows/main.yml というファイルを作成

ワークフローファイルの記述

以下は、Pythonのスクリプトを定期実行するワークフローの例です

name: LINE Message #ワークフロー名を定義

on:
  schedule:
    - cron: '40 5 * * *'  # 毎日5時40分に実行

jobs:
  send-line: #ジョブ名を定義
    runs-on: ubuntu-latest #Ubuntu 環境で実行

    steps:
      - name: リポジトリをチェックアウト
        uses: actions/checkout@v4

      - name: Python をセットアップ
        uses: actions/setup-python@v4
        with:
          python-version: '3.12.2'

      - name: 依存関係をインストール
        run: pip install -r requirements.txt

      - name: LINEメッセージ送信スクリプト実行
        run: python main.py
        env:
          LINE_ACCESS_TOKEN: ${{ secrets.LINE_ACCESS_TOKEN }}

少し解説します

runs-on: ubuntu-latest #Ubuntu 環境で実行

Ubuntu環境で実行

  • 特に理由がなければUbuntu環境がおすすめです
  • 速度が速く、設定も簡単で扱いやすいです
steps:
  - name: リポジトリをチェックアウト
    uses: actions/checkout@v4

リポジトリのコードを取得

  • GitHub リポジトリのコードを runner(仮想環境)に取得(clone) するアクション
  • これにより、スクリプト main.py や requirements.txt を取得できます
- name: Python をセットアップ
  uses: actions/setup-python@v4
  with:
    python-version: '3.12.2'

runner(仮想環境)のpythonのセットアップ

  • 自分のローカルのpythonバージョンと合わせる
- name: 依存関係をインストール
  run: pip install -r requirements.txt

runnerにライブラリをインストール

  • requirements.txtに記載されたライブラリをrunnerにインストールします
  • requirements.txtはローカル環境のPCで以下のコマンドで作成してください
pip freeze > requirements.txt

③ 環境変数の定義

GitHub Secrets を使って .env に入れるべきAPIキーなどを安全に管理できます

GitHub の「Settings」→「Secrets and variables」→「Actions」を開く

「New repository secret」ボタンをクリック

以下の情報を入力

  • Name(LINE_ACCESS_TOKEN) → 大文字の英数字と _ のみ
  • Value(LINEのアクセストークン)を入力

「Add secret」ボタンをクリック

  • Secrets はリポジトリ管理者しか見れず、GitHub上では一度登録した値を確認・編集できません(削除して再登録は可能)
  • 変更が必要な場合は、一度削除してから新しい値を登録してください

④ ワークフローを GitHub にプッシュ

ymlファイルを作成後、リモートリポジトリに追加・プッシュします


⑤ GitHub Actions の実行を確認

  • GitHubリポジトリの「Actions」タブを開く
  • LINE Messegeというワークフローをクリック
  • Send-lineというジョブをクリック

ここで実行ログが確認できます

ログは誰でも見れるので環境変数などが表示されないように注意してください


      手動実行の方法(GitHubのUIから)

      ① GitHub の「Actions」タブを開く

      1. GitHubリポジトリのページを開く
      2. 上部の「Actions」タブをクリック

      ② 手動実行するワークフローを選択

      1. 左側のリストからワークフローを選ぶ
      2. 右下の Run workflow ボタンをクリック

        ③ 実行オプションを選択

        • 「Run workflow」ダイアログが開く
        • 必要ならブランチを選択(通常は main)
        • Run workflow ボタンを押すと実行開始

        GitHub Actionsを使うと、GitHubリポジトリ内でCI/CDパイプラインを簡単に設定・実行できます
        特にGitHubとの統合が強力で、さまざまなタスクを自動化できるため、開発の効率化に役立ちます

        GitHub Actions は「無料枠」がありますので、個人なら十分使えると思います
        プランによって 使える時間の上限 や 課金ルール が異なります

        無料プラン (Free) の場合

        • Ubuntu: 2,000 分/月
        • Windows: 1,000 分/月
        • macOS: 200 分/月

        無料枠を超えると、追加の実行時間ごとに課金されます

        もし、無料枠を超えるか心配なら、[Settings] → [Billing] で使用状況をチェックできます

        右上のアイコン(プロフィール画像)をクリック「Settings」を選択

        左側のメニューで「Billing and plans」をクリック

        plans and usage」をクリック

        下のほうにあるUsage this monthをチェック

        ぜひ無料で有効に活用してください

        コメント