Skip to main content

GitHub Actions の重要な機能

GitHub Actions は、堅牢で動的な自動化の構築ができるように設計されています。 このガイドでは、環境変数、カスタマイズされたスクリプトなどを含む GitHub Actions ワークフローを作成する方法を説明します。

概要

GitHub Actions を使用すると、アプリケーションと Team の固有のニーズに合わせてワークフローをカスタマイズできます。 このガイドでは、変数の使用、スクリプトの実行、ジョブ間でのデータと成果物の共有など、いくつかの重要なカスタマイズ手法について説明します。

ワークフローで変数を使用する

GitHub Actions には、ワークフロー実行ごとのデフォルトの環境変数が含まれています。 カスタム環境変数を使用する必要がある場合は、YAML ワークフローファイルでこれらを設定できます。 この例では、POSTGRES_HOSTPOSTGRES_PORT という名前のカスタム変数を作成する方法を示します。 その後、これらの変数は node client.js スクリプトで使用できます。

jobs:
  example-job:
    runs-on: ubuntu-latest
    steps:
      - name: Connect to PostgreSQL
        run: node client.js
        env:
          POSTGRES_HOST: postgres
          POSTGRES_PORT: 5432

詳しくは、「変数」を参照してください。

ワークフローにスクリプトを追加する

GitHub Actionsワークフローを使用してスクリプトとシェルコマンドを実行し、割り当てられたランナーで実行できます。 この例では、キーワード runを使用してランナーで コマンドnpm install -g bats を実行する方法を示します。

jobs:
  example-job:
    runs-on: ubuntu-latest
    steps:
      - run: npm install -g bats

ワークフローを使用してリポジトリに格納されているスクリプトを実行するには、まずリポジトリをランナーにチェックする必要があります。 これを行うと、キーワードrunを使用してランナーでスクリプトを実行できます。 次の例では、それぞれ別のジョブ ステップで 2 つのスクリプトを実行します。 ランナー上のスクリプトの場所は、実行コマンドの既定の作業ディレクトリを設定することによって指定されます。 詳しくは、「ジョブの既定値の設定」を参照してください。

jobs:
  example-job:
    runs-on: ubuntu-latest
    defaults:
      run:
        working-directory: ./scripts
    steps:
      - name: Check out the repository to the runner
        uses: actions/checkout@v4  
      - name: Run a script
        run: ./my-script.sh
      - name: Run another script
        run: ./my-other-script.sh

ワークフロー ジョブを実行するスクリプトはすべて実行可能である必要があります。 例えば、スクリプトを実行するインタプリタに引数としてスクリプトを渡すか、run: bash script.shファイル自体を実行可能にすることで、ワークフロー内でこれを行うことができます。 コマンドgit update-index --chmod=+x PATH/TO/YOUR/script.shをローカルで使用し、ファイルをコミットしてリポジトリにプッシュすることで、ファイルに実行アクセス許可を付与できます。 または、Linux および Mac ランナーで実行されるワークフローの場合は、スクリプトを実行する前に、ワークフロー ジョブで実行アクセス許可をファイルに付与するコマンドを追加できます。

jobs:
  example-job:
    runs-on: ubuntu-latest
    defaults:
      run:
        working-directory: ./scripts
    steps:
      - name: Check out the repository to the runner
        uses: actions/checkout@v4  
      - name: Make the script files executable
        run: chmod +x my-script.sh my-other-script.sh
      - name: Run the scripts
        run: |
          ./my-script.sh
          ./my-other-script.sh

run キーワードについて詳しくは、「ギットハブ アクション のワークフロー構文」をご覧ください。

ジョブ間でデータを共有する

同じワークフロー内の別のジョブと共有するファイルがジョブによって生成される場合、または後で参照できるようにファイルを保存する場合は、それらを_アーティファクト_として GitHub に保存できます。 成果物とは、コードをビルドしてテストするときに作成されるファイルのことです。 たとえば、成果物には、バイナリまたパッケージファイル、テスト結果、スクリーンショット、ログファイルなどがあります。 成果物は、それが作成されたワークフロー実行に関連付けられており、別のジョブで使用できます。 実行内で呼び出されるすべてのアクションとワークフローは、その実行の成果物への書き込みアクセス権を持っています。

たとえば、ファイルを作成し、それを成果物としてアップロードできます。

jobs:
  example-job:
    name: Save output
    runs-on: ubuntu-latest
    steps:
      - shell: bash
        run: |
          expr 1 + 1 > output.log
      - name: Upload output file
        uses: actions/upload-artifact@v4
        with:
          name: output-log-file
          path: output.log

別のワークフローの実行からアーティファクトをダウンロードするには、actions/download-artifact アクションを使用します。 たとえば、output-log-file という名前のアーティファクトをダウンロードできます。

jobs:
  example-job:
    runs-on: ubuntu-latest
    steps:
      - name: Download a single artifact
        uses: actions/download-artifact@v4
        with:
          name: output-log-file

同じワークフローの実行からアーティファクトをダウンロードするには、アップロード ジョブが完了するまで開始されないように、ダウンロード ジョブで needs: upload-job-name を指定する必要があります。

成果物について詳しくは、「ワークフロー データを成果物として保存する」を参照してください。

次の手順

GitHub Actions についてさらに学ぶには、「ワークフローについて」をご覧ください。