📅  最后修改于: 2023-12-03 14:41:30.322000             🧑  作者: Mango
本文介绍了一种使用 Shell-Bash 实现 Github 和 PyPI 工作流程的方法。通过这种工作流程,程序开发者可以轻松地将代码提交到 Github,测试和打包代码之后,将代码发布到 PyPI 上。在本文中,我们将介绍如何使用以下工具和技术:
Git 是一个分布式版本控制系统,被广泛用于管理软件开发的版本控制。Github 是一个基于 Git 的代码管理平台,可以免费使用,为开源项目提供了一个社区协作环境。
我们可以在 Github 上托管我们的代码,并使用 Git 提交和管理代码的版本历史。在 Github 上,我们可以创建一个项目仓库,将代码上传到仓库中,并配置一些选项,如项目描述、许可证、贡献者等。
Python 是一种高级编程语言,被广泛用于开发 Web 应用程序、科学计算、数据分析等领域。Python 有一个庞大的第三方库(包)生态系统,包含了数以万计的可复用组件,可以极大地提高我们的开发效率。
PyPI(Python Package Index)是 Python 包管理器,与 npm(JavaScript 包管理器)或者 Maven(Java 包管理器)类似。Python 的第三方库可以发布到 PyPI,供其他 Python 程序使用。
下面是 Github PyPI 工作流程的主要步骤:
在 Github 主页上,我们可以找到“New repository”按钮,点击该按钮,然后填写项目名称、项目描述等信息,并选择是否为公共仓库或私人仓库(此处我们选择公共仓库),最后点击“Create repository”按钮。
我们可以使用 Git 命令将本地代码上传到 Github 项目仓库。首先,在本地使用 Git 初始化一个仓库,然后添加远程仓库,并将本地代码推送到远程仓库。这里我们假设代码已经在本地初始化好了,然后执行以下命令:
git remote add origin <Github 项目仓库地址>
git push -u origin master
我们需要编写一个 Shell-Bash 脚本,实现自动化测试和打包操作。在此处,我们使用 tox 工具进行自动化测试,使用 twine 工具进行打包。以下是示例的 Shell-Bash 脚本:
#!/bin/bash
# 安装依赖,例如 pytest
pip install -r requirements.txt
# 清空打包输出目录
rm -Rf dist/*
# 运行自动化测试
tox
# 打包 Python 程序包
python setup.py sdist bdist_wheel
# 发布程序包到 PyPI
twine upload dist/*
我们需要在本地运行 Shell-Bash 脚本,确保自动化测试和打包操作可以正常运行。以下是测试 Shell 脚本的命令:
bash ./build.sh
我们需要在 Github 上配置一个 CI/CD 流程,以确保每次提交都可以自动化测试和打包代码。Github 已经集成了多种 CI/CD 工具和服务,例如 Travis CI、AppVeyor、CircleCI 等。
这里我们选择使用 Github Actions,Github Actions 是 Github 公司提供的一套 CI/CD 工具,可以实现多个环境、多个平台和多个工作流程的自动化任务。我们可以在 Github 仓库页面的“Actions”选项卡中进行配置。
具体来说,我们可以创建一个名为“build”的工作流程(Workflow),然后定义需要执行的任务。以下是示例的工作流程配置文件:
# workflow 名称
name: build
# 触发条件,例如每次 push 到 master 分支时触发
on:
push:
branches:
- master
# 执行的任务
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Python
uses: actions/setup-python@v2
with:
python-version: '3.8'
- name: Install Dependencies
run: pip install -r requirements.txt
- name: Run Tests and Build Package
run: bash ./build.sh
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
最后,我们可以使用 twine 工具将打包好的程序包发布到 PyPI 上。在发布之前,我们需要在 PyPI 上创建一个账号,并获取 API Token。
然后,我们可以在命令行输入以下命令,使用 twine 工具进行程序包发布:
twine upload dist/*
通过使用 Github PyPI 工作流程,我们可以轻松地将代码提交到 Github,并自动化测试和打包代码,最后发布代码到 PyPI 上。这个工作流程可以帮助我们更好地管理我们的代码,加速我们的开发流程。