我的第一个 .gitlab-ci.yml 文件:How to 运行 existing files in CI/CD

My first .gitlab-ci.yml file: How to run existing files in CI/CD

我通常作为一名数学家工作,在数据上构建和训练新模型,但我想尝试学习一些新东西 - 所以我是以下问题的绝对初学者。我目前的学习课题是如何在gitlab中使用CI/CD。 我在 PyCharm 中实现了一个 Python 项目。 我的文件夹结构如下所示:

其中“...”表示一些不重要的文件,.py 文件是常规 python 文件,没有特殊结尾的表达式是普通文件夹。 文件 DR.py 读取一些数据,文件 train.py 训练模型,文件 pred.py 根据训练的模型进行预测,测试文件夹包含测试文件来测试前面的组件flask 文件夹包含一个 flask app webservice 作为客户的部署。到目前为止一切顺利,在我的本地机器上一切正常。 现在我想将这个项目集成到 gitlab 中的一个 CI/CD 管道中,结构如下:

运行 DR.py > 运行 test_DR.py > 运行 train.py > 运行 test_train.py > 运行 pred.py > 运行 test_pred.py > 运行 webservice_flask.py

我不确定这种结构是否现实,因为我读过一个阶段的组件(如测试)运行 是并行的。我知道我必须在我的根项目文件夹中创建一个 .gitlab-ci.yml 文件,以初始化 CI/CD 管道。文件的结构(据我所知)应该如下所示:

stages:
  - build
  - test
  - deploy

build_database:
  stage: build
  script:
    - echo "Load the data"
    - #...here I want to run the DR.py file, but I don't know how


test_data_reader:
  stage: test
  script:
    - echo "Test the loaded data"
    -  #...here I want to run the test_DR.py file, but I don't know how

... 到目前为止,我管道的每个组件都是如此。

有人可以帮我吗?我最初的尝试完全是胡说八道吗?有人可以告诉我 yaml 文档的项目中 运行ning 文件的命令吗? 非常感谢!

您甚至不必将其分解为多个阶段,您可以在一个作业中 运行 所有阶段,只需将它们全部列在 script 下,如下所示:

build_database:
  stage: build
  script:
    - python DR.py
    - python test/run test_DR.py
    - python train.py
    - python test/test_train.py
    - python pred.py
    - python test/test_pred.py

基本上,您 运行 它在管道中的方式与您在本地 运行 它的方式相同。

在您的设置中唯一没有意义的是最后一步 - 运行网络服务。你看,CI 运行ner 将无法充当你的网络服务的服务器 - 它应该只是 build/deploy 并退出。你将不得不考虑你想在哪里以及如何 运行 这个 web 服务并在那里部署代码(可能有一些工件)。如果您不知道从哪里开始,可以看看 Heroku 作为一个选项。