Урок 2-4: GitLab Setup и первый pipeline

Pavel 08.12.2025 19:26 4 просмотров

Часть 1: Создание GitLab репозитория

Регистрация на GitLab.com

1. Перейти на https://gitlab.com
2. Нажать "Register now"
3. Заполнить данные (email, пароль, имя)
4. Подтвердить email
5. Готово!

Создание проекта

1. Перейти на https://gitlab.com
2. Нажать "Create a project"
3. Выбрать "Create blank project"
4. Заполнить:
   - Project name: my-project
   - Project slug: my-project
   - Visibility: Public или Private
5. Нажать "Create project"

Клонирование репозитория

# SSH (рекомендуется)
git clone git@gitlab.com:username/my-project.git

# HTTPS
git clone https://gitlab.com/username/my-project.git

# Перейти в директорию
cd my-project

Часть 2: Создание .gitlab-ci.yml файла

Способ 1: Через GitLab Web UI

1. В проекте нажать: CI/CD  Pipelines
2. Нажать "New pipeline" или "Set up CI/CD"
3. Выбрать "Configure pipeline"
4. Выбрать "Create new .gitlab-ci.yml"
5. Пишите конфигурацию в редакторе
6. Нажать "Commit changes"

Способ 2: Локально через git

# Создать файл
cat > .gitlab-ci.yml << 'EOF'
stages:
  - build
  - test

build_job:
  stage: build
  script:
    - echo "Building..."

test_job:
  stage: test
  script:
    - echo "Testing..."
EOF

# Добавить в git
git add .gitlab-ci.yml

# Закоммитить
git commit -m "Add GitLab CI/CD pipeline"

# Запушить
git push origin main

Часть 3: Первый простой pipeline

Минимальный pipeline

# .gitlab-ci.yml
stages:
  - build
  - test

build_job:
  stage: build
  script:
    - echo "Building application..."
    - echo "Build complete!" > build.log

test_job:
  stage: test
  script:
    - echo "Running tests..."
    - npm test

Pipeline с параллельными тестами

stages:
  - build
  - test
  - deploy

variables:
  VERSION: "1.0"
  OWNER: "DevOps Team"

build_job:
  stage: build
  script:
    - echo "Building v${VERSION}..."
    - mkdir -p build
    - echo "Built" > build/status.txt
  artifacts:
    paths:
      - build/

test_unit:
  stage: test
  needs: ["build_job"]
  script:
    - echo "Running unit tests..."
    - npm test

test_integration:
  stage: test
  needs: ["build_job"]
  script:
    - echo "Running integration tests..."
    - npm test:integration

deploy_staging:
  stage: deploy
  script:
    - echo "Deploying to staging..."
    - ./scripts/deploy.sh staging

Часть 4: Запуск pipeline

Автоматический запуск

Pipeline запускается автоматически при:
- git push (в любой branch)
- Создании merge request
- Создании tag

Просмотр pipeline

1. В проекте: CI/CD  Pipelines
2. Нажать на последний pipeline
3. Видеть все stages и jobs
4. Нажать на job для просмотра логов

Логи jobs

1. Нажать на job в pipeline
2. Видеть полный лог выполнения
3. Скачать лог если нужно

Часть 5: Docker в pipeline

Использование Docker образа

image: ubuntu:20.04    # Используется для всех jobs

build_job:
  stage: build
  script:
    - apt-get update
    - apt-get install -y npm
    - npm install
    - npm run build

Разные образы для разных jobs

build_node:
  stage: build
  image: node:16
  script:
    - npm install
    - npm run build

build_python:
  stage: build
  image: python:3.9
  script:
    - pip install -r requirements.txt
    - python setup.py build

Docker in Docker (DinD)

build_docker_image:
  stage: build
  image: docker:latest
  services:
    - docker:dind
  script:
    - docker build -t my-app:latest .
    - docker push registry.gitlab.com/username/my-app:latest
  rules:
    - if: '$CI_COMMIT_BRANCH == "main"'

Часть 6: Артефакты и кэш

Сохранение артефактов

build_job:
  stage: build
  script:
    - mkdir -p dist
    - npm run build
    - echo "Build output here" > dist/output.txt
  artifacts:
    paths:
      - dist/
    expire_in: 1 week

test_job:
  stage: test
  needs: ["build_job"]
  script:
    - cat dist/output.txt  # Получаем файл из build_job

Кэширование зависимостей

build_job:
  stage: build
  cache:
    paths:
      - node_modules/
  script:
    - npm install
    - npm run build

Комбинация кэша и артефактов

# Кэш экономит время (сохраняет node_modules)
# Артефакты передают файлы между stages

build_job:
  stage: build
  cache:
    paths:
      - node_modules/
  artifacts:
    paths:
      - dist/
  script:
    - npm install
    - npm run build

Часть 7: Ошибки и отладка

Job падает при ошибке

Если любая команда завершится с ошибкой (exit code != 0),
весь job считается failed

Продолжить несмотря на ошибку

test_job:
  stage: test
  script:
    - npm test || true    # Продолжить даже если тест упал
    - echo "Tests completed"

Смотреть логи

1. CI/CD  Pipelines
2. Нажать на failed job
3. Скролить вниз для подробных логов

Часть 8: GitLab Runners

Что это?

GitLab Runner — это сервер, на котором выполняются jobs из pipeline.

Типы runners

1. Shared runners (на GitLab.com)
   - Бесплатные 400 минут в месяц
   - Для публичных проектов

2. Specific runners (ваш сервер)
   - Неограниченное время
   - Установленный на вашем сервере

Регистрация своего runner'а

# 1. Установить GitLab Runner
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash
sudo apt-get install gitlab-runner

# 2. Зарегистрировать runner
sudo gitlab-runner register
  # GitLab instance URL: https://gitlab.com
  # Registration token: (от проекта Settings → CI/CD → Runners)
  # Runner description: my-runner
  # Tags: my-tag
  # Docker image: ubuntu:20.04

# 3. Запустить runner
sudo gitlab-runner start

Использование specific runner'а

build_job:
  stage: build
  tags:
    - my-runner          # Используем наш runner
  script:
    - echo "Running on custom runner"

Проверочный список

  • [ ] Создали GitLab репозиторий
  • [ ] Создали .gitlab-ci.yml файл
  • [ ] Запустили первый pipeline
  • [ ] Видите stages в UI
  • [ ] Смотрите логи jobs
  • [ ] Используете Docker образы
  • [ ] Сохраняете артефакты
  • [ ] Понимаете как работают runners

Готовы? Переходите к Уроку 5 - Advanced pipeline! 🚀

Комментарии (0)

Для добавления комментария необходимо войти в аккаунт

Войти / Зарегистрироваться