11name : ci 
22on :
33  pull_request :
4+   release :
5+     types : [published] 
6+ 
47  push :
58    tags :
69    branches :
710      - main 
11+       - develop 
812
913env :
10-   #  Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
11-   #  Conan cache environment variables
12-   CONAN_SYSREQUIRES_MODE : enabled 
13-   CONAN_USER_HOME : " ${{ github.workspace }}/conan-cache" 
14-   CONAN_USER_HOME_SHORT : " ${{ github.workspace }}/conan-cache/short" 
14+   CLANG_TIDY_VERSION : " 15.0.2" 
15+   VERBOSE : 1 
1516
1617jobs :
1718  Test :
@@ -32,116 +33,145 @@ jobs:
3233          - macos-10.15 
3334          - windows-2019 
3435        compiler :
35-           #  you can specify the version after `-` like "llvm-13 .0.0 ".
36-           - llvm 
37-           - gcc-8  
36+           #  you can specify the version after `-` like "llvm-15 .0.2 ".
37+           - llvm-15.0.2  
38+           - gcc-11  
3839        generator :
3940          - " Ninja Multi-Config" 
4041        build_type :
4142          - Release 
4243          - Debug 
43-         developer_mode :
44+         package_maintainer_mode :
4445          - ON 
4546          - OFF 
46-         large_tests :
47+         build_shared :
4748          - OFF 
4849
4950        exclude :
5051          #  mingw is determined by this author to be too buggy to support
5152          - os : windows-2019 
52-             compiler : gcc-8 
53-           #  These have anonalous failures, not sure what is up with no access to a physical Mac.
54-           - os : macos-10.15 
55-             compiler : gcc-8 
56-             build_type : Debug 
57-             developer_mode : ON 
53+             compiler : gcc-11 
54+ 
55+         include :
56+           #  Add appropriate variables for gcov version required. This will intentionally break
57+           #  if you try to use a compiler that does not have gcov set
58+           - compiler : gcc-11 
59+             gcov_executable : gcov 
60+             enable_ipo : On 
61+ 
62+           - compiler : llvm-15.0.2 
63+             enable_ipo : Off 
64+             gcov_executable : " llvm-cov gcov" 
65+ 
5866          - os : macos-10.15 
59-             compiler :  llvm 
60-             build_type :  Release 
61-             developer_mode :  ON 
67+             enable_ipo :  Off 
68+             enable_cppcheck :  OFF 
69+             enable_clang_tidy :  OFF 
6270
71+           - os : ubuntu-20.04 
72+             enable_clang_tidy : On 
73+             enable_cppcheck : On 
6374
6475
65-         include :
66-           #  setup gcov variables for extra compiler versions
67-           - compiler : llvm 
68-             gcov : " llvm-cov gcov" 
69-           - compiler : gcc-8 
70-             gcov : " gcov-8" 
71- 
72-           #  setup preferred package generators
73-           - developer_mode : OFF 
74-             build_type : Release 
76+           #  Set up preferred package generators, for given build configurations
77+           - build_type : Release 
78+             package_maintainer_mode : OFF 
7579            package_generator : TBZ2 
7680
77- 
7881          #  This exists solely to make sure a non-multiconfig build works
7982          - os : ubuntu-20.04 
80-             compiler : gcc 
81-             gcov : gcov 
83+             compiler : gcc-11 
8284            generator : " Unix Makefiles" 
8385            build_type : Debug 
84-             developer_mode : On 
86+             gcov_executable : gcov 
87+             package_maintainer_mode : On 
88+             enable_ipo : Off 
89+             enable_clang_tidy : On 
90+             enable_cppcheck : On 
8591
86-           - os : windows-2019 
92+ 
93+           #  Windows msvc builds
94+           - os : windows-2022 
8795            compiler : msvc 
88-             generator : " Visual Studio 16 2019 " 
96+             generator : " Visual Studio 17 2022 " 
8997            build_type : Debug 
90-             developer_mode : On 
91-           - os : windows-2019 
98+             package_maintainer_mode : On 
99+             enable_ipo : On 
100+             enable_clang_tidy : Off 
101+             enable_cppcheck : Off 
102+ 
103+ 
104+           - os : windows-2022 
92105            compiler : msvc 
93-             generator : " Visual Studio 16 2019 " 
106+             generator : " Visual Studio 17 2022 " 
94107            build_type : Release 
95-             developer_mode : On 
96-           - os : windows-2019 
108+             package_maintainer_mode : On 
109+             enable_ipo : On 
110+             enable_clang_tidy : Off 
111+             enable_cppcheck : Off 
112+ 
113+ 
114+           - os : windows-2022 
97115            compiler : msvc 
98-             generator : " Visual Studio 16 2019 " 
116+             generator : " Visual Studio 17 2022 " 
99117            build_type : Debug 
100-             developer_mode : Off 
101-           - os : windows-2019 
118+             package_maintainer_mode : Off 
119+             enable_clang_tidy : Off 
120+             enable_cppcheck : Off 
121+ 
122+ 
123+           - os : windows-2022 
102124            compiler : msvc 
103-             generator : " Visual Studio 16 2019 " 
125+             generator : " Visual Studio 17 2022 " 
104126            build_type : Release 
105-             developer_mode : Off 
127+             package_maintainer_mode : Off 
106128            package_generator : ZIP 
129+             enable_clang_tidy : Off 
130+             enable_cppcheck : Off 
107131
108132
133+           - os : windows-2022 
134+             compiler : msvc 
135+             generator : " Visual Studio 17 2022" 
136+             build_type : Release 
137+             package_maintainer_mode : On 
138+             enable_ipo : On 
139+             build_shared : On 
140+             enable_clang_tidy : Off 
141+             enable_cppcheck : Off 
109142
110143
111144
112145    steps :
146+       - name : Check for llvm version mismatches 
147+         if : ${{ contains(matrix.compiler, 'llvm') && !contains(matrix.compiler, env.CLANG_TIDY_VERSION) }} 
148+         uses : actions/github-script@v3 
149+         with :
150+           script : | 
151+             core.setFailed('There is a mismatch between configured llvm compiler and clang-tidy version chosen') 
152+ 
113153uses : actions/checkout@v2 
114-       -  uses :  actions/setup-python@v2 
115-       - name : Cache 
116-         uses : actions/cache@v2  
154+ 
155+       - name : Setup  Cache
156+         uses : ./.github/ actions/setup_cache 
117157        with :
118-           path : | 
119-             ~/vcpkg 
120-             ./build/vcpkg_installed 
121-             ${{ env.CONAN_USER_HOME }} 
122-             ~/.cache/pip 
123-             ${{ env.HOME }}/.cache/vcpkg/archives 
124-             ${{ env.XDG_CACHE_HOME }}/vcpkg/archives 
125-             ${{ env.LOCALAPPDATA }}\vcpkg\archives 
126-             ${{ env.APPDATA }}\vcpkg\archives 
127- key : ${{ runner.os }}-${{ matrix.compiler }}-${{matrix.build_type}}-${{matrix.generator}}-${{matrix.developer_mode}}-${{ hashFiles('**/CMakeLists.txt') }}-${{ hashFiles('./conanfile.txt')}}-${{ hashFiles('./vcpkg.json')}} 
128-           restore-keys : | 
129-             ${{ runner.os }}-${{ matrix.compiler }}-${{matrix.build_type}}-${{matrix.generator}}-${{matrix.developer_mode}} 
130- 
131- run : pip3 install conan cmake ninja 
158+           compiler : ${{ matrix.compiler }} 
159+           build_type : ${{ matrix.build_type }} 
160+           package_maintainer_mode : ${{ matrix.package_maintainer_mode }} 
161+           generator : ${{ matrix.generator }} 
132162
133163      - name : Setup Cpp 
134164        uses : aminya/setup-cpp@v1 
135165        with :
136166          compiler : ${{ matrix.compiler }} 
137167          vcvarsall : ${{ contains(matrix.os, 'windows' )}} 
138168
139-           cmake : false 
140-           ninja : false 
141-           conan : false 
169+           cmake : true 
170+           ninja : true 
142171          vcpkg : false 
143172          ccache : true 
144-           clangtidy : true 
173+           clangtidy : ${{ env.CLANG_TIDY_VERSION }} 
174+ 
145175
146176          cppcheck : true 
147177
@@ -150,7 +180,7 @@ jobs:
150180
151181      - name : Configure CMake 
152182        run : | 
153-           cmake -S . -B ./build -G "${{matrix.generator}}" -DCMAKE_BUILD_TYPE:STRING =${{matrix.build_type }} -DENABLE_DEVELOPER_MODE :BOOL=${{matrix.developer_mode }} -DENABLE_LARGE_TESTS: BOOL=${{matrix.large_tests }} -DOPT_ENABLE_COVERAGE :BOOL=${{ matrix.build_type == 'Debug' }} -DGIT_SHA:STRING=${{ github.sha }} 
183+           cmake -S . -B ./build -G "${{matrix.generator}}"  -Djson2cpp_ENABLE_CLANG_TIDY:BOOL =${{  matrix.enable_clang_tidy  }} -Djson2cpp_ENABLE_CPPCHECK :BOOL=${{  matrix.enable_cppcheck  }} -Djson2cpp_ENABLE_IPO=${{matrix.enable_ipo }} -DCMAKE_BUILD_TYPE:STRING=${{matrix.build_type}} -Djson2cpp_PACKAGING_MAINTAINER_MODE: BOOL=${{matrix.package_maintainer_mode }} -Djson2cpp_ENABLE_COVERAGE :BOOL=${{ matrix.build_type == 'Debug' }} -DGIT_SHA:STRING=${{ github.sha }} 
154184
155185name : Build 
156186        #  Execute the build.  You can specify a specific target with "--target <NAME>"
@@ -164,19 +194,15 @@ jobs:
164194        #  See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
165195        run : | 
166196          ctest -C ${{matrix.build_type}} 
167-           pwd 
168-           which gcov 
169-           gcov --version 
170-           gcovr --version 
171-           gcovr -j ${{env.nproc}} --root ../ --print-summary --xml-pretty --xml coverage.xml . --verbose --gcov-executable '${{matrix.gcov}}' 
197+           gcovr -j ${{env.nproc}} --delete --root ../ --print-summary --xml-pretty --xml coverage.xml . --gcov-executable '${{ matrix.gcov_executable }}' 
172198
173199name : Windows - Test and coverage 
174200        if : runner.os == 'Windows' 
175201        working-directory : ./build 
176202        run : | 
177203          OpenCppCoverage.exe --export_type cobertura:coverage.xml --cover_children -- ctest -C ${{matrix.build_type}} 
178204
179- name : Build Package 
205+ name : CPack 
180206        if : matrix.package_generator != '' 
181207        working-directory : ./build 
182208        run : | 
@@ -190,13 +216,15 @@ jobs:
190216          files : | 
191217            build/*-*${{ matrix.build_type }}*-*.* 
192218
219+ 
193220name : Publish Tagged Release 
194221        uses : softprops/action-gh-release@v1 
195222        if : ${{ startsWith(github.ref, 'refs/tags/') && matrix.package_generator != '' }} 
196223        with :
197224          files : | 
198225            build/*-*${{ matrix.build_type }}*-*.* 
199226
227+ 
200228name : Publish to codecov 
201229        uses : codecov/codecov-action@v2 
202230        with :
0 commit comments