ノート: GitHub Actionsは現在GitHub AEでベータです。
はじめに
このガイドでは、パッケージ化された複合実行ステップアクションを作成して使用するために必要な基本コンポーネントについて学びます。 アクションのパッケージ化に必要なコンポーネントのガイドに焦点を当てるため、アクションのコードの機能は最小限に留めます。 アクションは「Hello World」と「Goodbye」を出力するか、カスタムの名前を指定すると「Hello [who-to-greet]」と「Goodbye」を出力します。 このアクションは、乱数を random-numberという出力変数にマップし、 goodbye.shという名前のスクリプトを実行することもします。
このプロジェクトを完了すれば、独自の複合実行ステップ アクションをビルドし、ワークフローでテストする方法を理解できるでしょう。
警告: ワークフローやアクションを作る際には、攻撃者からの信頼できない入力をコードが実行するかもしれないことを、常に意識しなければなりません。 攻撃者が悪意あるコンテンツを挿入してくるかもしれないので、特定のコンテキストは信頼できない入力として扱うべきです。 詳しい情報については「スクリプトインジェクションのリスクを理解する」を参照してください。
必要な環境
始める前に、GitHub AE リポジトリを作成します。
-
Enterprise に新しいパブリックリポジトリを作成します。 任意のリポジトリ名を選択するか、以下の
hello-world-composite-run-steps-actionの例を利用できます。 これらのファイルは、プロジェクトを GitHub AEにプッシュした後で追加できます。 詳しい情報については、「新しいリポジトリの作成」を参照してください。 -
リポジトリをお手元のコンピューターにクローンします。 詳しい情報についてはリポジトリのクローンを参照してください。
-
ターミナルから、ディレクトリを新しいリポジトリに変更します。
cd hello-world-composite-run-steps-action -
hello-world-composite-run-steps-actionリポジトリで、goodbye.shという名前の新しいファイルを作成し、次のコード例を追加します。echo "Goodbye" -
ターミナルから、
goodbye.shを実行可能にします。chmod +x goodbye.sh -
ターミナルから、
goodbye.shファイルをチェックインします。git add goodbye.sh git commit -m "Add goodbye script" git push
アクションのメタデータファイルの作成
-
hello-world-composite-run-steps-actionリポジトリで、action.ymlという名前の新しいファイルを作成し、次のコード例を追加します。 この構文の詳細については、「複合実行ステップのruns」を参照してください。action.yml
name: 'Hello World' description: 'Greet someone' inputs: who-to-greet: # id of input description: 'Who to greet' required: true default: 'World' outputs: random-number: description: "Random number" value: ${{ steps.random-number-generator.outputs.random-id }} runs: using: "composite" steps: - run: echo Hello ${{ inputs.who-to-greet }}. shell: bash - id: random-number-generator run: echo "::set-output name=random-id::$(echo $RANDOM)" shell: bash - run: ${{ github.action_path }}/goodbye.sh shell: bashこのファイルは
who-to-greet入力を定義し、ランダムに生成された数値をrandom-number出力変数にマップし、goodbye.shスクリプトを実行します。 また、複合実行ステップアクションの実行方法をランナーに指示します。出力の管理の詳細については、「複合実行ステップの
outputs」を参照してください。github.action_pathの使用方法の詳細については、「github context」を参照してください。 -
ターミナルから、
action.ymlファイルをチェックインします。git add action.yml git commit -m "Add action" git push -
ターミナルから、タグを追加します。 この例では、
v1というタグを使用しています。 詳しい情報については、「Actionsについて」を参照してください。git tag -a -m "Description of this release" v1 git push --follow-tags
ワークフローでアクションをテストする
次のワークフローのコードでは、「Actionsのメタデータファイルの作成」で作成したhello world Actionを使用しています。
ワークフローコードを別のリポジトリの .github/workflows/main.yml ファイルにコピーしますが、actions/hello-world-composite-run-steps-action@v1 は作成したリポジトリとタグに置き換えます。 who-to-greetの入力を自分の名前に置き換えることもできます。
.github/workflows/main.yml
on: [push]
jobs:
hello_world_job:
runs-on: ubuntu-latest
name: A job to say hello
steps:
- uses: actions/checkout@v2
- id: foo
uses: actions/hello-world-composite-run-steps-action@v1
with:
who-to-greet: 'Mona the Octocat'
- run: echo random-number ${{ steps.foo.outputs.random-number }}
shell: bash
リポジトリから [Actions] タブをクリックして、最新のワークフロー実行を選択します。 出力には、「Hello Mona the Octocat」、"Goodbye"スクリプトの結果、および乱数が含まれているはずです。