使用ruff和github动作自动化python linting和代码样式执法
#生产率 #python #自动化 #githubactions

介绍

保持一致的代码样式,并且遵循最佳实践对于任何Python项目都很重要。但是,手动修复刺伤问题可能很乏味,易于忘记。在本教程中,我们将看到如何设置GitHub操作,以在每次推动下使用ruff自动填充Python代码并提交任何修复程序。

在上一个tutorial中,我们看到了如何使用ruff到皮棉代码。
但是,手动修复刺伤问题可能很乏味,易于忘记。

先决条件

  • 带有Python代码的GitHub存储库
  • github操作启用
  • 拉夫在本地安装

创建工作流程

工作流将通过ruff和提交修复的推动力来延伸到棉绒:

name: Lint and Commit
on: push

jobs:
  lint:
    runs-on: ubuntu-latest 
    steps:
    - uses: actions/checkout@v2
    - uses: actions/setup-python@v2
    - run: pip install ruff
    - run: | 
      ruff check .
      ruff fix .
    - uses: stefanzweifel/git-auto-commit-action@v4
      with:
        commit_message: 'style fixes by ruff'

新的关键步骤是git-auto-commit-action,它将检测Ruff所做的更改并通过消息提交。

配置ruff

我们可以创建一个.ruff.tomlruff.toml文件来自定义ruff:


line-length = 120
target-version = "py39"
select = ["E", "W"]

上面的代码将行长度设置为120个字符,目标python版本为3.9,以及对E和W的规则。阅读有关配置选项的更多信息here

使用ruff github动作

我们还可以使用ruff github动作在我们的工作流程中运行ruff:

name: Lint and Commit
on: [ push, pull_request ]

jobs:
  lint:
    runs-on: ubuntu-latest 
    steps:
    - uses: actions/checkout@v3
    - uses: actions/setup-python@v2
    - uses: chartboost/ruff-action@v1
      with:
        args: --check .
        fix_args: --fix .
    - uses: stefanzweifel/git-auto-commit-action@v4
      with:
        commit_message: 'style fixes by ruff'

上面的代码等效于先前的工作流程。主要区别在于我们使用的是ruff github动作而不是直接运行ruff。阅读有关ruff github Action here

的更多信息

每种方法都有自己的优势:

  • Ruff直接使我们对Ruff过程有了更多的控制。我们可以指定一个自定义配置文件。
  • 使用ruff github动作更简单,需要更少的代码。
  • 直接运行ruff的速度更快,因为我们不需要每次安装ruff。

这将与--check--fix参数一起运行。我们还可以使用config参数指定自定义配置文件:

name: Lint and Commit
on: push

jobs:
  lint:
    runs-on: ubuntu-latest 
    steps:
    - uses: actions/checkout@v2
    - uses: actions/setup-python@v2
    - uses: chartboost/ruff-action@v1
      with:
        args: --check .
        fix_args: --fix .
        config: .ruff.toml
    - uses: stefanzweifel/git-auto-commit-action@v4
      with:
        commit_message: 'style fixes by ruff'

这将根据我们的喜好调整规则。如果我们想对不同的项目使用不同的规则,这将很有用。

选择最适合您项目的方法。

自动提交行动

我们还使用auto-commit操作来进行更改。我们可以配置提交消息和其他选项。阅读有关auto-commit Action here的更多信息。这是可选的 - 我们还可以使用git操作手动提交更改。

ruff和auto-commit动作的组合使我们能够自动解决覆盖问题,并在每次推动上进行更改。这有助于我们维持一致的代码样式并随着时间的推移遵循最佳实践。

查看结果

动作输出现在将显示ruff更改和投入的文件。在存储库历史记录中也可以看到这些提交。

Workflow run

随时查看我的示例工作流量/运行。

GitHub logo KenMwaura1 / FastAPI-Backend-Template

带有FastApi的后端项目模板,具有异步SQLalchemy 2.0的PostgreSQL,用于异步数据库迁移的Alembic和Docker。

FastAPI Backend Application Template

这是一个模板存储库,旨在通过现实世界应用程序设置启动您的项目!此模板利用以下技术堆栈:

启动Docker时,这些是URL地址:

  • 后退应用程序(API docs)
  • 数据库编辑器(adminer)

可以在http://localhost:8000/docs中找到没有Docker的后端API。

为什么上述tech-stack?

好吧,简单的答案是异步 speed

  • fastapi 被加冕为Python最快的网络框架,因此我们将其用于后端开发。
  • 我选择的数据库是异步版本的 postgresql (通过SQLAlchemy 2.0)。阅读this blog from Packt如果您想进一步教育这个话题异步,同步,并发, parallelism
  • docker 是一项将应用程序包装到标准化单元中的技术,称为具有

结论

通过启用自动启动,我们不再需要手动修复ruff标记的绒毛问题 - 修复程序将在每个推动下自动应用。这有助于随着时间的推移执行一致的代码样式。

接下来的一些步骤:

  • 设置ruff也可以在拉动请求上运行。
  • 配置提交选项,例如提交用户和分支。
  • 设置松弛/电子邮件通知。

通过将Ruff(例如Ruff)集成到我们的GitHub工作流程中,我们可以自动化编码过程的一部分并减少手动工作。

让我们在TwitterLinkedIn上连接。

参考

Next time gif