На главную

Контейнеры и 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 — пайплайн задваивается.