1- name : Cli CI
1+ name : wgc CI
22on :
33 pull_request :
44 paths :
5- - " cli/**/*"
6- - " connect/**/*"
7- - " .github/workflows/cli-ci.yaml"
5+ - ' cli/**/*'
6+ - ' connect/**/*'
7+ - ' .github/workflows/cli-ci.yaml'
88
99concurrency :
1010 group : ${{github.workflow}}-${{github.head_ref}}
@@ -15,25 +15,105 @@ env:
1515 DO_NOT_TRACK : ' 1'
1616
1717jobs :
18- build_test :
18+ build_test_default :
1919 timeout-minutes : 10
2020 runs-on : ubuntu-latest
2121 steps :
2222 - uses : actions/checkout@v4
2323
2424 - uses : ./.github/actions/node
25+ - uses : oven-sh/setup-bun@v2
2526
2627 - name : Install dependencies
27- run : pnpm install --frozen-lockfile
28+ run : pnpm --filter ./cli --filter ./connect --filter ./shared --filter ./composition install --frozen-lockfile
2829
2930 - name : Generate code
3031 run : pnpm buf generate --template buf.ts.gen.yaml
3132
3233 - name : Check if git is not dirty after generating files
3334 run : git diff --no-ext-diff --exit-code
3435
35- - name : Build
36- run : pnpm run --filter ./cli --filter ./connect --filter ./shared --filter ./composition build
36+ - name : Build Node.js NPM Package
37+ run : pnpm --filter ./cli --filter ./connect --filter ./shared --filter ./composition run build
38+
39+ - name : ' Build wgc binary'
40+ working-directory : cli
41+ run : bun build --compile --minify --sourcemap src/index.ts --outfile wgc
42+
43+ - name : E2E test
44+ working-directory : cli
45+ run : bun test e2e
46+
47+ build_test_node_matrix :
48+ timeout-minutes : 10
49+ runs-on : ubuntu-latest
50+
51+ strategy :
52+ matrix :
53+ node-version : ['20.x', '22.x']
54+
55+ steps :
56+ - uses : actions/checkout@v4
3757
38- - name : Test
58+ - uses : ./.github/actions/node
59+ with :
60+ node-version : ${{ matrix.node-version }}
61+ - uses : oven-sh/setup-bun@v2
62+
63+ - name : Install dependencies
64+ run : pnpm --filter ./cli --filter ./connect --filter ./shared --filter ./composition install --frozen-lockfile
65+
66+ - name : Build Node.js NPM Package
67+ run : pnpm --filter ./cli --filter ./connect --filter ./shared --filter ./composition run build
68+
69+ - name : Unit Test
3970 run : pnpm run --filter wgc test
71+
72+ - name : E2E test (node)
73+ working-directory : cli
74+ run : bun test e2e --test-name-pattern node
75+
76+ build_bun_matrix :
77+ runs-on : ubuntu-latest
78+ timeout-minutes : 30
79+
80+ strategy :
81+ matrix :
82+ target : [bun-linux-x64, bun-linux-arm64, bun-darwin-x64, bun-darwin-arm64, bun-windows-x64]
83+
84+ steps :
85+ - name : Checkout repository
86+ uses : actions/checkout@v4
87+
88+ - uses : oven-sh/setup-bun@v2
89+
90+ - uses : ./.github/actions/node
91+
92+ - name : Install dependencies
93+ run : pnpm --filter ./cli --filter ./connect --filter ./shared --filter ./composition install --frozen-lockfile
94+
95+ - name : Build
96+ run : pnpm --filter ./cli --filter ./connect --filter ./shared --filter ./composition run build
97+
98+ - name : ' Build wgc binary'
99+ working-directory : cli
100+ run : bun build --compile --minify --sourcemap --target ${{ matrix.target }} src/index.ts --outfile out/wgc-experimental-${{ github.sha }}-${{ matrix.target }}
101+
102+ - name : ' Upload builds as artifacts'
103+ uses : actions/upload-artifact@v4
104+ with :
105+ name : wgc-experimental-${{ github.sha }}-${{ matrix.target }}
106+ path : cli/out/wgc-experimental-${{ github.sha }}-${{ matrix.target }}*
107+ if-no-files-found : error
108+
109+ build_test :
110+ runs-on : ubuntu-latest
111+ needs : [build_test_default, build_test_node_matrix, build_bun_matrix]
112+ if : always()
113+ steps :
114+ - name : ' All tests passed'
115+ if : ${{ !(contains(needs.*.result, 'failure')) }}
116+ run : exit 0
117+ - name : ' Some tests failed'
118+ if : ${{ contains(needs.*.result, 'failure') }}
119+ run : exit 1
0 commit comments