在 CircleCI 中使用顺序工作流

在 Real Python 的帮助下,我通过 CircleCI 了解了持续集成。我config.yml根据 RP 教程编写了这个文件:


version: 2

jobs:

  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 file

version: 2

jobs:

  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 --cov

workflows:

  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.

false


Exited with code exit status 1

我想知道我搞砸了什么。谢谢。


慕哥9229398
浏览 176回答 3
3回答

牛魔王的故事

我得到了同样的错误并通过仅将版本更改为 2.1 解决了它:版本:2.1

HUX布斯

好吧,我想通了这个问题:在 Real Python 教程中,构建和测试都是在单个作业中完成的,该作业在单个 docker 容器内运行。我没有意识到的是,每个工作都需要一个码头工人,而这些工作不共享码头工人。这意味着为了将我的工作build和我的工作分开test,我必须:重建虚拟环境重新激活它重新安装安装依赖项。对于这两个工作。只有这样我才能运行 pytest。这看起来效率很低,但现在可以了!

隔江千里

我得到了相同的结果,并将添加的版本修复到工作流选项卡。像那样:workflows:   version: 2   build_and_test:     jobs:       ...但要小心空格或制表符。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python