-
Notifications
You must be signed in to change notification settings - Fork 0
409 lines (343 loc) · 13.6 KB
/
Build and Release.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
# By Abdullah As-Sadeed
name: Build and Release
on:
push:
branches:
- main
jobs:
build-for-linux:
name: Build for Linux
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
channel: stable
- name: Install Dependencies
run: |
sudo apt update -y
sudo apt install -y ninja-build libgtk-3-dev fuse
shell: bash
- name: Run flutter doctor
run: flutter doctor -v
shell: bash
- name: Checkout Repository
uses: actions/checkout@v4
- name: Get Dependencies
run: flutter pub get -v
shell: bash
- name: Build for Linux
run: flutter build linux --release --obfuscate --split-debug-info=./build/Debug_Symbols/Linux_x64/ -v
shell: bash
- name: Upload Build Artifacts (Executable)
uses: actions/upload-artifact@v4
with:
name: Linux_x64_Executable
path: build/linux/x64/release/bundle/*
- name: Download appimagetool (x86_64) and Make It Executable
run: |
wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage
chmod +x ./appimagetool-x86_64.AppImage
shell: bash
- name: Copy Build Artifacts, and Icon into AppDir
run: |
cp -r ./build/linux/x64/release/bundle/* ./Linux_Extras/Bitscoper_Cyber_ToolBox.AppDir/
cp ./assets/icon/maskable_icon_x512.png ./Linux_Extras/Bitscoper_Cyber_ToolBox.AppDir/Bitscoper_Cyber_ToolBox.png
shell: bash
- name: Permit Execution of AppRun and Binary
run: |
chmod +x ./Linux_Extras/Bitscoper_Cyber_ToolBox.AppDir/AppRun
chmod +x ./Linux_Extras/Bitscoper_Cyber_ToolBox.AppDir/Bitscoper_Cyber_ToolBox
shell: bash
- name: Create AppImage and Make It Executable
run: |
./appimagetool-x86_64.AppImage ./Linux_Extras/Bitscoper_Cyber_ToolBox.AppDir ./Bitscoper_Cyber_ToolBox-x64.AppImage
chmod +x ./Bitscoper_Cyber_ToolBox-x64.AppImage
shell: bash
- name: Upload Build Artifacts (AppImage)
uses: actions/upload-artifact@v4
with:
name: Linux_x64_AppImage
path: Bitscoper_Cyber_ToolBox-x64.AppImage
- name: Upload Debug Symbols
uses: actions/upload-artifact@v4
with:
name: Linux_x64_Debug_Symbols
path: build/Debug_Symbols/Linux_x64/*
build-for-android:
name: Build for Android
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
channel: stable
- name: Run flutter doctor
run: flutter doctor -v
shell: bash
- name: Checkout Repository
uses: actions/checkout@v4
- name: Get Dependencies
run: flutter pub get -v
shell: bash
- name: Create key.properties
run: |
echo "storePassword=${{ secrets.ANDROID_KEYSTORE_PASSWORD }}" >> ./android/key.properties
echo "keyPassword=${{ secrets.ANDROID_KEY_PASSWORD }}" >> ./android/key.properties
echo "keyAlias=Bitscoper_Cyber_ToolBox" >> ./android/key.properties
echo "storeFile=./KeyStore.jks" >> ./android/key.properties
shell: bash
- name: Create keystore
run: |
echo "${{ secrets.ANDROID_KEYSTORE }}" | base64 --decode > ./android/app/KeyStore.jks
shell: bash
- name: Build appbundle
run: flutter build appbundle --release --obfuscate --split-debug-info=./build/Debug_Symbols/Android/appbundle/ -v
shell: bash
- name: Build APKs
run: flutter build apk --split-per-abi --release --obfuscate --split-debug-info=./build/Debug_Symbols/Android/APKs/ -v
shell: bash
- name: Rename Build Artifacts
run: |
mv ./build/app/outputs/bundle/release/app-release.aab ./build/app/outputs/bundle/release/Bitscoper_Cyber_ToolBox.aab
mv ./build/app/outputs/flutter-apk/app-x86_64-release.apk ./build/app/outputs/flutter-apk/Bitscoper_Cyber_ToolBox-x86_64.apk
mv ./build/app/outputs/flutter-apk/app-x86_64-release.apk.sha1 ./build/app/outputs/flutter-apk/Bitscoper_Cyber_ToolBox-x86_64.apk.sha1
mv ./build/app/outputs/flutter-apk/app-arm64-v8a-release.apk ./build/app/outputs/flutter-apk/Bitscoper_Cyber_ToolBox-ARM64_V8A.apk
mv ./build/app/outputs/flutter-apk/app-arm64-v8a-release.apk.sha1 ./build/app/outputs/flutter-apk/Bitscoper_Cyber_ToolBox-ARM64_V8A.apk.sha1
mv ./build/app/outputs/flutter-apk/app-armeabi-v7a-release.apk ./build/app/outputs/flutter-apk/Bitscoper_Cyber_ToolBox-ARMEABI_V7A.apk
mv ./build/app/outputs/flutter-apk/app-armeabi-v7a-release.apk.sha1 ./build/app/outputs/flutter-apk/Bitscoper_Cyber_ToolBox-ARMEABI_V7A.apk.sha1
shell: bash
- name: Upload Build Artifacts (appbundle)
uses: actions/upload-artifact@v4
with:
name: Android_appbundle
path: build/app/outputs/bundle/release/Bitscoper_Cyber_ToolBox.aab
- name: Upload Build Artifacts (x86_64 APK)
uses: actions/upload-artifact@v4
with:
name: APK_x86_64
path: build/app/outputs/flutter-apk/Bitscoper_Cyber_ToolBox-x86_64.*
- name: Upload Build Artifacts (ARM64 V8A APK)
uses: actions/upload-artifact@v4
with:
name: APK_ARM64_V8A
path: build/app/outputs/flutter-apk/Bitscoper_Cyber_ToolBox-ARM64_V8A.*
- name: Upload Build Artifacts (ARMEABI V7A APK)
uses: actions/upload-artifact@v4
with:
name: APK_ARMEABI_V7A
path: build/app/outputs/flutter-apk/Bitscoper_Cyber_ToolBox-ARMEABI_V7A.*
- name: Upload Debug Symbols (appbundle)
uses: actions/upload-artifact@v4
with:
name: Android_appbundle_Debug_Symbols
path: build/Debug_Symbols/Android/appbundle/*
- name: Upload Debug Symbols (APKs)
uses: actions/upload-artifact@v4
with:
name: APK_Debug_Symbols
path: build/Debug_Symbols/Android/APKs/*
build-for-macos:
name: Build for macOS
runs-on: macos-latest
permissions:
contents: read
steps:
- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
channel: stable
- name: Run flutter doctor
run: flutter doctor -v
- name: Checkout Repository
uses: actions/checkout@v4
- name: Get Dependencies
run: flutter pub get -v
- name: Build for macOS
run: flutter build macos --release --obfuscate --split-debug-info=./build/Debug_Symbols/macOS/ -v
- name: Upload Build Artifacts
uses: actions/upload-artifact@v4
with:
name: macOS_Executable
path: build/macos/Build/Products/Release/*.app
- name: Upload Debug Symbols
uses: actions/upload-artifact@v4
with:
name: macOS_Debug_Symbols
path: build/Debug_Symbols/macOS/*
# build-for-ios:
# name: Build for iOS
# runs-on: macos-latest
# permissions:
# contents: read
# steps:
# - name: Install Pods
# run: |
# cd ios && pod install
# - name: Setup Flutter
# uses: subosito/flutter-action@v2
# with:
# channel: stable
# - name: Run flutter doctor
# run: flutter doctor -v
# - name: Checkout Repository
# uses: actions/checkout@v4
# - name: Get Dependencies
# run: flutter pub get -v
# - name: Build for iOS
# run: flutter build ios --no-codesign --release --obfuscate --split-debug-info=./build/Debug_Symbols/iOS/ -v
# - name: Upload Build Artifacts
# uses: actions/upload-artifact@v4
# with:
# name: iOS_Application
# path: build/ios/iphoneos/*
# - name: Upload Debug Symbols
# uses: actions/upload-artifact@v4
# with:
# name: iOS_Debug_Symbols
# path: build/Debug_Symbols/iOS/*
build-for-windows:
name: Build for Windows
runs-on: windows-latest
permissions:
contents: read
steps:
- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
channel: stable
- name: Run flutter doctor
run: flutter doctor -v
- name: Checkout Repository
uses: actions/checkout@v4
- name: Get Dependencies
run: flutter pub get -v
- name: Build for Windows
run: dart run msix:create # This includes: flutter build windows --release --obfuscate --split-debug-info=./build/Debug_Symbols/Windows/
- name: Move MSIX Package
run: |
New-Item -ItemType Directory -Force -Path build\windows\x64\runner\Release_MSIX
Move-Item -Path build\windows\x64\runner\Release\Bitscoper_Cyber_ToolBox.msix -Destination build\windows\x64\runner\Release_MSIX/Bitscoper_Cyber_ToolBox.msix
shell: powershell
- name: Upload Build Artifacts (Executable)
uses: actions/upload-artifact@v4
with:
name: Windows_x64_Executable
path: build\windows\x64\runner\Release\*
- name: Upload Build Artifacts (MSIX Package)
uses: actions/upload-artifact@v4
with:
name: Windows_x64_MSIX_Package
path: build\windows\x64\runner\Release_MSIX\Bitscoper_Cyber_ToolBox.msix
- name: Upload Debug Symbols
uses: actions/upload-artifact@v4
with:
name: Windows_x64_Debug_Symbols
path: build\Debug_Symbols\Windows\*
build-for-web:
name: Build for Web
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
channel: stable
- name: Run flutter doctor
run: flutter doctor -v
shell: bash
- name: Checkout Repository
uses: actions/checkout@v4
- name: Get Dependencies
run: flutter pub get -v
shell: bash
- name: Build for Web
run: flutter build web --release -v
shell: bash
- name: Upload Build Artifacts
uses: actions/upload-artifact@v4
with:
name: Web_Application
path: build/web/*
upload-release:
name: Upload Release
needs: [
build-for-linux,
build-for-android,
build-for-macos,
# build-for-ios,
build-for-windows,
build-for-web,
]
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Download All Artifacts
uses: actions/download-artifact@v4
- name: Archive Build Artifacts and Debug Symbols
run: |
zip -r ./Linux_x64_Executable.zip ./Linux_x64_Executable/*
zip -r ./Android_appbundle.zip ./Android_appbundle/*
zip -r ./APK_x86_64.zip ./APK_x86_64/*
zip -r ./APK_ARM64_V8A.zip ./APK_ARM64_V8A/*
zip -r ./APK_ARMEABI_V7A.zip ./APK_ARMEABI_V7A/*
zip -r ./macOS_Executable.zip ./macOS_Executable/*
# zip -r ./iOS_Application.zip ./iOS_Application/*
zip -r ./Windows_x64_Executable.zip ./Windows_x64_Executable/*
zip -r ./Windows_x64_MSIX_Package.zip ./Windows_x64_MSIX_Package/*
zip -r ./Linux_x64_Debug_Symbols.zip ./Linux_x64_Debug_Symbols/*
zip -r ./Android_appbundle_Debug_Symbols.zip ./Android_appbundle_Debug_Symbols/*
zip -r ./APK_Debug_Symbols.zip ./APK_Debug_Symbols/*
zip -r ./macOS_Debug_Symbols.zip ./macOS_Debug_Symbols/*
# zip -r ./iOS_Debug_Symbols.zip ./iOS_Debug_Symbols/*
zip -r ./Windows_x64_Debug_Symbols.zip ./Windows_x64_Debug_Symbols/*
zip -r ./Web_Application.zip ./Web_Application/*
shell: bash
- name: Get Version
run: echo "VERSION=$(grep '^version:' ./pubspec.yaml | awk '{print $2}')" >> $GITHUB_ENV
shell: bash
- name: Rename AppImage
run: |
APPIMAGE_VERSION=${VERSION%%+*}
mv ./Linux_x64_AppImage/Bitscoper_Cyber_ToolBox-x64.AppImage ./Linux_x64_AppImage/Bitscoper_Cyber_ToolBox-$APPIMAGE_VERSION-x64.AppImage
shell: bash
- name: Delete Existing Tag and Release (If Any)
run: |
RELEASE_ID=$(curl --silent --show-error --header 'Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' https://api.github.com/repos/${{ github.repository }}/releases/tags/v$VERSION | jq '.id')
if [ "$RELEASE_ID" != "null" ]; then
curl --silent --show-error --header 'Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' --request DELETE https://api.github.com/repos/${{ github.repository }}/releases/$RELEASE_ID
git push --delete origin v$VERSION
fi
shell: bash
- name: Create Release
uses: ncipollo/[email protected]
with:
artifacts: |
./*.zip
./Linux_x64_AppImage/*.AppImage
tag: v${{ env.VERSION }}
token: ${{ secrets.GITHUB_TOKEN }}
update-docker-image:
name: Update Docker Image
needs: [upload-release]
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Build and Push Docker Image
run: |
docker login --username bitscoper --password ${{secrets.GITHUB_TOKEN}} ghcr.io
docker build . --tag ghcr.io/bitscoper/bitscoper_cyber_toolbox:latest
docker push ghcr.io/bitscoper/bitscoper_cyber_toolbox:latest
shell: bash