自社運営を行うときに専用サーバーを導入してシステムを構築、そこまで行うと運用コストもかかり、運用開始後もシステム運用のために知識を持っている人材が必要になります。これを極力コスト、人材の両面で削減してくれるのがGitHub Actionsです。
GitHub Actionsとはどういうもので、導入してどのようなメリットがあるのかを具体的に解説します。
プログラマー(PG)経験 3年 システムエンジニア(SE)経験 8年 プロジェクトマネージャー(PM)経験 7年 過去の開発システム ・ロケット飛行安全システム ・魚雷発射評価シミュレーションシステム ・船舶電話システム ・NHK番組管理システム ・IBM生産管理システム(データベース設計) ・学習塾管理システムパッケージソフト開発 ・6軸アームロボット開発 ・露光装置監視システム その他多数システム開発にかかわってきました。 39歳で独立して、アフィリエイトシステム開発と運営を3年ほど行い、 ライター業務を始めて現在に至ります。
GitHub Actionsとは
GitHub Actionsは、GitHubリポジトリ内で自動化されたワークフローを作成し、継続的インテグレーション(CI)や継続的デリバリー(CD)を実現するツールです。GitHubリポジトリに設定された条件や処理に基づき、コードのビルド、テスト、デプロイを自動で行います。これにより、開発者は手動での作業を大幅に削減し、効率的にソフトウェア開発を進められます。
GitHub Actionsの設定は、YAML形式のファイルで定義され、特定のイベント(例えばプッシュやプルリクエスト)がトリガーとなってアクションが実行されます。これにより、開発プロセスが自動化され、エラーのリスクが低減し、開発速度が向上します。GitHub Actionsは、さまざまな自動化タスクをサポートしており、リポジトリ内でのコードの管理やデプロイ作業をスムーズに行うための強力なツールです。
ここでは、GitHub Actionsの具体的な仕組みやメリットなどを解説していきます。
GitHub Actionsの仕組み
Github Actionsは、大きく分けてAction(アクション)、Workflow(ワークフロー)、Runner(ランナー)、Job(ジョブ)の4つに分類されています。それぞれの機能について下記に記述します。
項目 | 機能 |
Action (アクション) |
・ワークフロー(Workflow) ・ジョブ(Job) ・アクション(Action) ・イベント(Event)・シェルスクリプト、Dockerコンテナ、JavaScript |
Workflow (ワークフロー) |
・ジョブやアクションを自動化するために設定するファイル
・.github/workflows フォルダ内に格納 ・ファイル形式はYAML形式 |
Runner (ランナー) |
・ランナーは、GitHub Actionsのアクションを実行するための実行環境
・GitHubが提供するホスティングランナーや、自分で設定するセルフホステッドランナーを使用可能 ・Linux、Windows、macOSなどの環境で動作 |
Job (ジョブ) |
・Linux、Windows、macOSなどのOS環境で実行
・ワークフロー内で並列または順次処理 ・jobs.<job_id>.needsを使って、他のジョブとの依存関係を定義 ・適切な実行順序の設定 |
GitHub Actionsの導入手順と使い方
ここまで、GitHub Actionsの機能やメリットなどを解説してきました。GitHub Actionsは、どのように導入してするのかを具体的に解説します。
GitHubリポジトリにディレクトリを作成する
GitHubリポジトリにディレクトリを作成することで、関連するファイルをグループ化し、プロジェクト構造を整理できるのです。また、ディレクトリを作成することで、ファイルの種類別に分類することもできます。リポジトリのルートや他のディレクトリと分けられます。ディレクトリを作成することで、GitHubが自動的にワークフローを検出し、実行できるようになります。
ワークフローを作成・保存する
.github/workflows ディレクトリを作成することで、GitHub Actionsを活用して継続的インテグレーション(CI)や継続的デリバリー(CD)のプロセスを効果的に管理できます。このディレクトリ内に配置されたYAML形式の設定ファイルによって、コードのプッシュやプルリクエストなどのイベントに応じて、自動的にビルドやテストが実行されるよう設定できます。
また、GitHubのイベントをトリガーとして、さまざまなアクションを自動的に実行でき、プロジェクトのビルドからデプロイまでをスムーズに進められます。さらに、複数のジョブを独立して実行できるため、各タスクを効率的に分担し、並行処理が可能になります。これにより、開発プロセスの効率化と品質向上が実現できます。
GitHub Actionsを活用することで、ワークフローが作れます。ここでは、GitHub Actionsを使って作成できるワークフローを3つ紹介します。
CI(継続的インテグレーション)ワークフロー
コードが main ブランチにプッシュされたときやプルリクエストが作成されたときに、ビルドとテストを自動実行します。
yaml
コードをコピーする # .github/workflows/ci.ymlname: CI Workflow on: push: branches: – main pull_request: branches: – main jobs: build-and-test: runs-on: ubuntu-latest steps: – name: Checkout code uses: actions/checkout@v3 – name: Set up Node.js uses: actions/setup-node@v3 with: node-version: ’16’ – name: Install dependencies run: npm install – name: Run tests run: npm test |
CD(継続的デリバリー)ワークフロー
コードが main ブランチにマージされたときに、自動デプロイを行います。
# .github/workflows/deploy.yml
name: Deploy to Production
on: push: branches: – main jobs: deploy: runs-on: ubuntu-latest steps: – name: Checkout code uses: actions/checkout@v3 – name: Deploy to server uses: some/deploy-action@v1 with: server: ${{ secrets.SERVER_URL }} token: ${{ secrets.SERVER_TOKEN }} |
コードスタイルチェックとリント
コードがプッシュされたときに自動でコードのスタイルチェックやリントを実行します。
# .github/workflows/lint.yml
name: Lint Code on: push: branches: – main pull_request: branches: – main jobs: lint: runs-on: ubuntu-latest steps: – name: Checkout code uses: actions/checkout@v3 – name: Set up Python uses: actions/setup-python@v3 with: python-version: ‘3.8’ – name: Install dependencies run: | python -m pip install –upgrade pip pip install flake8 – name: Run linter run: flake8 . |
GitHub Actionsを使うメリット
それでは、GitHub Actionsを使うメリットには何があるのでしょうか?GitHub Actionsを使うメリットには以下の3つが考えられます。
- GitHubと連携して使用できる
- サーバーの準備がいらない
- 拡張性に優れる
GitHubと連携して使用できる
GitHub Actionsを利用することで、外部ツールやサービスに頼ることなく、GitHubリポジトリ内で直接CI/CDパイプラインの設定とセットアップができます。
プッシュ、プルリクエスト、イシュートラッキングなど、GitHub内のさまざまなイベントをトリガーとしてワークフローを自動実行できるため、開発の効率が大幅に向上します。アクションの実行状況やログ、結果はすべてGitHubのユーザーインターフェースで確認でき、視覚的に進捗状況を把握できます。
開発者はコードの変更やその結果をリアルタイムで確認し、迅速にフィードバックを得ることができるため、フィードバックループが短縮され、開発スピードが向上します。
セキュリティ面においてもGitHub Actionsは強力です。リポジトリのセキュリティ設定やアクセス権限と連動して、アクションの管理・実行を一元的にコントロールできるため、セキュリティリスクを最小限に抑えつつ、効率的な開発運用が可能です。
サーバーの準備がいらない
GitHub Actionsを使用すれば、専用のサーバーは必要sりません。GitHubはホスティングランナーを提供しており、これを利用することで仮想サーバー環境を構築し、サーバーの運用なしでCI/CDパイプラインを実行可能です。
この方法で、サーバーの設置や管理に関連するコストや労力を大幅に削減できます。
ホスティングランナーを使用することで、サーバーの保守・メンテナンスも不要です。GitHubのインフラがすべての作業をサポートし、運用やアップデートの負担を軽減するため、開発者はサーバー管理にかかる無駄なコストや労力から解放されます。
これにより、より効率的に開発作業を進められ、リソースを最大限に活用できます。
拡張性に優れる
GitHub Actionsは、その拡張性において非常に優れた機能を提供します。JavaScriptやDockerコンテナを用いてカスタムアクションを作成できるため、自分の特定のニーズに応じた処理を自動化が可能です。
この柔軟性により、さまざまなタスクを効率的に自動化できるのです。GitHub Actionsは、YAML形式の設定ファイルを使用して複雑なワークフローを自由に設計できます。ジョブやステップの依存関係を細かく設定し、並行処理や条件付き実行など、多様な要件に対応できます。
セルフホステッドランナーを活用すれば、特定のソフトウェアやハードウェア環境でもアクションを実行できるため、ニーズに合わせたカスタマイズが可能です。GitHubのAPIやWebhooksと統合すると、外部サービスやツールとの連携が簡単に行えます。
この連携で、より高度な自動化やカスタムなインテグレーションが実現でき、開発プロセスをさらに強化できます。
GitHub Actionsを他ツールと連携してみる
ここまで、GitHub Actionsの特徴やできることなどを解説してきました。ここでは、GitHub Actionsを他のツールと連携する方法を紹介します。
- Slackアプリ設定から通知用アプリの作成
- ワークスペースにアプリをインストール
- Webhook URLをGitHubに設定する
Slackアプリ設定から通知用アプリの作成
アプリを追加するには、まずワークスペースを選択し、次にYAMLファイルをApp Manifestに設定します。最後に、incoming-webhookを使ってSlackに通知を送信します。これにより、GitHub Actionsでの通知がSlackチャンネルに届くようになります。
ワークスペースにアプリをインストール
ワークスペースにアプリをインストールするには、「その他」にマウスポインターを重ね、 「自動化」を選択します。「App」をクリックします。
インストールしたいアプリを検索して「追加」を選択すると、Slack App ディレクトリに自動的に移動します。「Slack に追加」を選択して完了です。
Webhook URLをGitHubに設定する
GitHubのリポジトリの画面でSettingsタブをクリックすると、左のリストメニューにWebhooksという項目があるので選択します。
「Add webhook」を押下することで、Webhookを作成できます。
Payload URLはWebhookのPOSTリクエストを受け取るURLです。
Content typeはPOSTリクエストのContent typeです。
通常のキー1=値1&キー2=値2
のフォーム形式かJSONのデータを受け取るかの指定ができます。
GitHub Actionsの主なActionコマンド
GitHub ActionsにはたくさんのActionコマンドがあります。ここでは、Actionコマンドの代表的なものを解説します。
Action名 | 概要 |
Run | シェルコマンドやスクリプトを実行するときに使う |
Uses | GitHub Actionsを呼び出すときに使う |
With | uses コマンドを使ったときに使用するパラメータを定義する |
Env | 環境変数を定義するもの |
Jobs | ワークフロー内で実行するジョブを定義する |
Steps | ジョブ内で使うコマンドやアクションを指定する |
runs-on | ジョブの実行環境を定義する(使用するOSの種類を定義) |
On | トリガーするイベントを定義するときに使うコード |
Needs | 実行順序を考えて、他のジョブが完了するまで待機するために使う |
If | 条件付きでステップやジョブを実行を分岐させるときに使う |
Defaults | ジョブなどのデフォルト設定を行う |
continue-on-error | エラーになってもそのまま実行するようにする |
timeout-minutes | ジョブ実行の制限時間の設定 |
steps.with | ステップ内でアクションに対してパラメーターを渡す |
Outputs | ジョブから辻のジョブへ値を渡すときに使う |
Secrets | GitHub Secretsから機密情報を取得する |
GitHub Actionsを使う上での注意点
GitHub Actionsを実際に使うときには、いくつか注意点があります。プランごとに使える時間や容量が変わります。また、利用には制限される機能があるので注意してください。注意点を具体的に解説します。
プランによって使える時間・容量が異なる
GitHub Actionsを利用するとき、プランが複数あります。プランごとに費用や利用容量などが変わっているので、その点をしっかり把握してからプランを選定しましょう。
自社の運用に合ったプランを選ぶことが重要になります。
プラン名 | プランの費用 | 利用可能時間 | ストレージ容量 |
Free | 無料 | 月2,000分 | 500Mb |
team | 1ユーザー1年間44$ | 月3,000分 | 2Gb |
Enterprise | 1ユーザー1年間231$ | 月50,000分 | 50Gb |
プランを選ぶときは、各プランの制約などを理解してから利用してください。
利用には制限がある
GitHub Actionsを使用する際には、以下の制限を遵守する必要があります。まず、GitHub Actionsは、コンテンツ配信ネットワーク(CDN)やサーバーレスアプリケーションの一部として使用することはできません。
また、クリプトマイニングやその他の悪意ある行為に利用することも厳しく禁止されています。加えて、サービス、デバイス、データ、アカウント、ネットワークの中断や取得、不正使用に利用することも禁止されています。
さらに、GitHub Actionsの製品やサービスを商業目的で利用することも認められていません。これらのガイドラインを守ることで、GitHub Actionsの安全で公平な利用が確保されます。
まとめ:GitHub Actionsの特徴やメリットを理解して開発に役立てよう
ここまでGitHub Actionsの特徴やメリットについて詳しく説明してきましたが、これにより自社にどのような利益がもたらされるかが明確になったかと思います。自社の開発プロセスの効率化や品質向上に大いに役立つことでしょう。その一方で、AI技術の導入においてもサポートが必要な場合があります。
株式会社Jiteraは、豊富な専門知識を持ち、AIを活用したシステム開発やAI導入支援を行っております。もしAIに関する質問やプロジェクトのご相談があれば、ぜひ株式会社Jiteraへご連絡ください。自社の利益拡大に向けて、私たちが全力でサポートいたします。