CS50W 第 7 讲测试,CI/CD--a 关于 YAML 和 GitHub 操作的问题

CS50W lecture7 testing,CI/CD--a problem about YAML and GitHub Actions

我正在学习 CS50 的网络编程 Python 和 JavaScript(CS50W) 课程。我现在遇到 lecture 7 Testing, CI/CD 的问题。当我在 GitHub Actions 部分跟随 Brian 时(Timestamp at about 1:13:36),我的 GitHub Actions 结果与他的不一样。

这是yaml代码(我完全是从讲座中复制的):

name: Testing
on: push

jobs:
test_project:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Run Django unit tests
  run:
    pip3 install --user django
    python manage.py test

在他的 GitHub 操作中,“运行 django 单元测试”部分没有任何问题。但是我的竟然有一些错误。我在 GitHub Actions 中的结果显示为 this(点击查看截图):

Run pip3 install --user django python manage.py test
pip3 install --user django python manage.py test
shell: /usr/bin/bash -e {0}
Collecting django
Downloading Django-4.0.3-py3-none-any.whl (8.0 MB)
ERROR: Could not find a version that satisfies the requirement python (from versions: 
none)
ERROR: No matching distribution found for python
Error: Process completed with exit code 1.

所以我认为在GitHub Ubuntu虚拟机中设置django或python有问题,然后我试图摆脱python manage.py test yaml 文件中的语法和 GitHub 操作中的“运行 django 单元测试”结果没有错误。结果显示as(点击看截图)

Run pip3 install --user django
pip3 install --user django
shell: /usr/bin/bash -e {0}
Collecting django
Downloading Django-4.0.3-py3-none-any.whl (8.0 MB)
Collecting asgiref<4,>=3.4.1
Downloading asgiref-3.5.0-py3-none-any.whl (22 kB)
Collecting backports.zoneinfo; python_version < "3.9"
Downloading backports.zoneinfo-0.2.1-cp38-cp38-manylinux1_x86_64.whl (74 kB)
Collecting sqlparse>=0.2.2
Downloading sqlparse-0.4.2-py3-none-any.whl (42 kB)
Installing collected packages: asgiref, backports.zoneinfo, sqlparse, django
Successfully installed asgiref-3.5.0 backports.zoneinfo-0.2.1 django-4.0.3 sqlparse- 
0.4.2

看来 django 安装成功了。但是在yaml文件中加入了python manage.py test语法是怎么回事呢?我完全不知道。有人可以指出吗?非常感谢!为此,您可能想看看 my GitHub repository。如果您需要更多信息,请告诉我。谢谢!!!

您收到的错误消息表明它试图将 python 安装在:

ERROR: No matching distribution found for python

但是 python 指的是你的第二个命令,python manage.py test

因此错误消息表明它正在尝试 运行 将两个命令作为一个命令。

当运行宁多个命令时,你必须包括|字符,所以Github Actions理解有多个命令是运行。在讲座中,您可以看到 Brian 包含了必要的 | 字符:

run: |
  pip3 install --user django
  python manage.py test