@@ -21,18 +21,18 @@ permissions:
2121
2222jobs :
2323 publish-ios :
24- name : Publish iOS SDK
24+ name : Publish iOS SDK & Sample App
2525 runs-on : macos-latest
26-
26+
2727 steps :
2828 - name : Checkout code
2929 uses : actions/checkout@v4
30-
30+
3131 - name : Setup Xcode
3232 uses : maxim-lobanov/setup-xcode@v1
3333 with :
3434 xcode-version : ' 15.2'
35-
35+
3636 - name : Get version
3737 id : version
3838 run : |
@@ -41,46 +41,67 @@ jobs:
4141 else
4242 echo "version=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT
4343 fi
44-
44+
4545 - name : Build iOS Package
4646 working-directory : ios
4747 run : swift build -c release
48-
48+
4949 - name : Run Tests
5050 working-directory : ios
5151 run : swift test
52-
53- - name : Create Release Archive
52+
53+ - name : Create SDK Release Archive
5454 run : |
5555 cd ios
5656 tar -czf ../AdaptiveCards-iOS-${{ steps.version.outputs.version }}.tar.gz \
5757 Package.swift Sources/ README.md LICENSE
58-
59- - name : Upload Release Asset
58+
59+ - name : Build Sample App (Simulator)
60+ run : |
61+ xcodebuild -project ios/SampleApp.xcodeproj \
62+ -scheme ACVisualizer \
63+ -configuration Release \
64+ -sdk iphonesimulator \
65+ -destination 'generic/platform=iOS Simulator' \
66+ -derivedDataPath build/ios-derived \
67+ CODE_SIGN_IDENTITY=- CODE_SIGNING_REQUIRED=NO CODE_SIGNING_ALLOWED=NO \
68+ clean build
69+
70+ - name : Package Sample App IPA
71+ run : |
72+ APP_PATH=$(find build/ios-derived -name "ACVisualizer.app" -type d | head -1)
73+ mkdir -p Payload
74+ cp -r "$APP_PATH" Payload/
75+ zip -r ACVisualizer-${{ steps.version.outputs.version }}.ipa Payload/
76+ rm -rf Payload
77+
78+ - name : Upload Release Assets
6079 uses : softprops/action-gh-release@v1
6180 if : startsWith(github.ref, 'refs/tags/')
6281 with :
63- files : AdaptiveCards-iOS-${{ steps.version.outputs.version }}.tar.gz
82+ files : |
83+ AdaptiveCards-iOS-${{ steps.version.outputs.version }}.tar.gz
84+ ACVisualizer-${{ steps.version.outputs.version }}.ipa
6485 draft : false
65- prerelease : false
86+ prerelease : ${{ contains(github.ref, 'dogfood') || contains(github.ref, 'beta') || contains(github.ref, 'rc') }}
6687 env :
6788 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
68-
89+
6990 publish-android :
70- name : Publish Android SDK
91+ name : Publish Android SDK & Sample App
7192 runs-on : ubuntu-latest
72-
93+
7394 steps :
7495 - name : Checkout code
7596 uses : actions/checkout@v4
76-
97+
7798 - name : Setup JDK 17
7899 uses : actions/setup-java@v4
79100 with :
80101 distribution : ' temurin'
81102 java-version : ' 17'
82103 cache : ' gradle'
83-
104+
84105 - name : Get version
85106 id : version
86107 run : |
@@ -89,20 +110,20 @@ jobs:
89110 else
90111 echo "version=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT
91112 fi
92-
113+
93114 - name : Grant execute permission for gradlew
94115 working-directory : android
95116 run : chmod +x gradlew || echo "No gradlew found"
96-
97- - name : Build Android Library
117+
118+ - name : Build Android Library & Sample App
98119 working-directory : android
99120 run : |
100121 if [ -f gradlew ]; then
101122 ./gradlew clean assembleRelease
102123 else
103124 gradle clean assembleRelease
104125 fi
105-
126+
106127 - name : Run Tests
107128 working-directory : android
108129 run : |
@@ -111,93 +132,115 @@ jobs:
111132 else
112133 gradle test
113134 fi
114-
135+
115136 - name : Publish to Maven Local (preparation for publishing)
116137 working-directory : android
117138 run : |
118139 if [ -f gradlew ]; then
119140 ./gradlew publishToMavenLocal || echo "Maven publish not configured"
120141 fi
121-
122- - name : Create Release Archive
142+
143+ - name : Create SDK Release Archive
123144 run : |
124145 cd android
125146 find . -name "*.aar" -type f > aar-files.txt
126147 tar -czf ../AdaptiveCards-Android-${{ steps.version.outputs.version }}.tar.gz \
127148 --files-from=aar-files.txt \
128149 build.gradle.kts settings.gradle.kts gradle.properties README.md
129-
130- - name : Upload Release Asset
150+
151+ - name : Collect Sample App APK
152+ run : |
153+ APK_PATH=$(find android/sample-app/build -name "*.apk" -path "*/release/*" | head -1)
154+ if [ -n "$APK_PATH" ]; then
155+ cp "$APK_PATH" ACVisualizer-${{ steps.version.outputs.version }}.apk
156+ else
157+ echo "Warning: Release APK not found, looking for any APK..."
158+ APK_PATH=$(find android/sample-app/build -name "*.apk" | head -1)
159+ cp "$APK_PATH" ACVisualizer-${{ steps.version.outputs.version }}.apk
160+ fi
161+
162+ - name : Upload Release Assets
131163 uses : softprops/action-gh-release@v1
132164 if : startsWith(github.ref, 'refs/tags/')
133165 with :
134- files : AdaptiveCards-Android-${{ steps.version.outputs.version }}.tar.gz
166+ files : |
167+ AdaptiveCards-Android-${{ steps.version.outputs.version }}.tar.gz
168+ ACVisualizer-${{ steps.version.outputs.version }}.apk
135169 draft : false
136- prerelease : false
170+ prerelease : ${{ contains(github.ref, 'dogfood') || contains(github.ref, 'beta') || contains(github.ref, 'rc') }}
137171 env :
138172 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
139-
173+
140174 create-release :
141175 name : Create GitHub Release
142176 needs : [publish-ios, publish-android]
143177 runs-on : ubuntu-latest
144178 if : startsWith(github.ref, 'refs/tags/')
145-
179+
146180 steps :
147181 - name : Checkout code
148182 uses : actions/checkout@v4
149-
183+
150184 - name : Get version
151185 id : version
152186 run : echo "version=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT
153-
187+
154188 - name : Create Release Notes
155189 run : |
156- cat > release-notes.md << EOF
190+ cat > release-notes.md << ' EOF'
157191 # Adaptive Cards Mobile SDK v${{ steps.version.outputs.version }}
158-
159- ## 🎉 New Release
160-
161- This release includes both iOS and Android SDKs with complete feature parity.
162-
163- ### 📦 Packages
164-
165- - **iOS SDK**: AdaptiveCards-iOS-${{ steps.version.outputs.version }}.tar.gz
166- - **Android SDK**: AdaptiveCards-Android-${{ steps.version.outputs.version }}.tar.gz
167-
168- ### 📝 Installation
169-
192+
193+ ## Dogfood Release
194+
195+ This release includes both iOS and Android SDKs with complete feature parity,
196+ plus sample apps for hands-on testing.
197+
198+ ### Packages
199+
200+ | Asset | Description |
201+ |-------|-------------|
202+ | `AdaptiveCards-iOS-${{ steps.version.outputs.version }}.tar.gz` | iOS SDK (SPM sources) |
203+ | `AdaptiveCards-Android-${{ steps.version.outputs.version }}.tar.gz` | Android SDK (AAR libraries) |
204+ | `ACVisualizer-${{ steps.version.outputs.version }}.ipa` | iOS Sample App (simulator build) |
205+ | `ACVisualizer-${{ steps.version.outputs.version }}.apk` | Android Sample App (install via `adb install`) |
206+
207+ ### Installation
208+
170209 #### iOS (Swift Package Manager)
171- \`\`\ `swift
210+ `` `swift
172211 dependencies: [
173212 .package(url: "https://github.com/VikrantSingh01/AdaptiveCards-Mobile", from: "${{ steps.version.outputs.version }}")
174213 ]
175- \`\`\ `
176-
214+ `` `
215+
177216 #### Android (Gradle)
178- \`\`\ `kotlin
217+ `` `kotlin
179218 dependencies {
180219 implementation("com.microsoft.adaptivecards:ac-core:${{ steps.version.outputs.version }}")
181220 implementation("com.microsoft.adaptivecards:ac-rendering:${{ steps.version.outputs.version }}")
182221 }
183- \`\`\`
184-
185- ### 🚀 Features
186-
222+ ```
223+
224+ #### Sample App (Android)
225+ ```bash
226+ adb install ACVisualizer-${{ steps.version.outputs.version }}.apk
227+ ```
228+
229+ ### What's Changed
230+
187231 See [CHANGELOG.md](CHANGELOG.md) for detailed changes.
188-
189- ### 📖 Documentation
190-
191- - [iOS README](ios/README.md)
192- - [Android README](android/README.md)
193- - [Sample Apps](README.md#sample-apps)
232+
233+ ### Documentation
234+
235+ - [iOS Integration Guide](docs/guides/IOS_INTEGRATION_GUIDE.md)
236+ - [Android Integration Guide](docs/guides/ANDROID_INTEGRATION_GUIDE.md)
194237 EOF
195-
238+
196239 - name : Create Release
197240 uses : softprops/action-gh-release@v1
198241 with :
199242 body_path : release-notes.md
200243 draft : false
201- prerelease : false
244+ prerelease : ${{ contains(github.ref, 'dogfood') || contains(github.ref, 'beta') || contains(github.ref, 'rc') }}
202245 env :
203246 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
0 commit comments