@@ -4,6 +4,10 @@ on: [push, pull_request, workflow_dispatch]
44
55env :
66 BUILD_TYPE : Debug
7+ # # For locally compiled dependencies
8+ INSTALL_PATH : ${{github.workspace}}/dependencies/install
9+ # # Temp directory for installers of the downloaded dependencies
10+ DOWNLOAD_PATH : ${{github.workspace}}/dependencies/download
711
812permissions : read-all
913
2024 fail-fast : false
2125
2226 runs-on : ${{ matrix.os }}
27+ outputs :
28+ has-compiled-dependencies : ${{ steps.compilation-flag.outputs.has-compiled-dependencies }}
29+ compile-hash-key : ${{ steps.download-compile-dependencies.outputs.compile-hash-key }}
2330
2431 services :
2532 # Label used to access the service container
@@ -45,10 +52,56 @@ jobs:
4552 run : sudo apt-get update
4653
4754 - name : Install required packages for build
48- run : ./.github/scripts/setup_build_${{matrix.os}}.sh
55+ run : ./.github/scripts/${{ matrix.os }}/setup_build.sh
56+
57+ - name : Set has-compiled-dependencies flag
58+ id : compilation-flag
59+ run : |
60+ if [ -f ./.github/scripts/${{ matrix.os }}/compile_build.sh ]; then
61+ echo "has-compiled-dependencies=true" >> "$GITHUB_OUTPUT"
62+ else
63+ echo "has-compiled-dependencies=false" >> "$GITHUB_OUTPUT"
64+ fi
65+
66+ - name : Download installers for compiled dependencies
67+ if : steps.compilation-flag.outputs.has-compiled-dependencies == 'true'
68+ id : download-compile-dependencies
69+ run : |
70+ chmod +x ./.github/scripts/${{ matrix.os }}/download_build.sh
71+ ./.github/scripts/${{ matrix.os }}/download_build.sh
72+
73+ - name : Restore compiled dependencies
74+ if : steps.compilation-flag.outputs.has-compiled-dependencies == 'true'
75+ id : restore-compiled-dependencies
76+ uses : actions/cache/restore@v3
77+ with :
78+ path : ${{ env.INSTALL_PATH }}
79+ key : ${{ matrix.os }}-compile-install-${{steps.download-compile-dependencies.outputs.compile-hash-key}}
80+
81+ - name : Compile dependencies
82+ if : steps.restore-compiled-dependencies.outputs.cache-hit != 'true' && steps.compilation-flag.outputs.has-compiled-dependencies == 'true'
83+ run : |
84+ chmod +x ./.github/scripts/${{ matrix.os }}/compile_build.sh
85+ ./.github/scripts/${{ matrix.os }}/compile_build.sh
86+
87+ - name : Post compilation configuration (build)
88+ if : steps.compilation-flag.outputs.has-compiled-dependencies == 'true'
89+ run : |
90+ if [ -f ./.github/scripts/${{ matrix.os }}/postcompile_build.sh ]; then
91+ chmod +x ./.github/scripts/${{ matrix.os }}/postcompile_build.sh
92+ ./.github/scripts/${{ matrix.os }}/postcompile_build.sh
93+ fi
94+
95+ - name : Save dependencies
96+ if : steps.restore-compiled-dependencies.outputs.cache-hit != 'true' && steps.compilation-flag.outputs.has-compiled-dependencies == 'true'
97+ id : save-compiled-dependencies
98+ uses : actions/cache/save@v3
99+ with :
100+ path : ${{ env.INSTALL_PATH }}
101+ key : ${{ matrix.os }}-compile-install-${{steps.download-compile-dependencies.outputs.compile-hash-key}}
49102
50103 - name : Install database packages
51- run : ./.github/scripts/setup_ ${{matrix.db}}_ ${{matrix.os }}.sh
104+ run : ./.github/scripts/${{ matrix.os }}/setup_ ${{matrix.db }}.sh
52105
53106 - name : Install GoogleTest
54107 run : |
79132
80133 - name : Configure CMake
81134 working-directory : ${{github.workspace}}
82- run :
83- cmake -E make_directory $HOME/cc-build
135+ run : cmake -E make_directory $HOME/cc-build
84136
85137 - name : Run CMake
86138 run : >
@@ -128,7 +180,6 @@ jobs:
128180 name : codecompass-${{ matrix.os }}-${{ matrix.db }}-compiletime
129181 path : ${{github.workspace}}/artifacts/codecompass-${{ matrix.os }}-${{ matrix.db }}-compiletime.zip
130182
131-
132183 # # PARSING JOBS
133184 parse :
134185 needs : build
@@ -166,10 +217,26 @@ jobs:
166217
167218 # We need build dependencies for CodeCompass, as it will parsed as well
168219 - name : Install required packages for build
169- run : ./.github/scripts/setup_build_ ${{matrix.os}} .sh
220+ run : ./.github/scripts/${{ matrix.os }}/setup_build .sh
170221
171222 - name : Install database packages
172- run : ./.github/scripts/setup_${{matrix.db}}_${{matrix.os}}.sh
223+ run : ./.github/scripts/${{ matrix.os }}/setup_${{matrix.db}}.sh
224+
225+ - name : Restore compiled dependencies
226+ if : needs.build.outputs.has-compiled-dependencies == 'true'
227+ id : restore-compiled-dependencies
228+ uses : actions/cache/restore@v3
229+ with :
230+ path : ${{ env.INSTALL_PATH }}
231+ key : ${{ matrix.os }}-compile-install-${{needs.build.outputs.compile-hash-key}}
232+
233+ - name : Post compilation configuration (runtime)
234+ if : needs.build.outputs.has-compiled-dependencies == 'true'
235+ run : |
236+ if [ -f ./.github/scripts/${{ matrix.os }}/postcompile_runtime.sh ]; then
237+ chmod +x ./.github/scripts/${{ matrix.os }}/postcompile_runtime.sh
238+ ./.github/scripts/${{ matrix.os }}/postcompile_runtime.sh
239+ fi
173240
174241 - name : Download CodeCompass binaries
175242 uses : actions/download-artifact@v2
@@ -241,7 +308,6 @@ jobs:
241308 cd $HOME/cc-install/bin
242309 ./CodeCompass_parser -d $PROJ_XERCES_CONNSTRING -w $HOME/$DIR_WS/ -n "Xerces-C" -i $HOME/xerces-c -i $HOME/build_xerces-c/compile_commands.json -j $(nproc)
243310
244-
245311 # # DOCKER IMAGE JOB
246312 docker :
247313 needs : parse
@@ -253,7 +319,6 @@ jobs:
253319 DOCKERHUB_USERNAME : ${{ secrets.DOCKERHUB_USERNAME }}
254320 DOCKERHUB_TOKEN : ${{ secrets.DOCKERHUB_TOKEN }}
255321
256-
257322 # # TARBALL JOB
258323 tarball :
259324 needs : parse
0 commit comments