-
Notifications
You must be signed in to change notification settings - Fork 223
98 lines (97 loc) · 3.05 KB
/
build.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
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 }}
rust: ${{ steps.filter.outputs.rust }}
python: ${{ steps.filter.outputs.python }}
nodejs: ${{ steps.filter.outputs.nodejs }}
steps:
- uses: actions/checkout@v2
- uses: dorny/paths-filter@v2
id: filter
with:
filters: |
java:
- 'java/**'
cpp:
- 'cpp/**'
golang:
- 'golang/**'
csharp:
- 'csharp/**'
php:
- 'php/**'
rust:
- 'rust/**'
python:
- 'python/**'
nodejs:
- 'nodejs/**'
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
rust-build:
needs: [paths-filter]
if: ${{ needs.paths-filter.outputs.rust == 'true' }}
uses: ./.github/workflows/rust_build.yml
python-build:
needs: [paths-filter]
if: ${{ needs.paths-filter.outputs.python == 'true' }}
uses: ./.github/workflows/python_build.yml
nodejs-build:
needs: [paths-filter]
if: ${{ needs.paths-filter.outputs.nodejs == 'true' }}
uses: ./.github/workflows/nodejs_build.yml
build-result:
runs-on: ubuntu-latest
needs: [java-build, cpp-build, csharp-build, golang-build, php-build, rust-build, python-build, nodejs-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 }},\
rust-${{ needs.rust-build.result }},\
nodejs-${{ needs.nodejs-build.result }},\
python-${{ needs.python-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