代码之家  ›  专栏  ›  技术社区  ›  Dave

为什么Gitlab CI/CD中的flask应用程序中的测试阶段失败?

  •  0
  • Dave  · 技术社区  · 2 年前

    我正在学习GitLab CI/CD,我想搭建一个平台,在我的flask应用程序上运行测试。没有测试阶段,一切都可以通过Gitlab CI/CD运行。这是我的。gitlab ci。yml文件:

     image: python:3.8-slim-buster
        
        cache:
          paths:
            - .cache/pip
        
        stages:
          - build
          - test
          - deploy_heroku
        
        build message-requests:
          stage: build
          script:
            - apt-get update
            - apt-get install -y --no-install-recommends gcc
            - apt install -y default-libmysqlclient-dev
            - pip3 install -r requirements.txt
        
        test message-requests:
          stage: test
          script:
            - python3 test.py
        
        deploy_heroku:
          stage: deploy_heroku
          image: ruby:latest
          before_script:
            - apt-get update -qy
            - apt-get install -y ruby-dev
            - gem install dpl
          script:
            - dpl --provider=heroku --app=message-requests --api-key=$HEROKU_SECRET_KEY
    

    我的管道在测试阶段导致此错误:

    Traceback (most recent call last):
      File "test.py", line 1, in <module>
        from app import app
      File "/builds/dave/message-requests/app.py", line 1, in <module>
        from flask import Flask
    ModuleNotFoundError: No module named 'flask'
    Cleaning up project directory and file based variables
    00:00
    ERROR: Job failed: exit code 1
    

    本地测试运行良好。如何使用在构建阶段构建的应用程序数据? 我知道运行测试是可能的。py在构建阶段,但我听说最好有一个单独的测试阶段。 我认为解决方案是使用工件,但我不确定它们是如何工作的,以及python应用程序在哪里安装所有东西。 正如我所提到的,我是GitLab CI/CD新手,因此,如果我做错了什么,我很高兴听到最佳实践。

    1 回复  |  直到 2 年前
        1
  •  1
  •   sytech    2 年前

    在GitLab中,您创建的每个工作都是在一个全新的环境中开始的。所以,你必须在每项工作中安装你的需求。

    你的 test message-requests: job不采取任何步骤来安装Flask或其他依赖项。你应该添加这些步骤。