Pylint 与 Jenkins 的集成在动态 kubernetes pods 上构建 运行 作为代理

Pylint integration with Jenkins build running on dynamic kubernetes pods as agents

我们在 Google Kubernetes Engine 上设置了 Jenkins,动态 kubernetes pods 作为构建代理。我想将 Pylint 集成为构建步骤。 kubernetes pod 上的 Python 版本 运行 是 2.7.16。知道如何安装 Pylint 并将其集成到 Jenkins 构建中吗?

编辑:

Jenkins 运行 在 Google Kubernetes Engine 集群上。

Kubernetes Cloud 在 Jenkins 中的配置如下:

安装的插件列表如下:

Analysis Model API Plugin
Ant Plugin
Apache HttpComponents Client 4.x API Plugin
Bundles Apache HttpComponents Client 4.x and allows it to be used by Jenkins plugins.
Authentication Tokens API Plugin
Bootstrap 4 API Plugin
Bootstrap 5 API Plugin
bouncycastle API Plugin
Branch API Plugin
Caffeine API Plugin
Checks API plugin
Command Agent Launcher Plugin
Credentials Binding Plugin
Credentials Plugin
DataTables.net API Plugin
Display URL API
Docker API Plugin
Docker Commons Plugin
Docker Pipeline
Docker plugin
Durable Task Plugin
ECharts API Plugin
Provides ECharts for Jenkins plugins.
Folders Plugin
Font Awesome API Plugin
Forensics API Plugin
Git
Git client plugin
GIT server Plugin
GitHub API Plugin
GitHub plugin
Google Authenticated Source plugin
Google Cloud Storage plugin
Google Compute Engine Plugin
Google Kubernetes Engine Plugin
Google Metadata plugin
Google OAuth Credentials plugin
Jackson 2 API Plugin
JavaScript GUI Lib: ACE Editor bundle plugin
JavaScript GUI Lib: Handlebars bundle plugin
JavaScript GUI Lib: jQuery bundles (jQuery and jQuery UI) plugin
JavaScript GUI Lib: Moment.js bundle plugin
JQuery3 API Plugin
JSch dependency plugin
JUnit Plugin
Kubernetes Client API Plugin
Kubernetes Credentials Plugin
Kubernetes plugin
LDAP Plugin
Lockable Resources plugin
Mailer Plugin
Matrix Project Plugin
Metrics Plugin
Monitoring
OAuth Credentials plugin
OkHttp
Oracle Java SE Development Kit Installer Plugin
OWASP Markup Formatter Plugin
Pipeline
Pipeline Graph Analysis Plugin
Pipeline: API
Pipeline: Basic Steps
Pipeline: Build Step
Pipeline: Declarative
Pipeline: Declarative Extension Points API
Pipeline: Groovy
Pipeline: Input Step
Pipeline: Job
Pipeline: Milestone Step
Pipeline: Model API
Pipeline: Multibranch
Pipeline: Nodes and Processes
Pipeline: REST API Plugin
Pipeline: SCM Step
Pipeline: Shared Groovy Libraries
Pipeline: Stage Step
Pipeline: Stage Tags Metadata
Pipeline: Stage View Plugin
Pipeline: Step API
Pipeline: Supporting APIs
Plain Credentials Plugin    
Plugin Utilities API Plugin
Popper.js 2 API Plugin
Popper.js API Plugin
SCM API Plugin
Script Security Plugin
Snakeyaml API Plugin
SSH Agent Plugin
SSH Build Agents plugin
SSH Credentials Plugin
SSH plugin
SSH server
Structs Plugin
Token Macro Plugin
Trilead API Plugin
Variant Plugin  
Warnings Next Generation Plugin

Jankins版本为Jenkins 2.303.2,所有插件都更新到最新版本。

我认为您可能可以通过向 pod 模板添加一个方便的容器来实现所需的行为:此容器将包含必要的 Pylint 依赖项,并且将在您的 pod 中与默认的 Jenkins 代理映像一起使用。

如您在屏幕截图中所见,您可以在 Jenkins Web 控制台中配置 Pod 模板和 Kubernetes 时添加此容器。

此外,您可以在定义管道时提供必要的信息。例如,考虑 Jenkins Kubernetes plugin documentation:

中提供的示例
podTemplate(containers: [
    containerTemplate(name: 'maven', image: 'maven:3.8.1-jdk-8', command: 'sleep', args: '99d'),
    containerTemplate(name: 'golang', image: 'golang:1.16.5', command: 'sleep', args: '99d')
  ]) {

    node(POD_LABEL) {
        stage('Get a Maven project') {
            git 'https://github.com/jenkinsci/kubernetes-plugin.git'
            container('maven') {
                stage('Build a Maven project') {
                    sh 'mvn -B -ntp clean install'
                }
            }
        }

        stage('Get a Golang project') {
            git url: 'https://github.com/hashicorp/terraform.git', branch: 'main'
            container('golang') {
                stage('Build a Go project') {
                    sh '''
                    mkdir -p /go/src/github.com/hashicorp
                    ln -s `pwd` /go/src/github.com/hashicorp/terraform
                    cd /go/src/github.com/hashicorp/terraform && make
                    '''
                }
            }
        }

    }
}

请注意所需容器的定义以及每个容器在管道中的使用方式。

您可以在插件 Github 存储库中查看 additional examples

This Jenkins blog post,还有大量关于如何使用这些自定义容器的信息。

对于您的 Pylint 容器模板,您可以提供自己的图像,例如 different ones already available in Docker hub

我不是使用 Pylint 的专家,但我遇到了这些相关资源:

我希望其中一些对您的管道定义有所帮助。