Bird
Raised Fist0
Gitdevops~5 mins

GitLab CI basics - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is GitLab CI?
GitLab CI is a tool built into GitLab that helps you automatically test, build, and deploy your code whenever you make changes.
Click to reveal answer
beginner
What file do you use to define GitLab CI jobs?
You use a file named .gitlab-ci.yml placed in the root of your project to define jobs and pipelines.
Click to reveal answer
beginner
What is a pipeline in GitLab CI?
A pipeline is a set of jobs that run in order or in parallel to test, build, and deploy your code automatically.
Click to reveal answer
beginner
What is a job in GitLab CI?
A job is a single task defined in the .gitlab-ci.yml file, like running tests or building your app.
Click to reveal answer
beginner
How do you trigger a GitLab CI pipeline?
A pipeline runs automatically when you push code to GitLab or when you manually start it from the GitLab interface.
Click to reveal answer
Where should the .gitlab-ci.yml file be placed in your project?
AIn the tests folder
BIn the docs folder
CIn the root directory
DIn the .git folder
What does a GitLab CI job do?
AStores your code
BCreates a new Git branch
CManages user permissions
DRuns a specific task like testing or building
When does a GitLab CI pipeline usually run?
AWhen you push code to GitLab
BWhen you open a new issue
CWhen you delete a branch
DWhen you clone a repository
What language is used to write the GitLab CI configuration file?
AJSON
BYAML
CXML
DPython
Which of these is NOT a part of a GitLab CI pipeline?
ACommits
BStages
CArtifacts
DJobs
Explain what a GitLab CI pipeline is and how it helps in software development.
Think about how pipelines run tasks automatically when you change code.
You got /5 concepts.
    Describe the role of the .gitlab-ci.yml file in GitLab CI.
    This file tells GitLab what tasks to run and when.
    You got /5 concepts.

      Practice

      (1/5)
      1. What is the main purpose of the .gitlab-ci.yml file in GitLab CI?
      easy
      A. To create branches automatically
      B. To store the source code of the project
      C. To configure user permissions in GitLab
      D. To define the stages and jobs for automated tasks like build and test

      Solution

      1. Step 1: Understand the role of .gitlab-ci.yml

        This file is used to tell GitLab CI what tasks to run automatically, such as building or testing code.
      2. Step 2: Identify what the file does not do

        It does not store code, manage permissions, or create branches; those are handled elsewhere.
      3. Final Answer:

        To define the stages and jobs for automated tasks like build and test -> Option D
      4. Quick Check:

        .gitlab-ci.yml defines jobs and stages [OK]
      Hint: Remember: .gitlab-ci.yml controls automation steps [OK]
      Common Mistakes:
      • Confusing .gitlab-ci.yml with source code files
      • Thinking it manages user permissions
      • Assuming it creates branches automatically
      2. Which of the following is the correct way to define a job named test in .gitlab-ci.yml?
      easy
      A. job test { run: echo "Running tests" }
      B. test: script: - echo "Running tests"
      C. job: name: test command: echo "Running tests"
      D. task test: commands: - echo "Running tests"

      Solution

      1. Step 1: Recall GitLab CI job syntax

        A job is defined by its name followed by a script section listing commands to run.
      2. Step 2: Compare options to correct YAML format

        test: script: - echo "Running tests" uses correct YAML with job name and script list. Others use incorrect keywords or syntax.
      3. Final Answer:

        test: script: - echo "Running tests" -> Option B
      4. Quick Check:

        Job name + script list = correct job definition [OK]
      Hint: Job name + script list is the YAML way to define jobs [OK]
      Common Mistakes:
      • Using curly braces or incorrect keywords like 'job' or 'task'
      • Not using a list for script commands
      • Incorrect indentation or missing colons
      3. Given this .gitlab-ci.yml snippet:
      stages:
        - build
        - test
      
      build_job:
        stage: build
        script:
          - echo "Building"
      test_job:
        stage: test
        script:
          - echo "Testing"

      What will be the order of job execution?
      medium
      A. Both jobs run at the same time
      B. test_job runs first, then build_job
      C. build_job runs first, then test_job
      D. Only build_job runs

      Solution

      1. Step 1: Understand stages order

        Stages run in the order listed: first 'build', then 'test'.
      2. Step 2: Match jobs to stages

        'build_job' is in 'build' stage, so it runs before 'test_job' in 'test' stage.
      3. Final Answer:

        build_job runs first, then test_job -> Option C
      4. Quick Check:

        Stages run in order listed [OK]
      Hint: Jobs run by stage order top to bottom [OK]
      Common Mistakes:
      • Assuming jobs run in alphabetical order
      • Thinking jobs run in parallel by default
      • Ignoring the stages list order
      4. You wrote this job in .gitlab-ci.yml but it never runs:
      deploy_job:
        script:
          - echo "Deploying"
        only:
          - main

      What is the likely reason?
      medium
      A. The job is missing a stage definition
      B. The branch name is incorrect; it should be 'master' instead of 'main'
      C. The 'only' keyword is deprecated; use 'rules' instead
      D. The script command is invalid

      Solution

      1. Step 1: Check the stage assignment

        The job does not specify a 'stage' key, so it defaults to the 'test' stage.
      2. Step 2: Impact of missing stage in global stages

        If the root-level 'stages' does not include 'test', GitLab fails the job because the stage is undefined in the global stages list.
      3. Final Answer:

        The job is missing a stage definition -> Option A
      4. Quick Check:

        Default stage 'test' must be in 'stages' list [OK]
      Hint: Default stage is 'test'; must be defined in 'stages' if used [OK]
      Common Mistakes:
      • Assuming branch name is wrong without checking
      • Forgetting to define a stage (defaults to 'test' if missing)
      • Thinking script command syntax is wrong
      5. You want a job to run only on the develop branch and after the build stage completes successfully. Which .gitlab-ci.yml snippet correctly achieves this?
      hard
      A. deploy_job: stage: deploy script: - echo "Deploying" rules: - if: '$CI_COMMIT_BRANCH == "develop"' when: on_success needs: - build_job
      B. deploy_job: stage: deploy script: - echo "Deploying" only: - develop after_script: - build_job
      C. deploy_job: stage: deploy script: - echo "Deploying" rules: - branch: develop when: always dependencies: - build_job
      D. deploy_job: stage: deploy script: - echo "Deploying" except: - main needs: - build

      Solution

      1. Step 1: Use 'rules' to run job only on 'develop' branch

        The 'rules' keyword with condition '$CI_COMMIT_BRANCH == "develop"' ensures the job runs only on that branch.
      2. Step 2: Use 'needs' to wait for 'build_job'

        The 'needs' keyword makes this job wait for 'build_job' to finish successfully before running.
      3. Final Answer:

        deploy_job: stage: deploy script: - echo "Deploying" rules: - if: '$CI_COMMIT_BRANCH == "develop"' when: on_success needs: - build_job -> Option A
      4. Quick Check:

        'rules' + 'needs' control branch and stage order [OK]
      Hint: Use 'rules' for branch and 'needs' for stage dependency [OK]
      Common Mistakes:
      • Using deprecated 'only' or 'except' keywords
      • Confusing 'after_script' with job dependencies
      • Incorrect 'needs' or 'dependencies' usage
      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