GitHub ActionsやCI/CDとは何か?.github/workflowsやワークフローファイルの作成と削除方法を実例で解説

github-prograshi(プロぐらし)-kv git/github
記事内に広告が含まれていることがあります。

システム開発でよく聞く「CI/CD」や「GitHub Actions」という言葉。これらは開発の自動化に不可欠ですが、「何となく難しそう」と感じていませんか?

本記事では、GitHub Actionsの基本から、その核となるCI/CDの概念までを初心者にもわかりやすく解説しています。

さらに、実際に自動化を実現するために必須となる.github/workflowsディレクトリやワークフローファイル(.yml)の具体的な作成および削除手順を、実例コード付きでご紹介しています。

この記事を読めば、あなたも今日から自動化をスタートできます!


GitHub Actionsとは何か?

GitHub Actionsは、GitHubが提供するCI/CD(継続的インテグレーション/継続的デリバリー)のための自動化プラットフォームです。

GitHub上でコードのプッシュやプルリクエストの作成など、特定のイベントが発生したときに、あらかじめ定義しておいた一連の作業を自動で実行してくれる仕組みです。

開発者が手動で行っていたビルド、テスト、デプロイといった作業を自動化することで、開発の効率化をすることができます。

プライベートリポジトリの場合、無料枠(通常2,000分/月)が適用されます。ビルドの実行時間を5分とすると、400回/月までが無料となります。

パブリックリポジトリであれば、実行時間は無制限で無料です。

MEMO

GitHubの上部メニューの「Actions」がGitHub Actionsです。


CI/CDとは何か?

CI/CDの概要

GitHub Actionsと必ずと言っていいほど一緒に使われる用語に「CI/CD」があります。

CI/CD(シーアイ・シーディー)とは、ソフトウェアを自動でテストして、自動でリリースする仕組みのことです。

①継続的インテグレーション(CI)と、②継続的デリバリー(CD)(または、継続的デプロイメント)を組み合わせたものです。


CIとは何か?|継続的インテグレーション (CI: Continuous Integration)

CIすなわち、継続的インテグレーション(統合)とは、プログラムを作る人たちが変更を加えるたびに、自動でテストして、動くかどうかをチェックする仕組みのことです。

例えば、Aさんが「ログイン機能」を変更したり、Bさんが「デザイン」を修正した場合に、CIがそれぞれ自動でプログラム全体をテストして、「エラーが出てないか?」「ちゃんと動くか?」を確認する作業のことを言います。


CDとは何か?| Continuous Delivery(継続的デリバリー)または Continuous Deployment(継続的デプロイ)

CDとは、「Continuous Delivery(継続的デリバリー)」または「Continuous Deployment(継続的デプロイ)」の略で、「継続的な配布」または「継続的な展開」のことを指します。

具体的には、テストに合格したプログラムを、自動でサーバーやユーザーの環境にリリースしてくれる仕組みのことです。

例えば、CIによるテストが全部OKだったら、自動でWebサイトにアップする処理がCDです。


GitHub Actionsとの関係

GitHub Actionsは、自動でコードをテストして、エラーがなければデプロイするといった組み込みができるので、まさしくCI/CDツールの一つです。


GitHub Actionsの主な構成要素

GitHub Actionsは、GitHubが提供する継続的インテグレーション/継続的デリバリー(CI/CD)のための自動化プラットフォームです。

一言でいうと、「GitHub上で特定のイベント(コードのプッシュやプルリクエストの作成など)が発生したときに、あらかじめ定義しておいた一連の作業を自動で実行してくれる仕組み」です。

開発者が手動で行っていたビルドテストデプロイといった作業を自動化することで、開発の効率化と品質向上が期待できます。

GitHub Actionsの主要な構成要素

GitHub Actionsは、以下の5つの要素で構成されています。

要素名概要
イベント (Event)ワークフローを実行するきっかけとなる出来事です。(プッシュ、プルリクエストの作成など)
ワークフロー (Workflow)自動化したい一連の処理全体を定義したファイル(YAML形式)です。 .github/workflows/ディレクトリに配置します。
ジョブ (Job)ワークフロー内で実行される作業の単位です。複数のステップで構成され、並列または順番に実行されます。
ステップ (Step)ジョブ内の個々の処理です。シェルコマンドの実行や、既存のActionの呼び出しを行います。
アクション (Action)特定のタスクを実行するために再利用可能にパッケージ化された機能です。GitHub Marketplaceなどで公開されており、自分で作ることもできます。 (コードのチェックアウト、環境構築など)


実際に動かしてみよう!

ここでは、GitHubにコードがプッシュされたときに、「Hello World」と出力する簡単なワークフローを作成します。

既にリポジトリがあるところから解説をしていきます。


.github/workflowsディレクトリの作成

自動化を設定したプロジェクトのディレクトリに移動して、「.github/workflows」という新しいディレクトリを作成します。

mkdir -p .github/workflows
注意点

GitHubは「.github/workflows」というディレクトリを監視するように設定されているため、ディレクトリ名は必ず「.github/workflows」にする必要があります。

mkdirの-pオプション

mkdirコマンドに-pオプションをつけることで、指定した親ディレクトリが存在しない場合、それらも自動で作成します。

※-pをつけないと「.github」というディレクトリが存在していない場合はエラーになります。


ワークフローファイル(.yml)の作成

.github/workflows/ディレクトリの中に、自動化したい一連の処理全体を定義したファイル(YAML形式)で作成します。

ここでは「hello.yml」を作成します。

# ワークフローの名前を定義
name: Hello World Workflow

# ワークフローを実行するイベントを定義(今回はコードがプッシュされた時)
on: [push]

# 実行するジョブを定義
jobs:
  # ジョブの名前
  first_job:
    # ジョブを実行する環境(ランナー)を指定
    runs-on: ubuntu-latest
    
    # ジョブ内のステップを定義
    steps:
      # ステップ1: チェックアウトアクションを使ってリポジトリのコードを取得
      - name: Checkout code
        uses: actions/checkout@v4

      # ステップ2: コマンドを実行
      - name: Print Hello World
        # run: の後に実行したいシェルコマンドを記述
        run: echo "Hello, GitHub Actions World!"


git add と git commit

作成したファイルをgit addでステージングに追加し、git commitでコミットします。

git addは全てのファイルを指定する方法もありますが、具体的にファイル名を指定する方が安全です。

git add . 
git add .github/workflows/hello.yml


ステージングに上げたらgit commitを実行します。

git commit -m "create GitHub Actions workflows hello.yml"


git statusで状態を確認しておきます。

$ git status
On branch main
Your branch is ahead of 'origin/main' by 1 commit.
  (use "git push" to publish your local commits)

nothing to commit, working tree clean


リモートリポジトリにプッシュする

最新のコミットをリモートリポジトリにプッシュします。

git push origin main


これで、GitHub Actionsに設定した自動化処理が実行されます。


GitHub Actionsで確認する

GitHubのActionsタブをクリックします。


先ほど、hello.ymlで設定したワークフロー名「Hello World Workflow」が表示されます。

緑色のチェックがある「create GitHub Actions workflows hello.yml」をクリックします。

hello.ymlで設定したJob名(first_job)が表示されます。


詳細を見ると、指定した処理が自動で実行されていることがわかります。


今後、pushするたびにこの処理が自動で行われます。


GitHub Actionsのワークフローを削除する方法

ワークフローファイルを削除する

作成したGitHub Actions(ワークフロー)を削除する手順は、非常に簡単です。

ワークフローファイルをリモートリポジトリから削除すればOKです。

GitHub Actionsは、リポジトリの特定のディレクトリに配置されたYAMLファイル(ワークフローファイル)に基づいて動作するため、そのファイルがなくなれば、GitHubは自動的にそのワークフローを実行しなくなります。


コード例

具体的には以下のコードを実行します。

# ワークフローファイルへのパスを指定して削除
rm .github/workflows/hello.yml

# 削除をステージングに追加
git add . 

# 変更をコミット
git commit -m "chore: Remove hello world workflow"

#コミットをプッシュ
git push


GitHubの履歴を手動で削除

ファイルを削除しても、GitHubの「Actions」タブに残っている過去の実行ログは自動では消えません。

過去の実行ログは、手動で削除する必要があります。

(ただし、デフォルト設定の場合は、古い実行ログは一定期間が過ぎると自動的にGitHubによって削除されます)

もしすぐに実行ログを消したい場合は、GitHubのWeb UIから以下の手順で削除できます。

  1. GitHubリポジトリのActionsタブへ移動します。
  2. 削除したいワークフロー名をクリックします。
  3. 削除したい実行を選択し、右上のメニュー(3点リーダーなど)から「Delete workflow run」を選びます。
タイトルとURLをコピーしました