1+ name : Build-and-Test
2+
3+ on :
4+ workflow_dispatch :
5+ push :
6+ branches :
7+ - main
8+
9+ jobs :
10+ Build-MSVC-Windows :
11+ runs-on : windows-latest
12+
13+ strategy :
14+ fail-fast : false
15+ matrix :
16+ build_type : [Debug]
17+
18+ steps :
19+ - uses : actions/checkout@v4
20+
21+ - name : Append the directory of 'vcvarsall.bat' to PATH environment variable
22+ uses : myci-actions/export-env-var-powershell@1
23+ with :
24+ name : PATH
25+ value : $env:PATH;C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build
26+
27+ - name : Install Seaborn
28+ run : |
29+ pip install seaborn
30+
31+ - name : Configure CMake
32+ working-directory : ./
33+ run : |
34+ cmake -S . -B ./Build -DCMAKE_BUILD_TYPE=${{matrix.build_type}}
35+
36+ - name : Build the Test
37+ working-directory : ./Build
38+ run : |
39+ cmake --build . --config=${{matrix.build_type}}
40+
41+ - name : Install the Test
42+ working-directory : ./Build
43+ run : |
44+ cmake --install . --config=${{matrix.build_type}}
45+
46+ - name : Run the Test
47+ working-directory : D:/a/Json-Performance/Json-Performance/Install/bin/
48+ run : |
49+ ./Json-Performance
50+ continue-on-error : true
51+
52+ - name : Commit and push the changes to a temp branch.
53+ env :
54+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
55+ working-directory : D:/a/Json-Performance/Json-Performance/
56+ run : |
57+ git config --global user.email "[email protected] " 58+ git config --global user.name "RealTimeChris"
59+ git checkout -b temp-branch-msvc-windows
60+ git add .
61+ git commit -m "Updates - MSVC-Windows"
62+ git push -f https://${{ secrets.GITHUB_TOKEN }}@github.com/RealTimeChris/Json-Performance.git temp-branch-msvc-windows
63+
64+ Build-GCC-Ubuntu :
65+ runs-on : ubuntu-latest
66+
67+ strategy :
68+ fail-fast : false
69+ matrix :
70+ build_type : [Debug]
71+
72+ steps :
73+ - uses : actions/checkout@v4
74+
75+ - name : Install Seaborn
76+ run : |
77+ pip install seaborn
78+
79+ - name : Install the latest gcc compiler.
80+ working-directory : ./
81+ run : |
82+ sudo apt-get install build-essential
83+ sudo apt-get install g++-12
84+
85+ - name : Configure CMake
86+ working-directory : ./
87+ run : |
88+ cmake -S . -B ./Build -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DCMAKE_CXX_COMPILER=/usr/bin/g++-12
89+
90+ - name : Build the Test
91+ working-directory : ./Build
92+ run : |
93+ cmake --build . --config=${{matrix.build_type}}
94+
95+ - name : Install the Test
96+ working-directory : ./Build
97+ run : |
98+ sudo cmake --install . --config=${{matrix.build_type}}
99+ sudo chmod +x /home/runner/work/Json-Performance/Json-Performance/Install/bin/Json-Performance
100+
101+ - name : Run the Test
102+ working-directory : /home/runner/work/Json-Performance/Json-Performance/Install/bin/
103+ run : |
104+ ./Json-Performance
105+ continue-on-error : true
106+
107+ - name : Commit and push the changes to a temp branch.
108+ env :
109+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
110+ working-directory : /home/runner/work/Json-Performance/Json-Performance/
111+ run : |
112+ sudo git config --global user.email "[email protected] " 113+ sudo git config --global user.name "RealTimeChris"
114+ sudo git checkout -b temp-branch-gcc-ubuntu
115+ sudo git add .
116+ sudo git commit -m "Updates - GCC-Ubuntu"
117+ sudo git push -f https://${{ secrets.GITHUB_TOKEN }}@github.com/RealTimeChris/Json-Performance.git temp-branch-gcc-ubuntu
118+
119+ Build-CLANG-Ubuntu :
120+ runs-on : ubuntu-latest
121+
122+ strategy :
123+ fail-fast : false
124+ matrix :
125+ build_type : [Debug]
126+
127+ steps :
128+ - uses : actions/checkout@v4
129+
130+ - name : Install the latest Clang compiler.
131+ run : |
132+ sudo apt update && sudo apt upgrade
133+ wget https://apt.llvm.org/llvm.sh
134+ chmod u+x llvm.sh
135+ sudo ./llvm.sh 19
136+
137+ - name : Install Seaborn
138+ run : |
139+ pip install seaborn
140+
141+ - name : Configure CMake
142+ working-directory : ./
143+ run : |
144+ cmake -S . -B ./Build -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DCMAKE_CXX_COMPILER=/usr/bin/clang++-19
145+
146+ - name : Build the Test
147+ working-directory : ./Build
148+ run : |
149+ cmake --build . --config=${{matrix.build_type}}
150+
151+ - name : Install the Test
152+ working-directory : ./Build
153+ run : |
154+ sudo cmake --install . --config=${{matrix.build_type}}
155+ sudo chmod +x /home/runner/work/Json-Performance/Json-Performance/Install/bin/Json-Performance
156+
157+ - name : Run the Test
158+ working-directory : /home/runner/work/Json-Performance/Json-Performance/Install/bin/
159+ run : |
160+ ./Json-Performance
161+ continue-on-error : true
162+
163+ - name : Commit and push the changes to a temp branch.
164+ env :
165+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
166+ working-directory : /home/runner/work/Json-Performance/Json-Performance/
167+ run : |
168+ sudo git config --global user.email "[email protected] " 169+ sudo git config --global user.name "RealTimeChris"
170+ sudo git checkout -b temp-branch-clang-ubuntu
171+ sudo git add .
172+ sudo git commit -m "Updates - CLANG-Ubuntu"
173+ sudo git push -f https://${{ secrets.GITHUB_TOKEN }}@github.com/RealTimeChris/Json-Performance.git temp-branch-clang-ubuntu
174+
175+ Build-CLANG-MacOS :
176+ runs-on : macos-latest
177+
178+ strategy :
179+ fail-fast : false
180+ matrix :
181+ build_type : [Debug]
182+
183+ steps :
184+ - uses : actions/checkout@v4
185+
186+ - name : Install the latest clang compiler.
187+ run : |
188+ brew install llvm
189+
190+ - name : Install Seaborn
191+ run : |
192+ pip install seaborn
193+
194+ - name : Install Nasm.
195+ run : |
196+ brew install nasm
197+
198+ - name : Configure CMake
199+ working-directory : ./
200+ run : |
201+ cmake -S . -B ./Build -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DCMAKE_CXX_COMPILER=/opt/homebrew/opt/llvm/bin/clang++
202+
203+ - name : Build the Test
204+ working-directory : ./Build
205+ run : |
206+ cmake --build . --config=${{ matrix.build_type }}
207+
208+ - name : Install the Test
209+ working-directory : ./Build
210+ run : |
211+ sudo cmake --install . --config=${{ matrix.build_type }}
212+ sudo chmod +x /Users/runner/work/Json-Performance/Json-Performance/Install/bin/Json-Performance
213+
214+ - name : Run the Test
215+ working-directory : /Users/runner/work/Json-Performance/Json-Performance/Install/bin/
216+ run : |
217+ ./Json-Performance
218+ continue-on-error : true
219+
220+ - name : Commit and push the changes to a temp branch.
221+ env :
222+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
223+ working-directory : /Users/runner/work/Json-Performance/Json-Performance/
224+ run : |
225+ sudo git config --global user.email "[email protected] " 226+ sudo git config --global user.name "RealTimeChris"
227+ sudo git checkout -b temp-branch-clang-macos
228+ sudo git add .
229+ sudo git commit -m "Updates - CLANG-MacOS"
230+ sudo git push -f https://${{ secrets.GITHUB_TOKEN }}@github.com/RealTimeChris/Json-Performance.git temp-branch-clang-macos
231+
232+ Merge-Branches :
233+ runs-on : ubuntu-latest
234+ needs :
235+ - Build-MSVC-Windows
236+ - Build-GCC-Ubuntu
237+ - Build-CLANG-Ubuntu
238+ - Build-CLANG-MacOS
239+
240+ steps :
241+ - uses : actions/checkout@v4
242+
243+ - name : Merge all temporary branches into the main branch
244+ env :
245+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
246+ run : |
247+ sudo git fetch origin
248+ sudo git checkout main
249+ sudo git merge origin/temp-branch-msvc-windows --no-ff
250+ sudo git merge origin/temp-branch-gcc-ubuntu --no-ff
251+ sudo git merge origin/temp-branch-clang-ubuntu --no-ff
252+ sudo git merge origin/temp-branch-clang-macos --no-ff
253+ sudo git push origin main
254+
255+ - name : Delete temporary branches
256+ env :
257+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
258+ run : |
259+ sudo git push origin --delete temp-branch-msvc-windows
260+ sudo git push origin --delete temp-branch-gcc-ubuntu
261+ sudo git push origin --delete temp-branch-clang-ubuntu
262+ sudo git push origin --delete temp-branch-clang-macos
0 commit comments