Ответ
В CI/CD-системах (GitLab CI, Jenkins, GitHub Actions) Pipeline и Job — это иерархические понятия.
- Pipeline (пайплайн) — это полный автоматизированный процесс доставки кода, состоящий из последовательных или параллельных стадий (stages). Он определяет что и в каком порядке должно быть выполнено.
- Job (задача) — это минимальная исполняемая единица внутри пайплайна. Job определяет как выполнить конкретную работу (какие команды запустить, в каком окружении).
Аналогия: Строительство дома.
- Pipeline = весь план строительства (фундамент → стены → крыша → отделка).
- Stage = крупный этап (например, "отделка").
- Job = конкретная работа на этаже (например, "укладка плитки в ванной").
Пример .gitlab-ci.yml:
stages: # Определение стадий пайплайна
- build
- test
- deploy
build_job: # Это Job (задача) на стадии 'build'
stage: build
script:
- echo "Running build..."
- mvn compile
unit_test_job: # Это Job на стадии 'test'
stage: test
script:
- echo "Running unit tests..."
- mvn test
integration_test_job: # Еще один Job на той же стадии 'test' (выполнится параллельно с unit_test_job)
stage: test
script:
- echo "Running integration tests..."
- mvn verify -Pintegration
deploy_staging_job: # Это Job на стадии 'deploy'
stage: deploy
script:
- echo "Deploying to staging..."
- ./deploy.sh staging
Итог: Один Pipeline содержит несколько Stages, а каждая Stage содержит один или несколько Jobs.