Create artifact-links.yml #27
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Kotlin Multiplatform CI/CD | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
branches: | |
- main | |
jobs: | |
build-android: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Set up JDK | |
uses: actions/setup-java@v4 | |
with: | |
java-version: '17' | |
distribution: 'zulu' | |
- name: Cache Gradle packages | |
uses: actions/cache@v4 | |
with: | |
path: ~/.gradle/caches | |
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }} | |
restore-keys: | | |
${{ runner.os }}-gradle- | |
- name: Build Android | |
run: ./gradlew assembleRelease --info | |
- name: Run Unit Tests | |
run: ./gradlew test | |
- name: Build iOS shared code | |
run: ./gradlew :composeApp:compileKotlinIosSimulatorArm64 | |
- name: Upload Android artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: android-release-apk | |
path: composeApp/build/outputs/apk/release/*.apk | |
build-ios: | |
runs-on: macos-14 | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Set up JDK | |
uses: actions/setup-java@v4 | |
with: | |
java-version: '17' | |
distribution: 'zulu' | |
- name: Install Xcode Command Line Tools | |
run: | | |
if ! xcode-select --print-path > /dev/null 2>&1; then | |
echo "Xcode Command Line Tools are not installed. Installing..." | |
xcode-select --install || echo "Failed to install Xcode Command Line Tools" | |
else | |
echo "Xcode Command Line Tools are already installed" | |
fi | |
- name: Build iOS | |
run: | | |
xcodebuild -allowProvisioningUpdates -workspace iosApp/iosApp.xcodeproj/project.xcworkspace -scheme iosApp -configuration Debug -sdk iphoneos -destination name='iPhone 14' build CODE_SIGNING_REQUIRED=NO CODE_SIGN_IDENTITY="" DEVELOPMENT_TEAM="" | |
- name: Upload iOS artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ios-framework | |
path: build/ios/Debug-iphonesimulator/*.app | |
build-desktop: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Set up JDK | |
uses: actions/setup-java@v4 | |
with: | |
java-version: '17' | |
distribution: 'zulu' | |
- name: Cache Gradle packages | |
uses: actions/cache@v4 | |
with: | |
path: ~/.gradle/caches | |
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }} | |
restore-keys: | | |
${{ runner.os }}-gradle- | |
- name: Build Desktop | |
run: ./gradlew desktopJar | |
- name: Upload Desktop artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: desktop-jar | |
path: composeApp/build/libs/*.jar | |
build-macos: | |
runs-on: macos-14 | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Install Dependencies | |
run: brew install create-dmg | |
- name: Build macOS app | |
run: | | |
xcodebuild -workspace iosApp/iosApp.xcodeproj/project.xcworkspace -scheme iosApp -configuration Release -sdk macosx clean build CODE_SIGNING_REQUIRED=NO CODE_SIGN_IDENTITY="" DEVELOPMENT_TEAM="" | |
- name: Create DMG | |
run: | | |
create-dmg 'path/to/your/app.app' 'path/to/output/directory' | |
# Adjust paths as needed | |
- name: Upload DMG | |
uses: actions/upload-artifact@v3 | |
with: | |
name: macos-dmg | |
path: path/to/output/directory/*.dmg | |
build-web: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Set up JDK | |
uses: actions/setup-java@v4 | |
with: | |
java-version: '17' | |
distribution: 'zulu' | |
- name: Cache Gradle packages | |
uses: actions/cache@v4 | |
with: | |
path: ~/.gradle/caches | |
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }} | |
restore-keys: | | |
${{ runner.os }}-gradle- | |
- name: Build Web | |
run: ./gradlew wasmJsBrowserWebpack | |
- name: Upload Web artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: web-app | |
path: webApp/build/distributions/*.tar.gz | |
generate-artifact-links: | |
runs-on: ubuntu-latest | |
needs: [build-android, build-ios, build-desktop, build-web] | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: List artifacts | |
run: | | |
echo "Artifact URLs for download:" | |
echo "Android APK: ${{ needs.build-android.outputs.artifact-url }}" | |
echo "iOS Framework: ${{ needs.build-ios.outputs.artifact-url }}" | |
echo "Desktop JAR: ${{ needs.build-desktop.outputs.artifact-url }}" | |
echo "Web App: ${{ needs.build-web.outputs.artifact-url }}" |