SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

GitHub Actionsをはじめよう

【GitHub Actionsの基本のキ】実際に“アクション”を作ってみよう

GitHub Actionsをはじめよう 第3回

アクションを使ってみる

 まずは、すでに作成され、公開されているアクションを使ってみましょう。ここでは実際の開発現場でもよく使うCheckoutアクションを使ってみます。

 「リポジトリにあるスクリプトを実行したい」と思っても、ワークフローを実行している環境にはリポジトリの情報はありません。そのためまずはリポジトリのデータを用意する必要があります。このCheckoutアクションを利用すれば、ワークフロー実行環境でリポジトリをチェックアウトし、ワークフローからリポジトリにアクセスできます。

 以下のサンプルコードでは、(このワークフローがある)リポジトリをチェックアウトし、README.mdの内容を表示しています。リポジトリのルートにREADME.mdが存在しないとエラーになりますので、事前に準備してから実行しましょう。

name: Checkout action demo
on: 
  push:

jobs:
  use-checkout-action-job:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repository
        uses: actions/checkout@v4
      - name: Show README.md
        run: head -n 2 README.md

 アクションの指定にはusesキーを使います。uses: actions/checkout@v4の部分がアクションの指定です。@v4の部分はタグを指定しています。1つ目のステップでリポジトリがチェックアウトされ、2つ目のステップでチェックアウトした情報にアクセスしています。

 アクションによっては、アクションへの入力値やアウトプットが定義されています。何を指定できるかはアクションによって異なるため、それぞれのドキュメントを確認しましょう。

アクションを作ってみる

 それでは簡単なアクションを自分で作ってみましょう。「複数のメッセージの中からランダムで選択したメッセージを表示する」アクションを作ります。コードをプッシュしたメンバーに感謝のメッセージを表示してみたいと思います。

 アクションを作る方法は3つあります。ワークフロー内のステップをまとめて1つのアクションにする方法(公式ドキュメントでは複合アクションと表現されています)、Dockerコンテナを利用する方法、JavaScriptで作る方法があります。今回はJavaScriptを利用します。

 事前準備として必須の作業はありませんが、作成したJavaScriptのコードを手元で簡単に動かしたい場合はNode.jsをインストールしておきましょう。また、今回はリポジトリ内からのみ参照できるようなプライベートアクションを作成します。

 手順は以下の通りです。

  1. .github/actions/thanksフォルダを作成する
  2. .github/actions/thanksフォルダにaction.ymlを作成する
  3. .github/actions/thanksフォルダにindex.jsを作成する
  4. .github/workflowsフォルダにアクションを呼び出すcall-actions.ymlを作成する

 詳しく説明していきます。

.github/actions/thanksフォルダを作成する

 リポジトリ内からのみ参照するアクションを作る場合は、リポジトリのどこにアクションを作成しても問題ありません。GitHub Actionsに関するコードをまとめて管理するため、.githubフォルダにactionsフォルダを作成し、ここに自作アクションに関するコードを保存していきましょう。今回のアクションの保存場所として .github/actions/thanksフォルダを作成します。

 ここでは今までのサンプルコードを実装したリポジトリにそのまま作成する手順で進めます。そのため、.githubフォルダやこの後登場する.github/workflowsフォルダはすでに作成済みのものとして進めます。

action.ymlを作成する

 アクションにはメタデータを記載するYAMLファイルが必要です。アクションの入力、出力、実行の構成を定義します。ファイル名はaction.ymlaction.yamlのどちらかである必要があります。

 .github/actions/thanksフォルダにaction.ymlを作成し、以下の内容を記載します。

name: 'Thanks Message'
description: 'Outputs a kind message during your CI run'
runs:
  using: 'node20'
  main: 'index.js'

 今回はアクションに対する入力もアクションからの出力もないため、それらに関する記載はありません。以下で1要素ずつ説明します。

name

 アクションの名前です。必須項目です。

description

 アクションの説明です。必須項目です。

runs

 実行の構成を指定します。複合アクションなのか、Dockerコンテナアクションなのか、JavaScriptアクションなのか、という情報と実行方法を指定します。今回はJavaScriptアクションですので、以下のように指定します。

using

 mainで指定されたコードを実行するために使用されるランタイムを指定します。node20という指定はGitHub Actionsが提供するNode.js v20ランタイムを指しています。

main

 アクションのコードが実装されたファイルを指定します。usingで指定されたランタイムでこのファイルが実行されます。

アクションのコードを実装する

 アクションの具体的な処理を実装しましょう。先ほど作成したaction.ymlで指定したファイル名と合うように、index.jsというファイル名にします。

 .github/actions/thanksフォルダにindex.jsを作成し、以下の内容を記載します。

const messages = [
  "開発お疲れ様。今日もありがとう!",
  "あなたの積み重ね、ちゃんと伝わってるよ!",
  "レビューも開発も、心が元気なときがいちばん。",
];

const message = messages[Math.floor(Math.random() * messages.length)];
console.log(message);

 messagesに定義したメッセージの中からランダムに一つのメッセージが選ばれ、表示されます。

 以上でアクションの完成です!

次のページ
セキュリティ

この記事は参考になりましたか?

GitHub Actionsをはじめよう連載記事一覧

もっと読む

この記事の著者

藤澤 千尋(フジサワ チヒロ)

 ソフトウェアエンジニアとして約10年働いており、最近は主にフロントエンド開発を担当しています。最近、筋トレを始めました。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/21540 2025/05/28 11:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー