Skip to main content

Key Concepts of GitLab CI/CD

  • Pipelines: Automated processes that you define in your repository.
  • Stages: Groups of jobs that run sequentially (e.g., build, test, deploy).
  • Jobs: Tasks that run in parallel within a stage.
  • Scripts: Commands that run in the job’s environment.
  • Runners: Servers that execute the jobs in your pipeline.

Adding a GitLab CI/CD Pipeline to Your Repository

Create a .gitlab-ci.yml File:

  • Create a .gitlab-ci.yml file in the root directory of your repository.
  • Use YAML syntax to define your pipeline.
stages:
  - test

variables:
  # These variables need to be defined in GitLab CI/CD settings
  # The $ syntax is how GitLab references variables
  OPENAI_API_KEY: $OPENAI_API_KEY
  ARIZE_API_KEY: $ARIZE_API_KEY
  SPACE_ID: $SPACE_ID
  DATASET_ID: $DATASET_ID

llm-experiment-job:
  stage: test
  image: python:3.10
  # The 'only' directive specifies when this job should run
  # This will run for merge requests that change files in copilot/search
  only:
    refs:
      - merge_requests
    changes:
      - copilot/search/**/*
  script:
    - pip install -q arize==7.36.0 arize-phoenix==4.29.0 nest_asyncio packaging openai 'gql[all]'
    - python ./copilot/experiments/ai_search_test.py
  artifacts:
    paths:
      - experiment_results.json
    expire_in: 1 week
Breakdown:
  • stages: The stages that will run as part of the pipeline.
  • variables: Environment variables for your pipeline.
  • llm-experiment-job: The name of the job that will run.
  • stage: Specifies which stage the job belongs to.
  • image: The Docker image to use for the job.
  • only: Conditions that determine when the job will run.
  • script: Commands to run in the job.
  • artifacts: Files to save after the job completes.

Common only Event Options:

  1. Merge Requests: Triggers the pipeline when a merge request is created or updated.
only:
  - merge_requests
  1. Specific Branches: Triggers the pipeline when code is pushed to specific branches.
only:
  - main
  - develop
  1. Changes to Specific Files: Triggers the pipeline when specific files are changed.
only:
  changes:
    - copilot/search/**/*
  1. Scheduled Pipelines: Triggers the pipeline on a scheduled time.
only:
  - schedules
  1. Tags: Triggers the pipeline when a tag is created.
only:
  - tags
  1. Combining Multiple Conditions: You can combine multiple conditions for more granular control.
only:
  refs:
    - merge_requests
    - main
  changes:
    - copilot/search/**/*