GitLab CI/CD 是 GitLab 提供的持续集成和持续交付工具,允许开发者在代码提交时自动构建、测试和部署应用程序。它通过 .gitlab-ci.yml
文件定义流水线(Pipeline),每个流水线包含多个阶段(Stage),每个阶段包含多个作业(Job)。
Django 是一个基于 Python 的高效 Web 框架,遵循 MVC(模型-视图-控制器)设计模式,内置 ORM(对象关系映射)、Admin 后台、表单处理等功能,适合快速开发。
PostgreSQL(Postgres) 是一个开源的关系型数据库,支持复杂查询、事务、外键约束和 JSON 数据类型,适合高并发和高可靠性的应用场景。
原因:
settings.py
中 DATABASES
的 HOST
、PORT
、USER
或 PASSWORD
不正确)。解决:
# settings.py 示例配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'mydatabase',
'USER': 'myuser',
'PASSWORD': 'mypassword',
'HOST': 'localhost', # 或 Postgres 容器名(如 Docker 环境)
'PORT': '5432',
}
}
检查步骤:
psql -U myuser -d mydatabase
。GRANT ALL PRIVILEGES ON DATABASE mydatabase TO myuser;
。原因:
解决:
# .gitlab-ci.yml 示例
stages:
- test
test:
stage: test
image: python:3.9
services:
- postgres:13
variables:
POSTGRES_DB: mydatabase
POSTGRES_USER: myuser
POSTGRES_PASSWORD: mypassword
before_script:
- pip install -r requirements.txt
- python manage.py migrate
script:
- python manage.py test
关键点:
services
启动 Postgres 容器。variables
设置数据库连接参数。before_script
初始化数据库。原因:
0001_initial.py
重复)。解决:
# models.py
from django.db import models
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.ForeignKey('Author', on_delete=models.CASCADE)
class Author(models.Model):
name = models.CharField(max_length=50)
# .gitlab-ci.yml
image: python:3.9
services:
- postgres:13
variables:
DATABASE_URL: "postgres://myuser:mypassword@postgres:5432/mydatabase"
stages:
- test
- deploy
test:
stage: test
before_script:
- apt-get update && apt-get install -y libpq-dev
- pip install -r requirements.txt
- python manage.py migrate
script:
- python manage.py test
deploy:
stage: deploy
only:
- main
script:
- echo "Deploy to production server..."
没有搜到相关的文章