This documentation is available as Markdown for AI agents and LLMs. See the full Markdown index or append .md to any documentation URL.
最初の EAS Workflows ジョブを実行する
ページを編集
ワークフローファイル、ジョブ、トリガーを作成し、ジョブを連結することで、Expo アプリ向けの EAS Workflows の基本を学びます。
この章では、最初の EAS Workflows ジョブを作成します。
この章で学べること
- EAS ダッシュボードにメッセージを出力するカスタムワークフローを作成して実行する
mainへのプッシュのたびにワークフローが走るよう、自動トリガーを設定する- 複数のジョブを連結し、あるジョブの出力を次のジョブに渡す
- EAS ダッシュボードでワークフローのログとジョブグラフを読む
ワークフローファイルの仕組み
ワークフローファイルは、プロジェクトの .eas/workflows/ ディレクトリに置かれる YAML ファイルです。各ファイルには、実行するジョブと、それぞれのジョブがたどるステップを定義します。
ワークフローファイルには、1 つ以上のジョブと、任意でトリガーを記述します。実行されると、EAS はファイルを読み取り、環境をプロビジョニングして、その環境でジョブを実行します。
EAS Workflows のジョブの種類
EAS Workflows には 2 種類のジョブがあります。
- 事前パッケージ済みジョブ:
typeフィールドを使うジョブです。build、submit、updateなど、どの操作を実行するかを EAS に伝えます。すると EAS は、その操作用にあらかじめ構成されたステップを実行します。 - カスタムジョブ:
typeフィールドの代わりにstepsを使うジョブです。各ステップのコマンドをrunで自分で記述します。カスタムジョブを使うと、ワークフローの実行時に何を行うか、特定のコマンドをいつ実行するかを自分で制御できます。
最初のワークフローを作成する
カスタムジョブを使って最初のワークフローを作成し、EAS 上で実行してみましょう。
1
2
hello.yml ファイルを追加する
.eas/workflows/ の中に hello.yml という名前のファイルを作成します。このファイルでは、単一のカスタムジョブを使って最初のワークフローを定義します。このジョブは "Hello, Workflows" を出力するシェルコマンドを実行します。
name: Hello jobs: greet: steps: - run: echo "Hello, Workflows" # Any shell command works here
上のワークフローでは、次の構文を使用しています。
nameは、EAS ダッシュボードに表示されるワークフローの名前です。jobsには、実行する 1 つ以上のジョブを記述します。各ジョブには一意の ID があります(この例ではgreet)。stepsは、ジョブが順番に実行する一連のタスクです。typeフィールドを持たずstepsを持つジョブは、カスタムジョブです。runは、ステップ内で実行するシェルコマンドです。ここではechoを実行してメッセージを出力しています。どんなシェルコマンドでも使えます。
3
4
ジョブのログを確認する
前のステップで出力された URL をブラウザーで開きます。ワークフローのページでは、greet ジョブとそのステータスを確認できます。ジョブが完了したら、ステップの出力を展開して、出力されたメッセージ Hello, Workflows を確認します。
EAS ダッシュボードは、あらゆるワークフロージョブの確認とデバッグを行う場所です。Workflow graph には、ジョブをトリガーしたものとジョブの一意な ID が表示されます。
Workflow file タブに切り替えてみましょう。これはステップ 2 で書いたワークフローファイルで、実行時の内容がそのまま保存されています。
ヒント: プロジェクトのすべてのワークフローは Workflows ページで一覧でき、ステータスや種類で絞り込めます。
ワークフローを自動で実行する
一度きりの実行ならターミナルから eas workflow:run を実行すれば済みますが、多くのチームは GitHub のイベントで自動的に走るワークフローを求めます。自動トリガーがあれば、誰もワークフローの実行を覚えておく必要がありません。ワークフローの設定は、ビルド対象のコードと同じリポジトリの中に置かれます。
注: トリガーとは、CI/CD パイプラインをいつ開始するかを決めるルールです。手動での実行を必要とせずにパイプラインが自動的に走るきっかけとなるイベント(コードのプッシュやプルリクエストなど)を定義します。
トリガーはワークフローファイルの on キーで定義します。EAS は該当する GitHub イベントを監視し、自動的にワークフローを実行します。
1
自動トリガーを追加する
既存のワークフローファイルに on.push.branches トリガーを追加してみましょう。
onキーは、どの GitHub イベントでワークフローをトリガーするかを定義しますpushフィールドは、いつトリガーするかを定義しますbranchesフィールドでは、mainブランチにコードがプッシュされたときにワークフローを自動実行する、といった指定ができます
name: Hello on: push: branches: ['main'] # Fires on every push to main branch jobs: greet: steps: - run: echo "Hello, Workflows"
branches フィールドには、GitHub リポジトリに存在する任意のブランチ名を指定できます。['main', 'develop', 'staging'] のように複数のブランチを指定すれば、そのいずれかにプッシュしたときにワークフローがトリガーされます。
2
3
自動トリガーを確認する
ヒント: このステップは、ローカルの Expo プロジェクトが GitHub にプッシュされていて、その GitHub リポジトリが EAS に接続されていることが前提です。確認するには、git remote -vを実行してローカルリポジトリが GitHub の URL を指していることを確かめ、EAS の GitHub 設定を開いてリポジトリが接続されていることを確認します。
EAS ダッシュボードでプロジェクトの Workflows ページを開き、新しいジョブを確認しましょう。
EAS ダッシュボードでは、Workflow graph タブにこのプッシュのコミットメッセージとブランチの参照が表示されます。ワークフローのヘッダー下にあるステータス欄でも、Trigger と Triggered by が同じ情報を示しています。
その他のトリガーの種類
このチュートリアルの後の章で使用する、その他のトリガーの種類は次のとおりです。
on.pull_request:対象のブランチに向けたプルリクエストが作成または更新されたときに実行されますon.pushとtagsの組み合わせ:一致するパターンのタグが GitHub リポジトリにプッシュされたときに実行されますon.pull_request_labeled:特定のラベルがプルリクエストに追加されたときに実行されます
ジョブを連結する
ここまではワークフローファイルに 1 つのジョブだけを実装しました。ワークフローファイルには複数のジョブを含められます。あるジョブの入力を、前のジョブの出力に依存させることもできます。ワークフローファイルの中で複数のジョブを連結してみましょう。
1
hello.yml を更新する
hello.yml ファイルを更新して、カスタムジョブと事前パッケージ済みジョブを追加してみましょう。ここで使う事前パッケージ済みジョブは doc という名前で、EAS ダッシュボード上に Markdown を描画します。
name: Hello jobs: greet: outputs: greeting: ${{ steps.set_greeting.outputs.greeting }} # Expose the step output at the job level steps: - id: set_greeting run: set-output greeting "Hello from EAS Workflows" show_info: needs: [greet] # Wait for greet to finish, then read its outputs type: doc # Pre-packaged job that renders Markdown on the dashboard params: md: | # Workflow Output **${{ needs.greet.outputs.greeting }}**
上のワークフローファイルは、次のことを行っています。
greetジョブを定義しています。これはカスタムジョブです。set-outputシェル関数を使ってgreetingという値を設定しています。ジョブレベルのoutputsフィールドがステップの出力を公開し、他のジョブから参照できるようにします。show_infoジョブを定義しています。needs: [greet]によってgreetジョブの完了を待ち、その出力にアクセスします。そのうえで、事前パッケージ済みのdocジョブタイプを使って EAS ダッシュボードに Markdown ドキュメントを描画します。この Markdown の内容には、前のジョブで設定したgreetingの値が含まれます。
ヒント: EAS Workflows では、ジョブはデフォルトで並列に実行されます。ジョブを待たせるのがneedsフィールドです。needsを使うジョブが開始する前に正常終了していなければならないジョブの ID を並べます。needsに並べたジョブが失敗した場合、依存する側のジョブはスキップされます。
2
後片付け
この章のあとは、hello.yml ファイルを削除してください。以降の章では使用しません。残しておきたい場合は、main へのプッシュのたびに実行されないよう on.push トリガーを取り除いておきます。
まとめ
第 1 章:最初の EAS Workflows ジョブ
カスタムジョブのワークフローを作成し、手動と自動の両方でトリガーし、needs と outputs を使ってジョブを連結し、EAS ダッシュボードでジョブの実行を確認しました。
次の章では、フィンガープリントを使って不要な再ビルドを回避しながら開発ビルドを自動化する方法を学びます。