在 Real Python 的帮助下,我通过 CircleCI 了解了持续集成。我config.yml根据 RP 教程编写了这个文件:version: 2jobs: build: docker: - image: circleci/python:3.8 working_directory: ~/repo steps: # Step 1: obtain repo from GitHub - checkout # Step 2: create virtual env and install dependencies - run: name: install dependencies command: | python3 -m venv venv . venv/bin/activate pip install -r requirements.txt # Step 3: run linter and tests - run: name: run tests command: | . venv/bin/activate pytest -v --cov接下来,在我当前的项目中实施上述内容并确保其正常工作后,我继续阅读文档并找到了一些其他编写配置文件的方法。也就是说,我喜欢顺序工作流格式,因为它将构建和测试分开为两个不同的工作。我试图重组上述配置以遵循此准则:# Python CircleCI 2.0 configuration fileversion: 2jobs: build: docker: - image: circleci/python:3.8 working_directory: ~/repo steps: # Step 1: obtain repo from GitHub - checkout # Step 2: create virtual env and install dependencies - run: name: install dependencies command: | python3 -m venv venv . venv/bin/activate pip install -r requirements.txt unittest: docker: - image: circleci/python:3.8 # Step 3: run linter and tests steps : - checkout - run: name: run tests command: | . venv/bin/activate pytest -v --covworkflows: build_and_test: jobs: - build - unittest: requires: -build但是,这会在构建 0.3 秒后失败并出现错误:#!/bin/sh -eo pipefail# Unsupported or missing workflows config version# # -------# Warning: This configuration was auto-generated to show you the message above.# Don't rerun this job. Rerunning will have no effect.falseExited with code exit status 1我想知道我搞砸了什么。谢谢。
3 回答
HUX布斯
TA贡献1876条经验 获得超6个赞
好吧,我想通了这个问题:
在 Real Python 教程中,构建和测试都是在单个作业中完成的,该作业在单个 docker 容器内运行。
我没有意识到的是,每个工作都需要一个码头工人,而这些工作不共享码头工人。
这意味着为了将我的工作build
和我的工作分开test
,我必须:
重建虚拟环境
重新激活它
重新安装安装依赖项。
对于这两个工作。只有这样我才能运行 pytest。
这看起来效率很低,但现在可以了!
隔江千里
TA贡献1906条经验 获得超10个赞
我得到了相同的结果,并将添加的版本修复到工作流选项卡。像那样:
workflows: version: 2 build_and_test: jobs: ...
但要小心空格或制表符。
添加回答
举报
0/150
提交
取消