为了账号安全,请及时绑定邮箱和手机立即绑定

在 CircleCI 中使用顺序工作流

在 CircleCI 中使用顺序工作流

慕哥9229398 2023-05-09 10:50:56
在 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 回答

?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

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



查看完整回答
反对 回复 2023-05-09
?
HUX布斯

TA贡献1876条经验 获得超6个赞

好吧,我想通了这个问题:

在 Real Python 教程中,构建和测试都是在单个作业中完成的,该作业在单个 docker 容器内运行。

我没有意识到的是,每个工作都需要一个码头工人,而这些工作不共享码头工人。

这意味着为了将我的工作build和我的工作分开test,我必须:

  1. 重建虚拟环境

  2. 重新激活它

  3. 重新安装安装依赖项。

对于这两个工作。只有这样我才能运行 pytest。

这看起来效率很低,但现在可以了!


查看完整回答
反对 回复 2023-05-09
?
隔江千里

TA贡献1906条经验 获得超10个赞

我得到了相同的结果,并将添加的版本修复到工作流选项卡。像那样:

workflows:
  version: 2
  build_and_test:
    jobs:
      ...

但要小心空格或制表符。


查看完整回答
反对 回复 2023-05-09
  • 3 回答
  • 0 关注
  • 174 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信