blob: 87506fa3db0d7fff5573404e46af5212e69560d2 [file] [log] [blame]
name: Build
on:
pull_request:
types: [opened, reopened, synchronize]
push:
branches:
- master
jobs:
paths-filter:
runs-on: ubuntu-latest
outputs:
java: ${{ steps.filter.outputs.java }}
cpp: ${{ steps.filter.outputs.cpp }}
golang: ${{ steps.filter.outputs.golang }}
csharp: ${{ steps.filter.outputs.csharp }}
php: ${{ steps.filter.outputs.php }}
steps:
- uses: actions/checkout@v2
- uses: dorny/paths-filter@v2
id: filter
with:
filters: |
java:
- 'java/**'
cpp:
- 'cpp/**'
golang:
- 'golang/**'
csharp:
- 'csharp/**'
php:
- 'php/**'
java-build:
needs: [paths-filter]
if: ${{ needs.paths-filter.outputs.java == 'true' }}
uses: ./.github/workflows/java_build.yml
cpp-build:
needs: [paths-filter]
secrets: inherit
if: ${{ needs.paths-filter.outputs.cpp == 'true' }}
uses: ./.github/workflows/cpp_build.yml
csharp-build:
needs: [paths-filter]
if: ${{ needs.paths-filter.outputs.csharp == 'true' }}
uses: ./.github/workflows/csharp_build.yml
golang-build:
needs: [paths-filter]
if: ${{ needs.paths-filter.outputs.golang == 'true' }}
uses: ./.github/workflows/golang_build.yml
php-build:
needs: [paths-filter]
if: ${{ needs.paths-filter.outputs.php == 'true' }}
uses: ./.github/workflows/php_build.yml
build-result:
runs-on: ubuntu-latest
needs: [java-build, cpp-build, csharp-build, golang-build, php-build]
if: ${{ always() }}
steps:
- uses: actions/checkout@v2
- name: Collect build result
run: |
if echo java-${{ needs.java-build.result }},cpp-${{ needs.cpp-build.result }},csharp-${{ needs.csharp-build.result }},golang-${{ needs.golang-build.result }},php-${{ needs.php-build.result }} | grep -E 'cancelled|failure' -o > null
then
echo "There are failed/cancelled builds"
exit 1
else
echo "All builds are successful/skipped"
exit 0
fi