Skip to content

Commit f22910b

Browse files
authored
Improve CI times (#36)
1 parent 0e19ca5 commit f22910b

26 files changed

+918
-501
lines changed

.github/workflows/build_android.yml

Lines changed: 93 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -26,28 +26,29 @@ concurrency:
2626
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
2727
cancel-in-progress: true
2828

29+
env:
30+
JAVA_VERSION: 17
31+
JAVA_DISTRIBUTION: 'temurin'
32+
NDK_VERSION: r26d
33+
2934
jobs:
30-
test:
35+
configure:
3136
runs-on: ubuntu-latest
3237

3338
steps:
3439
- uses: actions/checkout@v4
35-
3640
- uses: seanmiddleditch/gha-setup-ninja@master
37-
3841
- name: Setup Java
3942
uses: actions/setup-java@v3
4043
with:
41-
distribution: 'temurin'
42-
java-version: 17
43-
44+
distribution: ${{env.JAVA_DISTRIBUTION}}
45+
java-version: ${{env.JAVA_VERSION}}
4446
- name: Setup Android SDK
4547
uses: android-actions/setup-android@v2.0.10
46-
4748
- name: Setup Android NDK
4849
uses: nttld/setup-ndk@v1
4950
with:
50-
ndk-version: r26d
51+
ndk-version: ${{env.NDK_VERSION}}
5152

5253
- name: Create Build Environment
5354
run: cmake -E make_directory ${{runner.workspace}}/build
@@ -56,14 +57,88 @@ jobs:
5657
working-directory: ${{runner.workspace}}/build
5758
run: cmake $GITHUB_WORKSPACE -G "Ninja Multi-Config" -DYUP_TARGET_ANDROID=ON -DYUP_ENABLE_TESTS=ON -DYUP_ENABLE_EXAMPLES=ON
5859

59-
- name: Build Examples Debug
60-
run: |
61-
pushd ${{runner.workspace}}/build/examples/app && ./gradlew assembleDebug && popd
62-
pushd ${{runner.workspace}}/build/examples/graphics && ./gradlew assembleDebug && popd
63-
pushd ${{runner.workspace}}/build/examples/render && ./gradlew assembleDebug && popd
60+
- name: Cache Configure
61+
id: cache-build
62+
uses: actions/cache/save@v4
63+
with:
64+
path: ${{runner.workspace}}/build
65+
key: android-build-${{ github.sha }}
6466

65-
- name: Build Examples Release
66-
run: |
67-
pushd ${{runner.workspace}}/build/examples/app && ./gradlew assemble && popd
68-
pushd ${{runner.workspace}}/build/examples/graphics && ./gradlew assemble && popd
69-
pushd ${{runner.workspace}}/build/examples/render && ./gradlew assemble && popd
67+
build_app:
68+
runs-on: ubuntu-latest
69+
needs: [configure]
70+
steps:
71+
- uses: actions/checkout@v4
72+
- uses: seanmiddleditch/gha-setup-ninja@master
73+
- name: Setup Java
74+
uses: actions/setup-java@v3
75+
with:
76+
distribution: ${{env.JAVA_DISTRIBUTION}}
77+
java-version: ${{env.JAVA_VERSION}}
78+
- name: Setup Android SDK
79+
uses: android-actions/setup-android@v2.0.10
80+
- name: Setup Android NDK
81+
uses: nttld/setup-ndk@v1
82+
with:
83+
ndk-version: ${{env.NDK_VERSION}}
84+
- uses: actions/cache/restore@v4
85+
with:
86+
path: ${{runner.workspace}}/build
87+
key: android-build-${{ github.sha }}
88+
- working-directory: ${{runner.workspace}}/build/examples/app
89+
run: ./gradlew assembleDebug
90+
- working-directory: ${{runner.workspace}}/build/examples/app
91+
run: ./gradlew assemble
92+
93+
94+
build_graphics:
95+
runs-on: ubuntu-latest
96+
needs: [configure]
97+
steps:
98+
- uses: actions/checkout@v4
99+
- uses: seanmiddleditch/gha-setup-ninja@master
100+
- name: Setup Java
101+
uses: actions/setup-java@v3
102+
with:
103+
distribution: ${{env.JAVA_DISTRIBUTION}}
104+
java-version: ${{env.JAVA_VERSION}}
105+
- name: Setup Android SDK
106+
uses: android-actions/setup-android@v2.0.10
107+
- name: Setup Android NDK
108+
uses: nttld/setup-ndk@v1
109+
with:
110+
ndk-version: ${{env.NDK_VERSION}}
111+
- uses: actions/cache/restore@v4
112+
with:
113+
path: ${{runner.workspace}}/build
114+
key: android-build-${{ github.sha }}
115+
- working-directory: ${{runner.workspace}}/build/examples/graphics
116+
run: ./gradlew assembleDebug
117+
- working-directory: ${{runner.workspace}}/build/examples/graphics
118+
run: ./gradlew assemble
119+
120+
build_render:
121+
runs-on: ubuntu-latest
122+
needs: [configure]
123+
steps:
124+
- uses: actions/checkout@v4
125+
- uses: seanmiddleditch/gha-setup-ninja@master
126+
- name: Setup Java
127+
uses: actions/setup-java@v3
128+
with:
129+
distribution: 'temurin'
130+
java-version: 17
131+
- name: Setup Android SDK
132+
uses: android-actions/setup-android@v2.0.10
133+
- name: Setup Android NDK
134+
uses: nttld/setup-ndk@v1
135+
with:
136+
ndk-version: r26d
137+
- uses: actions/cache/restore@v4
138+
with:
139+
path: ${{runner.workspace}}/build
140+
key: android-build-${{ github.sha }}
141+
- working-directory: ${{runner.workspace}}/build/examples/render
142+
run: ./gradlew assembleDebug
143+
- working-directory: ${{runner.workspace}}/build/examples/render
144+
run: ./gradlew assemble

.github/workflows/build_ios.yml

Lines changed: 80 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -22,38 +22,100 @@ concurrency:
2222
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
2323
cancel-in-progress: true
2424

25+
env:
26+
DEVELOPER_DIR: /Applications/Xcode_15.1.app/Contents/Developer
27+
IOS_PLATFORM: OS64
28+
2529
jobs:
26-
test:
30+
configure:
2731
runs-on: macos-latest
28-
env:
29-
DEVELOPER_DIR: /Applications/Xcode_15.1.app/Contents/Developer
3032

3133
steps:
3234
- uses: actions/checkout@v4
35+
- uses: seanmiddleditch/gha-setup-ninja@master
3336

3437
- name: Create Build Environment
3538
run: cmake -E make_directory ${{runner.workspace}}/build
3639

3740
- name: Configure
3841
working-directory: ${{runner.workspace}}/build
3942
run: |
40-
cmake ${{ github.workspace }} -G Xcode -DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/ios.cmake -DPLATFORM=OS64 \
41-
-DYUP_ENABLE_TESTS=ON -DYUP_ENABLE_EXAMPLES=OFF
43+
cmake ${{ github.workspace }} -G "Ninja Multi-Config" -DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/ios.cmake \
44+
-DPLATFORM=${{ env.IOS_PLATFORM }} -DYUP_ENABLE_TESTS=ON -DYUP_ENABLE_EXAMPLES=ON
4245
43-
- name: Build Debug
44-
working-directory: ${{runner.workspace}}/build
46+
- name: Build SDL2
4547
run: |
46-
cmake --build . --config Debug --parallel 4 --target yup_tests
48+
cmake --build ${{runner.workspace}}/build --config Debug --parallel 4 --target SDL2-static
49+
cmake --build ${{runner.workspace}}/build --config Release --parallel 4 --target SDL2-static
4750
48-
#- name: Test Debug
49-
# working-directory: ${{runner.workspace}}/build/tests/Debug
50-
# run: ./yup_tests
51+
- name: Cache Configure
52+
id: cache-build
53+
uses: actions/cache/save@v4
54+
with:
55+
path: ${{runner.workspace}}/build
56+
key: ios-build-${{ github.sha }}
5157

52-
- name: Build Release
53-
working-directory: ${{runner.workspace}}/build
54-
run: |
55-
cmake --build . --config Release --parallel 4 --target yup_tests
58+
build_tests:
59+
runs-on: macos-latest
60+
needs: [configure]
61+
steps:
62+
- uses: actions/checkout@v4
63+
- uses: seanmiddleditch/gha-setup-ninja@master
64+
- uses: actions/cache/restore@v4
65+
with:
66+
path: ${{runner.workspace}}/build
67+
key: ios-build-${{ github.sha }}
68+
- run: cmake --build ${{runner.workspace}}/build --config Debug --parallel 4 --target yup_tests
69+
- run: cmake --build ${{runner.workspace}}/build --config Release --parallel 4 --target yup_tests
70+
71+
build_console:
72+
runs-on: macos-latest
73+
needs: [configure]
74+
steps:
75+
- uses: actions/checkout@v4
76+
- uses: seanmiddleditch/gha-setup-ninja@master
77+
- uses: actions/cache/restore@v4
78+
with:
79+
path: ${{runner.workspace}}/build
80+
key: ios-build-${{ github.sha }}
81+
- run: cmake --build ${{runner.workspace}}/build --config Debug --parallel 4 --target example_console
82+
- run: cmake --build ${{runner.workspace}}/build --config Release --parallel 4 --target example_console
5683

57-
#- name: Test Release
58-
# working-directory: ${{runner.workspace}}/build/tests/Release
59-
# run: ./yup_tests
84+
build_app:
85+
runs-on: macos-latest
86+
needs: [configure]
87+
steps:
88+
- uses: actions/checkout@v4
89+
- uses: seanmiddleditch/gha-setup-ninja@master
90+
- uses: actions/cache/restore@v4
91+
with:
92+
path: ${{runner.workspace}}/build
93+
key: ios-build-${{ github.sha }}
94+
- run: cmake --build ${{runner.workspace}}/build --config Debug --parallel 4 --target example_app
95+
- run: cmake --build ${{runner.workspace}}/build --config Release --parallel 4 --target example_app
96+
97+
build_graphics:
98+
runs-on: macos-latest
99+
needs: [configure]
100+
steps:
101+
- uses: actions/checkout@v4
102+
- uses: seanmiddleditch/gha-setup-ninja@master
103+
- uses: actions/cache/restore@v4
104+
with:
105+
path: ${{runner.workspace}}/build
106+
key: ios-build-${{ github.sha }}
107+
- run: cmake --build ${{runner.workspace}}/build --config Debug --parallel 4 --target example_graphics
108+
- run: cmake --build ${{runner.workspace}}/build --config Release --parallel 4 --target example_graphics
109+
110+
build_render:
111+
runs-on: macos-latest
112+
needs: [configure]
113+
steps:
114+
- uses: actions/checkout@v4
115+
- uses: seanmiddleditch/gha-setup-ninja@master
116+
- uses: actions/cache/restore@v4
117+
with:
118+
path: ${{runner.workspace}}/build
119+
key: ios-build-${{ github.sha }}
120+
- run: cmake --build ${{runner.workspace}}/build --config Debug --parallel 4 --target example_render
121+
- run: cmake --build ${{runner.workspace}}/build --config Release --parallel 4 --target example_render

0 commit comments

Comments
 (0)