首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Gitlab上为django项目建立CI/CD

问在Gitlab上为django项目建立CI/CD
EN

Stack Overflow用户
提问于 2020-03-09 09:40:02
回答 1查看 4.8K关注 0票数 3

这是我第一次尝试为gitlab上的Django项目添加CI/CD。如果成功,我希望设置自动测试并部署到开发分支中的服务器上。随着测试几乎全部完成,依赖项被安装并启动了python manage.py test,但是测试数据库的问题。跟踪错误稍微低一点,在这里,我不太明白在测试期间如何与数据库交互。

代码语言:javascript
复制
Creating test database for alias 'default'...
 .....
 MySQLdb._exceptions.OperationalError: (2002, "Can't connect to MySQL server on '127.0.0.1' (115)")
 The above exception was the direct cause of the following exception:
 Traceback (most recent call last):
   File "manage.py", line 21, in <module>
     main()
   File "manage.py", line 17, in main
...
     super(Connection, self).__init__(*args, **kwargs2)
 django.db.utils.OperationalError: (2002, "Can't connect to MySQL server on '127.0.0.1' (115)")

在django settings.py的设置中,通过.env文件中的这些变量获取到数据库的连接器。

.env

代码语言:javascript
复制
SECRET_KEY=ja-t8ihm#h68rtytii5vw67*o8=o)=tmojpov)9)^$h%9#16v&
DEBUG=True
DB_NAME=db_name
DB_USER=username
DB_PASSWORD=dbpass
DB_HOST=127.0.0.1

随着项目的部署,一切还不清楚。我很感谢你的帮助。

gitlab-ci.yml

代码语言:javascript
复制
stages:
  - test
  - deploy

test:
  stage: test
  script:
  - apt update -qy
  - apt install python3 python3-pip virtualenvwrapper -qy
  - virtualenv --python=python3 venv/
  - source venv/bin/activate
  - pip install -r requirements.txt
  - python manage.py test 

stage: deploy
  script:
  ...
  ???
  only:
  - develop

因此,UPD建议我添加到yml文件下一行:

代码语言:javascript
复制
services:
- mysql

variables:
  # Configure mysql service (https://hub.docker.com/_/mysql/)
  MYSQL_DATABASE: test
  MYSQL_ROOT_PASSWORD: mysql

connect:
  image: mysql
  script:
  - echo "SELECT 'OK';" | mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host=mysql "$MYSQL_DATABASE"

因此,我获得了连接成功状态和测试错误状态,并以相同的回溯作为起始问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-09 09:57:10

实际上,您可以在中作为服务运行GitLab。例如:

代码语言:javascript
复制
services:
  - mysql:latest

variables:
  # Configure mysql environment variables (https://hub.docker.com/_/mysql/)
  MYSQL_DATABASE: "db_name"
  MYSQL_ROOT_PASSWORD: "dbpass"
  MYSQL_USER: "username"
  MYSQL_PASSWORD: "dbpass"

更新:在您的.env文件中,更新以下设置:

代码语言:javascript
复制
DB_HOST=mysql

更新2: (基于上的这个问题)您可以像这样更新代码:

代码语言:javascript
复制
variables:
      MYSQL_DATABASE: "db_name"
      MYSQL_ROOT_PASSWORD: "dbpass"
      MYSQL_USER: "username"
      MYSQL_PASSWORD: "dbpass"

test:
  script:
    - apt update -qy
    - mysql --user=$MYSQL_USER --password=$MYSQL_PASSWORD --database=$MYSQL_DATABASE --host=$MYSQL_HOST --execute="SHOW DATABASES; ALTER USER '$MYSQL_USER'@'%' IDENTIFIED WITH mysql_native_password BY '$MYSQL_PASSWORD'"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60597871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档