私はGitHubアクションに比較的慣れていないため、2つのジョブがあります。1つはテストを実行するジョブで、もう1つはプロジェクトをサーバーにデプロイするジョブです。
当然、すべてのブランチでテストを実行したいのですが、デプロイは、何かがマスターにプッシュされたときにのみ発生するはずです。
特定のブランチでジョブを実行する方法を見つけるのに苦労しています。特定のブランチでのみワークフロー全体を実行できることを知っていますが、これは「テスト」ワークフローと「展開」ワークフローがあることを意味します。
これは解決策のように聞こえますが、並行して実行されます。理想的な世界では、テストが最初に実行され、テストが成功した場合にのみ、展開ジョブが開始されます。これは、2つの個別のワークフローを使用する場合には当てはまりません。
どうすればこれを達成できますか?特定のブランチでjobsを実行することは可能ですか?
現時点ではjobレベルの条件はありませんが、stepレベル- GitHubアクションのコンテキストと式の構文 を参照してください。
ブランチ名を取得するための現在の解決策は、GITHUB_REF
環境変数-詳細は デフォルトの環境変数 および この質問 を参照してください。
まとめると、最後のリンクで承認された回答を使用する場合、ワークフローは次のようになります。
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Run tests
run: ./my-tests.sh
deploy:
runs-on: ubuntu-latest
needs: test
steps:
- name: Extract branch name
Shell: bash
run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF##*/})"
id: extract_branch
- name: Deploy
run: ./deploy.sh
if: steps.extract_branch.outputs.branch == 'master'
個別のスクリプトではなくワークフローファイルにすべてを保持したい場合は、特定のジョブの各ステップに常にif
を追加できます。
私はそれが一時的な解決策/回避策であることを願っています、そしてジョブ条件はベータの終了前に追加される予定です。