AURA 株式会社アウラ

RECRUIT急募!採用エントリー
設定した仕事を自動的にしてもらう!Github Actionsを使ってみた

スタッフブログ

Staff Blog
  1. ホームページ制作はアウラ:ホーム
  2. スタッフブログ
  3. 設定した仕事を自動的にしてもらう!Github Actionsを使ってみた

設定した仕事を自動的にしてもらう!Github Actionsを使ってみた

設定した仕事を自動的にしてもらう!Github Actionsを使ってみた

みなさん、こんにちは。タスクの自動化に目を向けている周です。

仕事の自動化が進んでいる今、Web開発においては「CI/CD」といい、定期テストの自動化、本番環境への反映タスクの自動化ができるツールも多く出てきています。

ソースコードの管理ができる「Github」が提供する「Github Actions」もその中の一つです。
今回はこの「Github Actions」を使って定期テストのソースを動かしてみました。

ワークフローの設定ファイル

Github Actionsでタスクを実行してもらうため、どのような条件、そしてどのような環境で、何のタスクを実行するかをワークフローの設定ファイルで教えてあげる必要があります。
以下のように .githubフォルダの中に workflows フォルダを作成し、中に設定ファイルの main.yml を作成します。

.github
 └ workflows
    └ main.yml      // ワークフローの設定ファイル

下記はワークフローの設定ファイルの設定例となります。

// .github/workflows/main.yml

# ワークフロー名
name: workflow_name

# ワークフローの実行タイミング
on:
  schedule:
    # 定期実行する時間 毎時0分に実行
    - cron: '0 * * * *'

# ワークフローの詳細
jobs:
  build:
    # Ubuntuの最新版環境内で処理を実行することを指定
    runs-on: ubuntu-latest

    # 実行する処理&コマンド指定
    steps:
      - uses: 
          # Github actions 公式でハンドルされるアクション
          actions/checkout@v4
      - name: Set up Python 3.8.18
        uses: actions/setup-python@v3
        with:
          python-version: 3.8.18
      - name: Install dependencies
        run: |
          # pip更新
          python -m pip install --upgrade pip
          # packageインストール
          pip install urllib3
          pip install requests
          pip install python-dotenv
          # pip install beautifulsoup4
      - name: Run script
        run: |
          python index.py

では、ワークフローの設定ファイルの構造を詳しく見ていきましょう。

1.ワークフローの名前

まず最初に、ワークフローの名前を入力します。

# ワークフロー名
name: workflow_name

2.ワークフローの実行タイミング

つぎにワークフローの実行タイミングを定義します。

例では、cronを使って毎時0分に実行するように設定しています。
なお、標準時間との差のため、設定した時間とズレが発生してしまいます。

cronは、設定したように定期的に実行することができるOSシステムの備え付けのジョブ管理ツールです。

# ワークフローの実行タイミング
on:
  schedule:
    # 定期実行する時間 毎時0分に実行
    - cron: '0 * * * *'

また、下記のようにpull_requestイベントを使うと、マージされたタイミングでワークフローを実行することができます。

# ワークフローの実行タイミング
on:
  pull_request:
	  branchs: [main]

3.最新のUbuntu環境の指定

仮想環境のOSシステムの定義となります。今回は最新のOS環境で処理を実行するように指定しています。

# ワークフローの詳細
jobs:
  build:
    # Ubuntuの最新OS環境で処理を実行することを指定
    runs-on: ubuntu-latest

4.Github Actionsのアクションの指定

つぎは処理の実行をハンドルするアクションのバージョンを選びます。
2024年6月現在は、 actions/checkout@v4 が最新バージョンとなります。

また、リリース情報は下記のURLから確認することができます。
https://github.com/actions/checkout/releases

    # 実行する処理&コマンド指定
    steps:
      - uses: 
          # Github actions 公式でハンドルされるアクション
          actions/checkout@v4

5.利用するプログラミング言語とライブラリのインストール

今回実行する処理で使うプログラミング言語と、必要なライブラリを定義します。
今回はPython、Pythonのパッケージを管理するpip、そして必要なパッケージを指定しています。

      - name: Set up Python 3.8.18
        uses: actions/setup-python@v3
        with:
          python-version: 3.8.18
      - name: Install dependencies
        run: |
          # pip更新
          python -m pip install --upgrade pip
          # packageインストール
          pip install urllib3
          pip install requests
          pip install python-dotenv

6.実行するファイル

最後に実行するプログラムを記述しているファイルを指定します。

      - name: Run script
        run: |
          python index.py

ワークフローの設定ファイルを記述し、mainブランチにマージしたタイミングでタスクの実行が始まります。

タスクの実行結果の確認

タスクの実行が成功したかどうかをGithubのリポジトリページの「Action」タブから確認することができます。

実行する履歴をクリックすると、さらに実行するステップの詳細を確認できます。
失敗した場合もこちらからどのステップで止まってしまったかを調べることができます。

秘密情報の扱い

実行するワークフローのプログラムで利用するデータベース情報APIキーなどの秘密情報もリポジトリごとに登録することができます。
まずは、下記のようにリポジトリのセッティングタブから、Github Actions用のシークレット変数を設定します。

そして、設定したシークレット変数をプログラム上で使えるように、ワークフローの設定ファイルで環境変数の設定をします。
jobs の上に下記のように追記します。

// .github/workflows/main.yml

# 環境変数
env:
  # Google API名
  GOOGLE_API_NAME: spreadsheets
  # Google APIキー
  GOOGLE_API_KEY: ${{secrets.GOOGLE_API_KEY}}
  # スプレットシートID
  SPREADSHEET_ID: ${{secrets.SPREADSHEET_ID}}
  # シート名
  SHEET_NAME: maintenance
  # ChatWork APIキー
  CHATWORK_API_KEY: ${{secrets.CHATWORK_API_KEY}}
  # ChatWork 部屋ID 保守案件 動作状況のお知らせ
  CHATWORK_ROOM_ID: ${{secrets.CHATWORK_ROOM_ID}}

Pythonの場合、設定ファイルで追記した変数は、下記のように呼び出すことができます。

// index.py
gooleApiKey = os.getenv('GOOGLE_API_KEY')

Github Actionsの課金

Github Actionsでは月2000分以内の場合、フリープランで利用することができます。
しかし、2000分を超える場合、従量課金で請求が発生してしまいます。
フリープランだけで利用したい場合は、2000分を超えないように上限を設定する必要があります。

Githubの課金の詳細について、下記の公式ドキュメントをご参照ください。
https://docs.github.com/ja/billing/managing-billing-for-github-actions/about-billing-for-github-actions#about-spending-limits

まとめ

定期的な動作チェックや、マージされたタイミングでサーバーへの反映など、そのようなタスクを自動化できる「Github Actions」の使い方の紹介でした。
自動化ツールの活用によって、今まで手動で実行しないといけないタスクも、時短でできるようになりました。これからもいろんな業務で活用できたらと思っています。

お電話でのお問い合わせはこちら:06-6292-8577。受付時間は平日9:30~18:30 インターネットからは24時間受付中!お問い合わせフォームはこちら
RECRUIT急募!採用エントリー