import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Button
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.material3.TextField
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MaterialTheme {
Surface(modifier = Modifier.padding(16.dp)) {
CiCdSetupScreen()
}
}
}
}
}
@Composable
fun CiCdSetupScreen() {
val yamlContent = remember { mutableStateOf(
"name: Android CI\non: [push]\njobs:\n build:\n runs-on: ubuntu-latest\n steps:\n - uses: actions/checkout@v3\n - name: Set up JDK 17\n uses: actions/setup-java@v3\n with:\n distribution: 'temurin'\n java-version: '17'\n - name: Build Debug APK\n run: ./gradlew assembleDebug\n - name: Run Unit Tests\n run: ./gradlew test"
) }
Column {
Text(text = "GitHub Actions Workflow YAML", style = MaterialTheme.typography.titleMedium)
Spacer(modifier = Modifier.height(8.dp))
TextField(
value = yamlContent.value,
onValueChange = { yamlContent.value = it },
modifier = Modifier.height(200.dp),
readOnly = true
)
Spacer(modifier = Modifier.height(16.dp))
Text(text = "Steps Explanation:")
Text(text = "1. Checkout code: Gets your app code from GitHub.")
Text(text = "2. Set up JDK 17: Prepares Java environment for building.")
Text(text = "3. Build Debug APK: Compiles your app into an APK file.")
Text(text = "4. Run Unit Tests: Runs your app's tests to check for errors.")
Spacer(modifier = Modifier.height(24.dp))
Button(onClick = { /* Save workflow action */ }) {
Text(text = "Save Workflow")
}
Spacer(modifier = Modifier.height(8.dp))
Button(onClick = { /* Cancel action */ }) {
Text(text = "Cancel")
}
}
}
This screen uses Jetpack Compose to create a simple UI showing a GitHub Actions workflow YAML for Android Kotlin CI/CD.
The TextField displays the YAML content in a read-only box so users can see the exact workflow steps.
Below, Text components explain each step in simple words, helping beginners understand the process.
Two buttons let users save or cancel the workflow setup (actions are placeholders here).
The UI uses padding and spacing for clarity and readability.