Skip to main content

Creating a composite action

In this guide, you'll learn how to build a composite action.


In this guide, you'll learn about the basic components needed to create and use a packaged composite action. アクションのパッケージ化に必要なコンポーネントのガイドに焦点を当てるため、アクションのコードの機能は最小限に留めます。 アクションは「Hello World」と「Goodbye」を出力するか、カスタムの名前を指定すると「Hello [who-to-greet]」と「Goodbye」を出力します。 このアクションは、乱数を random-numberという出力変数にマップし、 goodbye.shという名前のスクリプトを実行することもします。

Once you complete this project, you should understand how to build your own composite action and test it in a workflow.

警告: ワークフローやアクションを作る際には、攻撃者からの信頼できない入力をコードが実行するかもしれないことを、常に意識しなければなりません。 攻撃者が悪意あるコンテンツを挿入してくるかもしれないので、特定のコンテキストは信頼できない入力として扱うべきです。 詳しい情報については「スクリプトインジェクションのリスクを理解する」を参照してください。


Before you begin, you'll create a repository on GitHub AE.

  1. Enterprise に新しいパブリックリポジトリを作成します。 You can choose any repository name, or use the following hello-world-composite-action example. これらのファイルは、プロジェクトを GitHub AEにプッシュした後で追加できます。 詳しい情報については、「新しいリポジトリの作成」を参照してください。

  2. リポジトリをお手元のコンピューターにクローンします。 詳しい情報についてはリポジトリのクローンを参照してください。

  3. ターミナルから、ディレクトリを新しいリポジトリに変更します。

    cd hello-world-composite-action
  4. In the hello-world-composite-action repository, create a new file called, and add the following example code:

    echo "Goodbye"
  5. ターミナルから、 を実行可能にします。

    chmod +x
  6. ターミナルから、 ファイルをチェックインします。

    git add
    git commit -m "Add goodbye script"
    git push


  1. In the hello-world-composite-action repository, create a new file called action.yml and add the following example code. For more information about this syntax, see "runs for a composite actions".


    name: 'Hello World'
    description: 'Greet someone'
      who-to-greet:  # id of input
        description: 'Who to greet'
        required: true
        default: 'World'
        description: "Random number"
        value: ${{ steps.random-number-generator.outputs.random-number }}
      using: "composite"
        - run: echo Hello ${{ inputs.who-to-greet }}.
          shell: bash
        - id: random-number-generator
          run: echo "::set-output name=random-number::$(echo $RANDOM)"
          shell: bash
        - run: echo "${{ github.action_path }}" >> $GITHUB_PATH
          shell: bash          
        - run:
          shell: bash

    このファイルはwho-to-greet入力を定義し、ランダムに生成された数値をrandom-number出力変数にマップし、goodbye.shスクリプトを実行します。 It also tells the runner how to execute the composite action.

    For more information about managing outputs, see "outputs for a composite action".

    github.action_pathの使用方法の詳細については、「github context」を参照してください。

  2. ターミナルから、action.yml ファイルをチェックインします。

    git add action.yml
    git commit -m "Add action"
    git push
  3. ターミナルから、タグを追加します。 この例では、v1 というタグを使用しています。 詳しい情報については、「Actionsについて」を参照してください。

    git tag -a -m "Description of this release" v1
    git push --follow-tags


次のワークフローのコードでは、「Actionsのメタデータファイルの作成」で作成したhello world Actionを使用しています。

Copy the workflow code into a .github/workflows/main.yml file in another repository, but replace actions/hello-world-composite-action@v1 with the repository and tag you created. who-to-greetの入力を自分の名前に置き換えることもできます。


on: [push]

    runs-on: ubuntu-latest
    name: A job to say hello
      - uses: actions/checkout@v2
      - id: foo
        uses: actions/hello-world-composite-action@v1
          who-to-greet: 'Mona the Octocat'
      - run: echo random-number ${{ }}
        shell: bash

リポジトリから [Actions] タブをクリックして、最新のワークフロー実行を選択します。 出力には、「Hello Mona the Octocat」、"Goodbye"スクリプトの結果、および乱数が含まれているはずです。