На главную
Контейнеры и CI/CD
Конфиг .gitlab-ci.yml
Собирает пайплайн GitLab: стадии, образ, кэш, артефакты, отчёты о тестах и правила запуска. Три готовых шаблона — Node, Python и сборка образа — служат отправной точкой.
Общее
Через запятую
Задания
.gitlab-ci.yml
image: node:22-alpine
stages:
- install
- test
- build
- deploy
variables:
npm_config_cache: '$CI_PROJECT_DIR/.npm'
cache:
key: '$CI_COMMIT_REF_SLUG'
paths:
- node_modules/
- .npm/
install:
stage: install
script:
- npm ci --prefer-offline
artifacts:
paths:
- node_modules/
expire_in: 1h
lint:
stage: test
needs:
- install
script:
- npm run lint
unit:
stage: test
needs:
- install
script:
- npm test -- --run
artifacts:
reports:
junit: junit.xml
build:
stage: build
needs:
- install
script:
- npm run build
artifacts:
paths:
- dist/
expire_in: 1 week
deploy:
stage: deploy
needs:
- build
script:
- ./deploy.sh
environment:
name: production
rules:
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
when: manual
Что стоит помнить
- · Задания одной стадии идут параллельно; следующая стадия ждёт всю предыдущую.
- · needs ломает этот порядок и запускает задание, как только готовы его зависимости — пайплайн становится графом, а не лестницей.
- · Кэш ускоряет, но не гарантируется: задание обязано работать и с пустым кэшем. Передавать файлы между стадиями — это артефакты.
- · Без rules задание запускается на каждый push, включая ветки merge request — пайплайн задваивается.