Урок 2-4: GitLab Setup и первый pipeline
Часть 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! 🚀