Bird
Raised Fist0
Android Kotlinmobile~20 mins

CI/CD with GitHub Actions in Android Kotlin - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
GitHub Actions Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
💻 Command Output
intermediate
2:00remaining
GitHub Actions Workflow Trigger Output
You have a GitHub Actions workflow configured to trigger on push events to the main branch only. What will happen if you push a commit to a branch named feature/login?
AThe workflow will not run because the push is not to the main branch.
BThe workflow will run because all push events trigger it.
CThe workflow will run only if the commit message contains 'deploy'.
DThe workflow will run but only after a manual approval.
Attempts:
2 left
💡 Hint
Check the event trigger conditions in the workflow YAML.
❓ Configuration
intermediate
2:00remaining
Correct Syntax for a Job in GitHub Actions
Which of the following YAML snippets correctly defines a job named build that runs on Ubuntu latest and executes a step to print 'Hello World'?
A
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Print greeting
        run: echo "Hello World"
B
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Print greeting
        command: echo "Hello World"
C
jobs:
  build:
    runs_on: ubuntu-latest
    steps:
      - name: Print greeting
        run: echo "Hello World"
D
jobs:
  build:
    runs-on: ubuntu-latest
    step:
      - name: Print greeting
        run: echo "Hello World"
Attempts:
2 left
💡 Hint
Check the exact keys required for jobs and steps in GitHub Actions YAML.
🔀 Workflow
advanced
2:30remaining
Sequential Job Execution in GitHub Actions
You want to create a workflow with two jobs: build and test. The test job should run only after build completes successfully. Which configuration achieves this?
A
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - run: echo Build
  test:
    runs-on: ubuntu-latest
    steps:
      - run: echo Test
B
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - run: echo Build
  test:
    runs-on: ubuntu-latest
    depends_on: build
    steps:
      - run: echo Test
C
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - run: echo Build
  test:
    runs-on: ubuntu-latest
    after: build
    steps:
      - run: echo Test
D
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - run: echo Build
  test:
    runs-on: ubuntu-latest
    needs: build
    steps:
      - run: echo Test
Attempts:
2 left
💡 Hint
Look for the keyword that defines job dependencies in GitHub Actions.
❓ Troubleshoot
advanced
2:30remaining
Diagnosing a Failed GitHub Actions Workflow
A GitHub Actions workflow fails with the error: Permission denied (publickey) when trying to push to the repository. What is the most likely cause?
AThe runner machine does not have internet access.
BThe workflow YAML syntax is incorrect causing authentication failure.
CThe workflow is missing a valid SSH key or token with push permissions.
DThe repository is archived and cannot accept pushes.
Attempts:
2 left
💡 Hint
Consider what is needed for GitHub Actions to push code back to the repo.
✅ Best Practice
expert
3:00remaining
Optimizing CI/CD Workflow for Android Kotlin Project
Which practice best improves build speed and efficiency in a GitHub Actions workflow for an Android Kotlin project?
ARun all tests and builds on every push to any branch without caching.
BCache Gradle dependencies and build outputs between workflow runs.
CUse a self-hosted runner with minimal resources to save costs.
DTrigger workflows only manually to avoid unnecessary runs.
Attempts:
2 left
💡 Hint
Think about how to avoid downloading dependencies every time.

Practice

(1/5)
1. What is the main purpose of using GitHub Actions in an Android Kotlin project?
easy
A. To automate building and testing the app on code changes
B. To write Kotlin code faster
C. To manually deploy the app to users
D. To edit the AndroidManifest.xml file

Solution

  1. Step 1: Understand GitHub Actions role

    GitHub Actions automates tasks like building and testing when code changes.
  2. Step 2: Identify the main benefit

    This automation helps keep the app healthy without manual work.
  3. Final Answer:

    To automate building and testing the app on code changes -> Option A
  4. Quick Check:

    Automation = building and testing [OK]
Hint: GitHub Actions automates tasks on code changes [OK]
Common Mistakes:
  • Thinking it writes code automatically
  • Confusing manual deployment with automation
  • Assuming it edits app files directly
2. Which of the following is the correct way to specify a job that runs on Ubuntu in a GitHub Actions workflow YAML file?
easy
A. runs-on: ubuntu-latest
B. runs: ubuntu-latest
C. run-on: ubuntu-latest
D. runs_on: ubuntu-latest

Solution

  1. Step 1: Recall GitHub Actions syntax for runner

    The correct key is runs-on with a hyphen.
  2. Step 2: Match the correct option

    runs-on: ubuntu-latest uses runs-on: ubuntu-latest, which is valid syntax.
  3. Final Answer:

    runs-on: ubuntu-latest -> Option A
  4. Quick Check:

    Key is runs-on with hyphen [OK]
Hint: Remember: 'runs-on' uses a hyphen, not underscore or other [OK]
Common Mistakes:
  • Using underscore instead of hyphen
  • Using 'runs' or 'run-on' keys incorrectly
  • Confusing key names with similar words
3. Given this GitHub Actions step in a workflow:
steps:
  - name: Build Debug APK
    run: ./gradlew assembleDebug

What will this step do when the workflow runs?
medium
A. It deploys the app to the Google Play Store
B. It runs unit tests only
C. It cleans the project without building
D. It runs the Gradle command to build the debug version of the app

Solution

  1. Step 1: Understand the Gradle command

    ./gradlew assembleDebug builds the debug APK of the app.
  2. Step 2: Identify the step action

    The step runs this command, so it builds the debug version.
  3. Final Answer:

    It runs the Gradle command to build the debug version of the app -> Option D
  4. Quick Check:

    assembleDebug = build debug APK [OK]
Hint: assembleDebug builds debug APK, not tests or deploys [OK]
Common Mistakes:
  • Confusing assembleDebug with deploy commands
  • Thinking it runs tests only
  • Assuming it cleans the project
4. You wrote this GitHub Actions workflow snippet:
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Build APK
        run: gradlew assembleDebug

Why might this workflow fail during the build step?
medium
A. Because 'actions/checkout@v2' is an invalid action
B. Because the command should be './gradlew assembleDebug' with './' prefix
C. Because 'runs-on' should be 'runs_on'
D. Because the job name 'build' is not allowed

Solution

  1. Step 1: Check the build command syntax

    The Gradle wrapper command needs './gradlew' to run the local script.
  2. Step 2: Identify the error cause

    Missing './' causes 'gradlew' not found error, failing the build step.
  3. Final Answer:

    Because the command should be './gradlew assembleDebug' with './' prefix -> Option B
  4. Quick Check:

    Use './gradlew' to run Gradle wrapper [OK]
Hint: Always prefix Gradle wrapper with './' in Linux runners [OK]
Common Mistakes:
  • Omitting './' before gradlew
  • Thinking action version is invalid
  • Misnaming 'runs-on' key
  • Assuming job names are restricted
5. You want your GitHub Actions workflow to run tests only when Kotlin source files change. Which trigger configuration correctly achieves this?
hard
A. on: schedule: - cron: '0 0 * * *'
B. on: push: branches: - main
C. on: push: paths: - '**/*.kt'
D. on: pull_request: paths-ignore: - '**/*.kt'

Solution

  1. Step 1: Understand GitHub Actions triggers

    The paths filter runs workflow only if matching files change.
  2. Step 2: Match trigger to Kotlin files

    on: push: paths: - '**/*.kt' triggers on push when any .kt file changes, which is correct.
  3. Final Answer:

    on: push: paths: - '**/*.kt' -> Option C
  4. Quick Check:

    Use 'paths' to trigger on specific file changes [OK]
Hint: Use 'paths' filter to run workflow on specific file changes [OK]
Common Mistakes:
  • Using 'paths-ignore' instead of 'paths'
  • Triggering on branch only, not file changes
  • Using schedule trigger for file changes
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard