gitlab中的Pylint徽章

Dje*_*ent 8 pylint gitlab gitlab-ci

Gitlab具有生成有关构建状态和覆盖百分比的徽章的功能.
是否可以创建自定义徽章以显示Pylint结果?或者只是在README.md中显示此结果?
我已经为Pylint做了CI工作

JGC*_*JGC 25

我编写了一个python徽章生成包,可以在视觉上与主徽章服务类似地生成徽章.它非常灵活,您可以在您的python代码中导入和使用,或从命令行运行.

我在GitLab CI中使用它来显示pylint和覆盖率分数.

还有其他的方法可以做到这一点使用shields.io(见对方的回答kubouch),但是这种方法可以在情况下使用您可能没有外部Internet访问,如在公司/企业的环境,让防火墙或代理卡住互联网.

GitLab CI设置

1.生成徽章

我的CI管道有一个运行pylint的步骤,我曾经sed从输出文本中提取得分.然后我使用anybadge(详细信息如下)生成一个pylint分数徽章,并将其保存为public/pylint.svg.

pylint:
  stage: test
  script:
    - pylint --rcfile=.pylintrc --output-format=text <LIST-OF-FILES-TO-RUN-PYLINT-AGAINST> | tee pylint.txt
    - score=$(sed -n 's/^Your code has been rated at \([-0-9.]*\)\/.*/\1/p' pylint.txt)
    - echo "Pylint score was $score"
    - anybadge --value=$score --file=public/pylint.svg pylint
Run Code Online (Sandbox Code Playgroud)

如果pylint生成非零rc,那么GitLab会将其视为命令错误并且作业将失败,这意味着不会生成徽章,并且丢失的图像将显示徽章的使用位置.

注意:pylint WILL OFTEN生成非零返回码,因为它使用退出代码来传达lint检查的状态.我建议使用像pylint-exit这样的东西来处理CI管道中的pylint返回码.

2.将徽章注册为管道工件

我将生成的徽章文件注册为CI作业中的工件,方法是将其包括在.gitlab-ci.yml:

pylint:
    ...
    - echo "Pylint score was $score"
    - anybadge --value=$score --file=public/pylint.svg pylint
  artifacts:
    paths:
      - public/pylint.svg
Run Code Online (Sandbox Code Playgroud)

3.将徽章发布到GitLab Pages

我包含一个页面发布步骤,它将公共目录中的所有内容部署到GitLab页面:

pages:
  stage: deploy
  artifacts:
    paths:
    - public
  only:
  - master
Run Code Online (Sandbox Code Playgroud)

4.在README.md中包含徽章

当为项目运行主管道时,该pylint.svg文件将发布到GitLab页面,然后我可以从我的项目中引用该图像,README.md以便显示最新的pylint标记.

如果你的项目使用https://gitlab.com,那么svg工件的URL通常是这样的(用你的用户名替换NAMESPACE,如果你的项目在一个组下,则用组名替换 - 这里有更多细节):

https://NAMESPACE.gitlab.io/pyling.svg

在您的README.md中,您可以包含一个图像:

![pylint](https://NAMESPACE.gitlab.io/pyling.svg)
Run Code Online (Sandbox Code Playgroud)

如果您想将图像转换为链接,可以使用:

[![pylint](https://NAMESPACE.gitlab.io/pyling.svg)](LINKTARGET)
Run Code Online (Sandbox Code Playgroud)

如果您需要有关任何设置的更多信息,请与我们联系.

Anybadge Python包

以下是anybadge Python包的更多信息:

您可以设置徽章标签和值,也可以根据阈值设置颜色.有针对pylint,coverage和管道成功的预建设置,但您可以创建自己喜欢的任何徽章.

以下是github项目的链接,其中包含更详细的文档:https://github.com/jongracecox/anybadge

安装时 pip install anybadge

示例python代码:

import anybadge

# Define thresholds: <2=red, <4=orange <8=yellow <10=green
thresholds = {2: 'red',
              4: 'orange',
              6: 'yellow',
              10: 'green'}

badge = anybadge.Badge('pylint', 2.22, thresholds=thresholds)

badge.write_badge('pylint.svg')
Run Code Online (Sandbox Code Playgroud)

命令行使用示例:

anybadge --label pylint --value 2.22 --file pylint.svg 2=red 4=orange 8=yellow 10=green
Run Code Online (Sandbox Code Playgroud)

  • 很抱歉打扰,但是工件 URL 是否有问题?我可以通过 _job id_ 访问它们(作为 zip 或浏览),但它不会让我通过 _master_ url 获取它们。只是寻找确认,我一直在努力。 (2认同)

Man*_*uel 6

如果您不想使用 README、gitlab 页面、anybadge 或 dropbox,您可以使用https://img.shields.io/badge/lint%20score-$score-blue.svg来“创建”一个徽章(其中只是一个 URL)并通过 gitlab API 更改徽章图像 URL。

在此处输入图片说明

细节和我的棉绒阶段 .gitlab-ci.yml