【问题标题】:Generate jenkins jobs for all github repos为所有 github repos 生成 jenkins 作业
【发布时间】:2014-05-10 06:36:24
【问题描述】:

我想在 Jenkins 中设置一些自动化功能,定期轮询我们 github 组织中的存储库列表,并根据作业模板自动为每个 Git 存储库设置 jenkins 作业。

实现这一目标的可能解决方案是什么?谢谢!

【问题讨论】:

    标签: github jenkins


    【解决方案1】:

    您可以使用Jenkins Job DSL plugin

    这是作业中创建和修改其他作业的构建步骤

    来自维基:

    job-dsl-plugin 允许使用编程方式创建项目 DSL。将作业创建推送到脚本中允许您自动化和 标准化你的 Jenkins 安装,不像任何可能 之前。

    一个例子是:

    def organization = 'jenkinsci'
    repoApi = new URL("https://api.github.com/orgs/${organization}/repos")
    repos = new groovy.json.JsonSlurper().parse(repoApi.newReader())
    repos.each {
      def repoName = it.name
      job {
        name "${organization}-${repoName}".replaceAll('/','-')
        scm {
          git("git://github.com/${organization}/${repoName}.git", "master")
        }
      }
    }
    

    【讨论】:

    • 谢谢,这看起来是一个很好的起点,因为还有一个 Maintain Jenkins jobs for each branch of a project on Github 示例应该很容易采用。
    • 利用我出色的 Groovy 技能,我能够采用文档中的示例并将其添加到此处 ^^
    • 如何为 GitHub API URL 添加 git 凭据?
    • 我无法再访问正常工作的 Jenkins,猜测一下,您可能会利用凭证插件或 Git 插件。你可能应该问一个新问题
    【解决方案2】:

    Jenkins 流水线是当今的必经之路。

    它使用Jenkinsfile 定义管道,您可以将其签入您的存储库。

    最好的做法是这样的文件

    pipeline {
        agent any
    
        stages {
            stage('Build') {
                steps {
                    echo 'Building..'
                }
            }
            stage('Test') {
                steps {
                    echo 'Testing..'
                }
            }
            stage('Deploy') {
                steps {
                    echo 'Deploying....'
                }
            }
        }
    }
    

    in the documentation所述。

    【讨论】:

    • 感谢您回答我的老问题。确实,我一直在使用管道(非常成功)。还给了几个talks 关于那个,所以绝对推荐。
    • 希望我稍微更改了您的帖子。
    猜你喜欢
    • 2021-11-23
    • 1970-01-01
    • 2018-09-15
    • 2016-10-15
    • 1970-01-01
    • 2021-01-14
    • 1970-01-01
    • 1970-01-01
    • 2014-03-01
    相关资源
    最近更新 更多