update lab

This commit is contained in:
ufh1tx4asd 2023-11-20 21:29:42 +08:00
parent c9231013df
commit dd03730af1
3 changed files with 21 additions and 19 deletions

View File

@ -1,6 +1,6 @@
# Lab 3在开源项目中选择开发任务8分 # Lab 3在开源项目中选择开发任务8分
**截止日期2022.10.19 11:59am** **截止日期2023.11.02 11:59am**
## 实践目的 ## 实践目的
@ -30,7 +30,7 @@
## 提交方式 ## 提交方式
请在截止日期之前将此markdown文件请检查前面的问题是不是已经都回答了发送到助教邮箱heh@pku.edu.cn文件命名统一为`学号-姓名-Lab3.md`(例如`2001111320-何昊-Lab3.md`)。 请在截止日期之前将此markdown文件请检查前面的问题是不是已经都回答了发送到助教邮箱ghq@stu.pku.edu.cn文件命名统一为`学号(十六进制)-姓名-Lab3.md`(例如`7735c439-张三-Lab3.md`)。
## 评分标准 ## 评分标准

View File

@ -1,6 +1,6 @@
# Lab 4CI/CD流水线搭建10分 # Lab 4CI/CD流水线搭建10分
**截止日期2022.11.02 11:59am** **截止日期2023.11.16 11:59am**
## 实践目的 ## 实践目的
@ -14,13 +14,13 @@
* `pygraph.py`实现图数据结构,包含一个类和一些简单函数,均未实现,且结构混乱。 * `pygraph.py`实现图数据结构,包含一个类和一些简单函数,均未实现,且结构混乱。
* `pyproject.toml`是Poetry使用的依赖配置文件文件中声明了本项目支持的Python版本**仅支持Python 3.10**)以及本Lab中需要的各种开发依赖。 * `pyproject.toml`是Poetry使用的依赖配置文件文件中声明了本项目支持的Python版本**仅支持Python 3.10**)以及本Lab中需要的各种开发依赖。
* `tests/`文件夹包含若干测试。 * `tests/`文件夹包含若干测试。
* `pyproject.toml`是`pytest`的配置文件。 * `pytest.ini`是`pytest`的配置文件。
Lab 4需要为这个项目配置开发环境补全未实现的代码并配置一个包含所有常见阶段的CI/CD流水线。 Lab 4需要为这个项目配置开发环境补全未实现的代码并配置一个包含所有常见阶段的CI/CD流水线。
## 实践流程 ## 实践流程
1. 请在[OSS-Dev-Course-PKU](https://github.com/OSS-Dev-Course-PKU)中创建一个**私有**GitHub仓库名为`2022Fall-{学号}-Lab4`,为老师和助教添加访问权限,并将[Lab4/](Lab4/)文件夹中的所有文件push到仓库内注意不是push文件夹本身 1. 请在[OSS-Dev-Course-PKU](https://github.com/OSS-Dev-Course-PKU)中创建一个**私有**GitHub仓库名为`2023Fall-{学号(十六进制)}-Lab4`,为老师和助教添加访问权限,并将[Lab4/](Lab4/)文件夹中的所有文件push到仓库内注意不是push文件夹本身
> 不要设置为公开仓库或者为其他同学添加访问权限否则此Lab评分作废若误操作请联系助教删除仓库 > 不要设置为公开仓库或者为其他同学添加访问权限否则此Lab评分作废若误操作请联系助教删除仓库

View File

@ -1,6 +1,6 @@
# Lab 5Python开源软件包安装/管理/打包/上载10分 # Lab 5Python开源软件包安装/管理/打包/上载10分
**截止日期2022.11.23 11:59am** **截止日期2023.11.30 11:59am**
## 实践目的 ## 实践目的
@ -12,7 +12,7 @@
## 实践流程 ## 实践流程
1. 在`pyproject.toml`中修改`tool.poetry.name`为`pygraph-{姓名拼音}`(例如,`pygraph-hehao`这将是上传到TestPyPI的包名不能与已有包冲突。 1. 在`pyproject.toml`中修改`tool.poetry.name`为`pygraph-{姓名拼音}`(例如,`pygraph-zhangsan`这将是上传到TestPyPI的包名不能与已有包冲突。
2. 在`pyproject.toml`中配置需要打包的文件为`pygraph.py`,这需要用到[tool.poetry.packages](https://python-poetry.org/docs/pyproject/#packages)选项。 2. 在`pyproject.toml`中配置需要打包的文件为`pygraph.py`,这需要用到[tool.poetry.packages](https://python-poetry.org/docs/pyproject/#packages)选项。
@ -28,7 +28,7 @@
5. 在[TestPyPI](https://test.pypi.org/)注册一个账号,请注意不要在[PyPI](https://pypi.org)上直接注册。 5. 在[TestPyPI](https://test.pypi.org/)注册一个账号,请注意不要在[PyPI](https://pypi.org)上直接注册。
> [TestPyPI](https://test.pypi.org)是与PyPI分离的Python包发布平台主要用于学习和测试不影响真正的Python生态。 > [TestPyPI](https://test.pypi.org)是与PyPI分离的Python包发布平台主要用于学习和测试不影响真正的Python生态。TestPyPI要求[Two factor authentication (2FA)验证](https://test.pypi.org/help/#twofa),可以使用[Gauth](https://chromewebstore.google.com/detail/gauth-authenticator/ilgcnhelpchnceeipipijaljkblbcobl?hl=zh-CN&utm_source=ext_sidebar)完成验证。
6. 在`pyproject.toml`中添加[Twine](https://twine.readthedocs.io/en/stable/)作为开发依赖,并使用`poetry install`安装Twine。 6. 在`pyproject.toml`中添加[Twine](https://twine.readthedocs.io/en/stable/)作为开发依赖,并使用`poetry install`安装Twine。
@ -39,13 +39,14 @@
```shell script ```shell script
twine upload --repository testpypi dist/* twine upload --repository testpypi dist/*
``` ```
> 注意PyPi 调整了安全策略,不再允许启用两步验证的账号使用用户名密码来上传项目了,必须使用 API 令牌来进行身份验证。登录 PyPi ,进入账户设置页,点击「添加 API 令牌」按钮创建 API 令牌。然后修改 ~/.pypirc 配置文件, 用户名字段改为__token__ ,密码字段改为刚才创建的令牌,运行上述命令即可完成上传。也可通过-u以及-p传入用户名及密码。
此时就可以在TestPyPI上查看你的软件包了例如[pygraph-hehao](https://test.pypi.org/project/pygraph-hehao/0.1.0/))。 此时就可以在TestPyPI上查看你的软件包了例如[pygraph-zhangsan](https://test.pypi.org/project/pygraph-zhangsan/0.1.0/))。
可以尝试退出poetry shell在一个新的Python环境中运行类似如下命令以安装你的软件包 可以尝试退出poetry shell在一个新的Python环境中运行类似如下命令以安装你的软件包
```shell script ```shell script
pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ pygraph-hehao pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ pygraph-zhangsan
``` ```
这里`--extra-index-url`是为了确保pygraph可以安装从PyPI上来的间接依赖。 这里`--extra-index-url`是为了确保pygraph可以安装从PyPI上来的间接依赖。
@ -53,12 +54,13 @@
然后在Python解释器中可以尝试导入pygraph包类似如下 然后在Python解释器中可以尝试导入pygraph包类似如下
``` ```
PS D:\GitHub\OSSDevelopment> pip install --index-url https://test.pypi.org/simple/ -extra-index-url https://pypi.org/simple/ pygraph-hehao PS D:\GitHub\OSSDevelopment> pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ pygraph-zhangsan
Looking in indexes: https://test.pypi.org/simple/, https://pypi.org/simple/ Looking in indexes: https://test.pypi.org/simple/, https://pypi.org/simple/
Collecting pygraph-hehao Collecting pygraph-zhangsan
Downloading https://test-files.pythonhosted.org/packages/f5/98/4ee92fd154f44ec9c3093b82240a21689893c3227a0965b4784c701f6214/pygraph_hehao-0.1.0-py3-none-any.whl (1.7 kB) Downloading https://test-files.pythonhosted.org/packages/97/fe/0818386b03b062e7d217acbdfc20c5f1bd6cc455c06e07463f5a86da8fc1/pygraph_zhangsan-0.1.0-py3-none-any.whl.metadata (276 bytes)
Installing collected packages: pygraph-hehao Downloading https://test-files.pythonhosted.org/packages/97/fe/0818386b03b062e7d217acbdfc20c5f1bd6cc455c06e07463f5a86da8fc1/pygraph_zhangsan-0.1.0-py3-none-any.whl (1.8 kB)
Successfully installed pygraph-hehao-0.1.0 Installing collected packages: pygraph-zhangsan
Successfully installed pygraph-zhangsan-0.1.0
PS D:\GitHub\OSSDevelopment> python PS D:\GitHub\OSSDevelopment> python
Python 3.9.13 (tags/v3.9.13:6de2ca5, May 17 2022, 16:36:42) [MSC v.1929 64 bit (AMD64)] on win32 Python 3.9.13 (tags/v3.9.13:6de2ca5, May 17 2022, 16:36:42) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information. Type "help", "copyright", "credits" or "license" for more information.
@ -70,11 +72,11 @@
但是像这样在本地手动发布Python包对于团队协作开发的开源项目而言不是最佳实践。比较好的做法是在GitHub上配置CD流水线在master分支上达成特定条件例如使用tag标记的版本自动发布到PyPI。接下来的操作将会达成这一点。 但是像这样在本地手动发布Python包对于团队协作开发的开源项目而言不是最佳实践。比较好的做法是在GitHub上配置CD流水线在master分支上达成特定条件例如使用tag标记的版本自动发布到PyPI。接下来的操作将会达成这一点。
8. 借助[networkx](https://networkx.org/documentation/stable/index.html)(可以使用[`poetry add`](https://python-poetry.org/docs/cli/#add)命令添加新依赖为pygraph实现计算最短路径的功能添加测试样例确保功能正确。在开发完成后,将`pyproject.toml`中的版本号修改为`0.2.0`。 8. 借助[networkx](https://networkx.org/documentation/stable/index.html)(可以使用[`poetry add`](https://python-poetry.org/docs/cli/#add)命令添加新依赖为pygraph实现计算最短路径的功能通过测试。在开发完成后,将`pyproject.toml`中的版本号修改为`0.2.0`。
> 也许这里封装networkx显得很蠢不过在实际编程中由于图数据结构无处不在常常蕴含在其他复杂结构化数据里经常会有将当前的数据转换格式并应用已有图算法的情况。 > 也许这里封装networkx显得很蠢不过在实际编程中由于图数据结构无处不在常常蕴含在其他复杂结构化数据里经常会有将当前的数据转换格式并应用已有图算法的情况。
9. 你的GitHub仓库内[配置PyPI账户名和密码为Secret](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets)。 9. 你的GitHub仓库内[配置TestPyPI的TOKEN为Secret](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets)。
10. 添加一个新的GitHub Action流水线使得若你的仓库[在GitHub上创建了一个新release](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#release)流水线将会构建、测试、打包pygraph并发布到TestPyPI。 10. 添加一个新的GitHub Action流水线使得若你的仓库[在GitHub上创建了一个新release](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#release)流水线将会构建、测试、打包pygraph并发布到TestPyPI。
@ -87,7 +89,7 @@
## 评分标准 ## 评分标准
- 3分TestPyPI上有通过步骤1-7发布的Python包。 - 3分TestPyPI上有通过步骤1-7发布的Python包。
- 3分pygraoh实现了计算最短路径的功能并包含可通过的测试样例。 - 3分pygraph实现了计算最短路径的功能并包含可通过的测试样例。
- 4分配置了能够自动发布Python包的GitHub Action流水线。 - 4分配置了能够自动发布Python包的GitHub Action流水线。
## 提交方式 ## 提交方式