GitHub Actions でシンプルなコマンドを実行する

GitBeginner
オンラインで実践に進む

はじめに

GitHub Actions は、ビルド、テスト、デプロイのパイプラインを自動化できる継続的インテグレーション/継続的デリバリー (CI/CD) プラットフォームです。リポジトリへのすべてのプルリクエストに対してビルドとテストを実行したり、マージされたプルリクエストを本番環境にデプロイしたりするワークフローを作成できます。

ワークフローは、1 つ以上のジョブを実行する設定可能な自動化プロセスです。ワークフローは、リポジトリにチェックインされた YAML ファイルによって定義され、リポジトリ内のイベントによってトリガーされたときに実行されます。また、手動で、または定義されたスケジュールでトリガーすることもできます。

この実験(Lab)では、GitHub Actions ワークフローの基本的な構成要素について学習します。

  1. ジョブの定義。
  2. ランナー環境(例:Ubuntu)の指定。
  3. コマンドを実行するためのステップの追加。

コンソールに "Hello, World!" と出力する簡単なワークフローを作成します。この実験(Lab)は、以前の実験(Labs)で作成したリポジトリを基盤とします。github-actions-demo リポジトリをクローンし、既存のワークフローファイルを更新します。

build ジョブに ubuntu-latest を指定した runs-on キーを追加する

このステップでは、リポジトリをクローンし、既存のワークフローファイルを更新して、ジョブを定義し、そのジョブを実行するオペレーティングシステムを指定します。

  1. github-actions-demo の GitHub リポジトリページで、緑色の Code ボタンをクリックします。
  2. HTTPS タブが選択されていることを確認し、URL をコピーします。URL は https://github.com/your-username/github-actions-demo.git のような形式になります。
  3. LabEx 環境でターミナルを開きます。デフォルトのパスは ~/project です。
  4. git clone コマンドを使用してリポジトリをダウンロードします。your-username は実際の GitHub ユーザー名に置き換えてください。
cd ~/project
git clone https://github.com/your-username/github-actions-demo.git
  1. クローンしたリポジトリに移動します。
cd ~/project/github-actions-demo
  1. .github/workflows ディレクトリ内に simple-commands.yml という名前の新しいワークフローファイルを作成します。
touch .github/workflows/simple-commands.yml
  1. WebIDE でファイル .github/workflows/simple-commands.yml を開きます。左側のファイルエクスプローラーで見つけることができます。

  2. ワークフロー名、トリガー、ジョブ、およびランナーを定義するために、ファイルに以下のコンテンツを追加します。

name: Simple Commands
on: [push]

jobs:
  build:
    runs-on: ubuntu-latest

runs-on キーワードを使用すると、ジョブを実行するマシンの種類を指定できます。GitHub は、Linux、Windows、macOS 向けのホスト型ランナーを提供しています。ubuntu-latest は一般的に使用されるランナーで、標準的な Ubuntu 環境を提供します。

build ジョブの下に steps セクションを追加する

ジョブ環境を定義したので、次にそのジョブが実際に行う処理を定義する必要があります。これは steps キーワードを使用して行います。

ジョブには、steps と呼ばれる一連のタスクが含まれます。ステップでは、コマンドの実行、セットアップタスクの実行、またはリポジトリ内のアクションの実行が可能です。

手順

  1. WebIDE で .github/workflows/simple-commands.yml を開きます。
  2. build ジョブの下に steps キーワードを追加します。

ファイルを以下のように更新してください。

name: Simple Commands
on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:

steps:runs-on: と同じインデントレベルにあることを確認してください。

名前が 'Echo Hello' で、実行コマンドが echo "Hello, World!" のステップを追加する

このステップでは、steps セクションに複数のタスクを追加して、様々なシェルコマンドを実行します。これにより、ランナー上で標準的な Linux コマンドを実行できることを示します。

手順

  1. WebIDE で .github/workflows/simple-commands.yml を開きます。
  2. steps: キーの下に以下のステップを追加します。
steps:
  - name: Echo Hello
    run: echo "Hello, World!"

  - name: Show Date
    run: date

  - name: List Files
    run: ls -la

完成したファイルは以下のようになります。

name: Simple Commands
on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Echo Hello
        run: echo "Hello, World!"

      - name: Show Date
        run: date

      - name: List Files
        run: ls -la

解説

  • echo "Hello, World!": コンソールにテキストを出力します。
  • date: ランナー上の現在の日付と時刻を表示します。
  • ls -la: 現在のディレクトリ内のファイルを一覧表示します。この時点ではディレクトリがほとんど空であることに気づくでしょう。これは、まだコードをチェックアウトしていないためです(次の実験(lab)でこれを行います)。

更新されたワークフローファイルをコミットしてプッシュする

GitHub Actions のワークフローは、リポジトリのコードの一部です。ワークフローをアクティブ化するには、変更をコミットし、GitHub にプッシュする必要があります。

  1. リポジトリのディレクトリにいることを確認します:
cd ~/project/github-actions-demo
  1. 新しいワークフローファイルをステージングします:
git add .github/workflows/simple-commands.yml
  1. 説明的なメッセージで変更をコミットします:
git commit -m "Add simple commands workflow"

出力例:

[main ... ] Add simple commands workflow
 1 file changed, 14 insertions(+)
 create mode 100644 .github/workflows/simple-commands.yml
  1. 変更を GitHub 上のリモートリポジトリにプッシュします:
git push

認証に関する注意:
git push を実行すると、WebIDE は自動的に認証を求めます。以下の詳細な手順に従ってください:

  1. "The extension 'GitHub' wants to sign in using GitHub." というメッセージが表示されたポップアップが表示されます。「Allow」をクリックします。
  2. 新しい通知が表示されます。「Copy&Continue to GitHub」をクリックし、次のプロンプトで「Open」をクリックします。
  3. 開いたブラウザウィンドウで GitHub アカウントにログインし、コピーされた認証コードを入力します。認証を確認した後、ページは自動的に閉じます。
  4. 数秒待つと、ターミナルでプッシュ操作が正常に完了したことが確認できます。

プライバシーに関する注意:
WebIDE は認証目的で GitHub アカウントへのフルアクセスを要求します。プライバシーの懸念については心配する必要はありません。現在の実験(Lab)が完了すると、LabEx VM は直ちに破棄され、資格情報や認証情報は保持されません。

この認証プロセスでは、ユーザー名や Personal Access Token の手動設定は必要ありません。

出力例:

Enumerating objects: 6, done.
Counting objects: 100% (6/6), done.
Delta compression using up to 4 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 447 bytes | 447.00 KiB/s, done.
Total 4 (delta 1), reused 0 (delta 0), pack-reused 0
To https://github.com/your-username/github-actions-demo.git
   abcdef1..1234567  main -> main

GitHub Actions タブでワークフロー実行ログを表示する

コードをプッシュした後、ワークフローは GitHub 上で自動的にトリガーされます。ワークフローの実行ログを確認することで、何が起こったかを見ることができます。

  1. ウェブブラウザでリポジトリにアクセスします:https://github.com/your-username/github-actions-demo
  2. リポジトリページの最上部にある Actions タブをクリックします。
  3. ワークフローの実行が一覧表示されているはずで、おそらく名前は "Simple Commands" または "Add simple commands workflow" です。

注記: コードをプッシュすると、リポジトリ内に複数のワークフローファイルがある場合、複数の Actions がトリガーされることがあります。左側のサイドバーでワークフロー名を確認するか、右側のワークフロー実行リストを使用して、正しいワークフロー実行を特定してください。

  1. ワークフロー実行のタイトルをクリックし、次に build ジョブをクリックします。
  2. Echo HelloShow DateList Files の各ステップを展開して、その出力を確認します。

List Files ステップでは、ランナーがクリーンな状態から開始することを示すように、空のディレクトリ(... のような隠しファイルを除く)が表示されることに気づくでしょう。

GitHub Actions logs
GitHub Actions tab

まとめ

この実験では、複数のシェルコマンドを実行する GitHub Actions ワークフローを正常に作成しました。以下の点を学習しました。

  1. ジョブの定義: build ジョブを作成しました。
  2. ランナーの選択: runs-on: ubuntu-latest を使用しました。
  3. 複数コマンドの実行: echodatels を実行するステップを追加しました。
  4. ランナー環境の観察: ランナーが空のディレクトリから開始することを確認しました。

次の実験では、Checkout Action を使用してランナー内でリポジトリファイルにアクセスする方法を学習します。