238.md 3.5 KB
Newer Older
Lab机器人's avatar
readme  
Lab机器人 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
# Test and deploy a Python application with GitLab CI/CD

> 原文:[https://docs.gitlab.com/ee/ci/examples/test-and-deploy-python-application-to-heroku.html](https://docs.gitlab.com/ee/ci/examples/test-and-deploy-python-application-to-heroku.html)

*   [Configure project](#configure-project)
*   [Store API keys](#store-api-keys)
*   [Create Heroku application](#create-heroku-application)
*   [Create Runner](#create-runner)

# Test and deploy a Python application with GitLab CI/CD[](#test-and-deploy-a-python-application-with-gitlab-cicd "Permalink")

本示例将指导您如何在 Python 应用程序中运行测试,以及如何将其自动部署为 Heroku 应用程序.

您也可以查看或生成完整的[示例源](https://gitlab.com/ayufan/python-getting-started) .

## Configure project[](#configure-project "Permalink")

这是此项目的`.gitlab-ci.yml`文件的外观:

```
stages:
  - test
  - deploy

test:
  stage: test
  script:
    # this configures Django application to use attached postgres database that is run on `postgres` host
    - export DATABASE_URL=postgres://postgres:@postgres:5432/python-test-app
    - apt-get update -qy
    - apt-get install -y python-dev python-pip
    - pip install -r requirements.txt
    - python manage.py test

staging:
  stage: deploy
  script:
    - apt-get update -qy
    - apt-get install -y ruby-dev
    - gem install dpl
    - dpl --provider=heroku --app=gitlab-ci-python-test-staging --api-key=$HEROKU_STAGING_API_KEY
  only:
    - master

production:
  stage: deploy
  script:
    - apt-get update -qy
    - apt-get install -y ruby-dev
    - gem install dpl
    - dpl --provider=heroku --app=gitlab-ci-python-test-prod --api-key=$HEROKU_PRODUCTION_API_KEY
  only:
    - tags 
```

这个项目有三个工作:

*   `test` -用于测试 Django 应用程序.
*   `staging` -用于每次推送到`master`分支时自动部署登台环境.
*   `production` -用于为每个创建的标签自动部署生产环境.

## Store API keys[](#store-api-keys "Permalink")

您需要在 GitLab 项目的**"设置">" CI / CD">"环境变量"**中创建两个变量:

*   `HEROKU_STAGING_API_KEY` -Heroku API 密钥,用于部署登台应用程序.
*   `HEROKU_PRODUCTION_API_KEY` -Heroku API 密钥,用于部署生产应用程序.

在" [管理帐户"中](https://dashboard.heroku.com/account)找到您的 Heroku API 密钥.

## Create Heroku application[](#create-heroku-application "Permalink")

对于每个环境,您都需要创建一个新的 Heroku 应用程序. 您可以通过[仪表板](https://dashboard.heroku.com/)执行此操作.

## Create Runner[](#create-runner "Permalink")

首先安装[Docker Engine](https://s0docs0docker0com.icopy.site/installation/) .

要构建此项目,您还需要安装[GitLab Runner](https://docs.gitlab.com/runner/index.html) . 您可以使用`gitlab.com`上的公共跑步者,也可以注册自己的跑步者:

```
cat > /tmp/test-config.template.toml << EOF [[runners]]
[runners.docker]
[[runners.docker.services]]
name = "postgres:latest" EOF gitlab-runner register \
  --non-interactive \
  --url "https://gitlab.com/" \
  --registration-token "PROJECT_REGISTRATION_TOKEN" \
  --description "python-3.5" \
  --executor "docker" \
  --template-config /tmp/test-config.template.toml \
  --docker-image python:3.5 
```

使用上面的命令,您将创建一个使用[`python:3.5`](https://hub.docker.com/_/python)图像并使用[PostgreSQL](https://hub.docker.com/_/postgres)数据库的运行器.

要访问 PostgreSQL 数据库,请以没有密码的用户`postgres`身份连接到`host: postgres` .