📜  github pypi 工作流程 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:41:30.322000             🧑  作者: Mango

Github PyPI 工作流程 - Shell-Bash

简介

本文介绍了一种使用 Shell-Bash 实现 Github 和 PyPI 工作流程的方法。通过这种工作流程,程序开发者可以轻松地将代码提交到 Github,测试和打包代码之后,将代码发布到 PyPI 上。在本文中,我们将介绍如何使用以下工具和技术:

  • Git
  • Github
  • Python
  • PyPI
  • Shell-Bash 脚本
Git 和 Github

Git 是一个分布式版本控制系统,被广泛用于管理软件开发的版本控制。Github 是一个基于 Git 的代码管理平台,可以免费使用,为开源项目提供了一个社区协作环境。

我们可以在 Github 上托管我们的代码,并使用 Git 提交和管理代码的版本历史。在 Github 上,我们可以创建一个项目仓库,将代码上传到仓库中,并配置一些选项,如项目描述、许可证、贡献者等。

Python 和 PyPI

Python 是一种高级编程语言,被广泛用于开发 Web 应用程序、科学计算、数据分析等领域。Python 有一个庞大的第三方库(包)生态系统,包含了数以万计的可复用组件,可以极大地提高我们的开发效率。

PyPI(Python Package Index)是 Python 包管理器,与 npm(JavaScript 包管理器)或者 Maven(Java 包管理器)类似。Python 的第三方库可以发布到 PyPI,供其他 Python 程序使用。

Github PyPI 工作流程

下面是 Github PyPI 工作流程的主要步骤:

  1. 在 Github 上创建一个项目仓库
  2. 将代码上传到 Github 项目仓库
  3. 编写 Shell-Bash 脚本,实现自动化测试和打包操作
  4. 在本地测试 Shell-Bash 脚本,确保可以正常运行
  5. 在 Github 上配置 CI/CD 流程,将 Shell-Bash 脚本作为一项工作流程执行
  6. 发布程序包到 PyPI
创建 Github 项目仓库

在 Github 主页上,我们可以找到“New repository”按钮,点击该按钮,然后填写项目名称、项目描述等信息,并选择是否为公共仓库或私人仓库(此处我们选择公共仓库),最后点击“Create repository”按钮。

将代码上传到 Github 项目仓库

我们可以使用 Git 命令将本地代码上传到 Github 项目仓库。首先,在本地使用 Git 初始化一个仓库,然后添加远程仓库,并将本地代码推送到远程仓库。这里我们假设代码已经在本地初始化好了,然后执行以下命令:

git remote add origin <Github 项目仓库地址>
git push -u origin master
编写 Shell-Bash 脚本

我们需要编写一个 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 脚本,确保自动化测试和打包操作可以正常运行。以下是测试 Shell 脚本的命令:

bash ./build.sh
在 Github 上配置 CI/CD 流程

我们需要在 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 }}
发布程序包到 PyPI

最后,我们可以使用 twine 工具将打包好的程序包发布到 PyPI 上。在发布之前,我们需要在 PyPI 上创建一个账号,并获取 API Token。

然后,我们可以在命令行输入以下命令,使用 twine 工具进行程序包发布:

twine upload dist/*
结论

通过使用 Github PyPI 工作流程,我们可以轻松地将代码提交到 Github,并自动化测试和打包代码,最后发布代码到 PyPI 上。这个工作流程可以帮助我们更好地管理我们的代码,加速我们的开发流程。