0
0
iOS Swiftmobile~20 mins

CI/CD with Xcode Cloud in iOS Swift - Mini App: Build & Ship

Choose your learning style9 modes available
Build: Xcode Cloud CI/CD Setup
This screen helps you understand and simulate a simple CI/CD pipeline setup using Xcode Cloud for an iOS app. It shows build status and lets you trigger a build.
Target UI
┌───────────────────────────────┐
│       Xcode Cloud CI/CD        │
├───────────────────────────────┤
│ Build Status: Idle             │
│                               │
│ [Trigger Build]               │
└───────────────────────────────┘
Display current build status text (Idle, Building, Success, Failure).
Add a button labeled 'Trigger Build' to start a simulated build process.
When the button is tapped, change status to 'Building' for 3 seconds, then randomly show 'Success' or 'Failure'.
Use simple SwiftUI views and state management.
Ensure accessibility labels for status text and button.
Starter Code
iOS Swift
import SwiftUI

struct ContentView: View {
    @State private var buildStatus = "Idle"

    var body: some View {
        VStack(spacing: 20) {
            Text("Build Status: \(buildStatus)")
                .accessibilityLabel("Current build status")

            Button("Trigger Build") {
                // TODO: Add build trigger logic here
            }
            .accessibilityLabel("Trigger build button")
        }
        .padding()
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
Task 1
Task 2
Solution
iOS Swift
import SwiftUI

struct ContentView: View {
    @State private var buildStatus = "Idle"

    var body: some View {
        VStack(spacing: 20) {
            Text("Build Status: \(buildStatus)")
                .accessibilityLabel("Current build status")

            Button("Trigger Build") {
                buildStatus = "Building"
                DispatchQueue.main.asyncAfter(deadline: .now() + 3) {
                    let success = Bool.random()
                    buildStatus = success ? "Success" : "Failure"
                }
            }
            .accessibilityLabel("Trigger build button")
        }
        .padding()
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

This simple SwiftUI view uses a @State variable buildStatus to track the current build state. The button triggers a simulated build by setting the status to "Building" and then, after a 3-second delay, randomly updates the status to "Success" or "Failure". Accessibility labels are added for screen readers to describe the status text and the button clearly. This simulates a basic CI/CD build feedback loop you might see in Xcode Cloud.

Final Result
Completed Screen
┌───────────────────────────────┐
│       Xcode Cloud CI/CD        │
├───────────────────────────────┤
│ Build Status: Idle             │
│                               │
│ [Trigger Build]               │
└───────────────────────────────┘
User taps 'Trigger Build' button.
Build status text changes to 'Building'.
After 3 seconds, build status updates to either 'Success' or 'Failure' randomly.
Stretch Goal
Add a progress spinner next to the build status text while building.
💡 Hint
Use SwiftUI's ProgressView and show it only when buildStatus is 'Building'.