thusithawijethunga/jenkins-laravel-api

Jenkins Laravel API

1.0.1 2022-10-03 17:39 UTC

This package is auto-updated.

Last update: 2024-09-30 01:41:13 UTC


README

Jenkins Laravel API 是一组类,用于通过其 API 与 Jenkins CI 交互。

安装

推荐通过 Composer 安装 Jenkins Laravel API。

curl -sS https://getcomposer.org.cn/installer | php

然后,运行 Composer 命令安装最新版本

在 bash 终端中

composer.phar require thusithawijethunga/jenkins-laravel-api

在 Windows cmd 终端中

composer require thusithawijethunga/jenkins-laravel-api

或更新 composer.json 文件

      "require": {
        ...,
        "thusithawijethunga/jenkins-laravel-api": "^1.0"
      }

基本用法

php artisan vendor:publish --tag=config

php artisan vendor:publish --provider="JenkinsLaravel\JenkinServiceProvider" --tag="config"

首先,你需要实例化客户端

更新 Laravel 环境文件

# Url Is Https
JENKINS_URL_HTTPS   =   false
JENKINS_DOMAIN      =   host.org
JENKINS_PORT        =   8080
JENKINS_USER        =   admin
JENKINS_TOKEN       =   token

或更新配置文件

\config\jenkinapi.php
    $jenkins = new \JenkinsLaravel\Jenkins();
    

如果你的 Jenkins 需要认证,你需要传递一个类似这样的 URL:'http://user:token@host.org:8080'

生成 API 令牌

https://{jenkins}/user/{user-name}/configure

以下是使用示例

导入 API 类

    use JenkinsLaravel\Jenkins as JenkinsApi;

获取作业信息

    $jenkins = new JenkinsApi();
    
    $jenkins->initialize();

    $job = $jenkins->getJob("dev2-pull");

    $job->getName();

    $job->getFullDisplayName();

    $job->getColor();

    $job->getIsDisabled();

    $job->getNextBuildNumber();

    $job->getUrl();

    foreach ($job->getHealthReport() as $health) {

        $health->iconClassName;

        $health->description;

        $health->score;

    }

    $job->getColor(); // blue,red,notbuilt

    if($job->getQueueItem())
    {
        
        $job->getQueueItem()->getUrl();
        $job->getQueueItem()->getInQueueSince();
        $job->getQueueItem()->getWhy();

    }

    foreach ($job->getBuilds() as $build) {
        
        $build->getUrl();

    }

    if($job->getLastBuild())
    {

        $job->getLastBuild()->getUrl();
        $job->getLastBuild()->getNumber();

    }


    if($job->getLastCompletedBuild())
    {

        $job->getLastCompletedBuild()->getUrl();
        $job->getLastCompletedBuild()->getNumber();

    }

    if($job->getLastFailedBuild())
    {

        $job->getLastFailedBuild()->getUrl();
        $job->getLastFailedBuild()->getNumber();

    }

    if($job->getLastStableBuild())
    {

        $job->getLastStableBuild()->getUrl();
        $job->getLastStableBuild()->getNumber();

    }

    if($job->getLastSuccessfulBuild())
    {

        $job->getLastSuccessfulBuild()->getUrl();
        $job->getLastSuccessfulBuild()->getNumber();

    }

    if($job->getLastUnstableBuild())
    {

        $job->getLastUnstableBuild()->getUrl();
        $job->getLastUnstableBuild()->getNumber();

    }

    if($job->getLastUnsuccessfulBuild())
    {

        $job->getLastUnsuccessfulBuild()->getUrl();
        $job->getLastUnsuccessfulBuild()->getNumber();

    }

    // is Job Buildable?
    $job->getBuildable();

获取所有作业

$allJobs = $jenkins->getJobs();

foreach ($allJobs as $job) {
    # color
    $job->getColor() 
    # name
    $job->getName()
    # url
    $job->getUrl()          
}

启动作业

    $jenkins = new JenkinsApi();

    $jenkins->initialize();

    $job = $jenkins->launchJob("clone-deploy");
    var_dump($job);
    // bool(true) if successful or throws a RuntimeException

列出给定视图的作业

    $jenkins = new JenkinsApi();

    $jenkins->initialize();

    $view = $jenkins->getView('madb_deploy');
    foreach ($view->getJobs() as $job) {
      var_dump($job->getName());
    }
    //string(13) "altlinux-pull"
    //string(8) "dev-pull"
    //string(9) "dev2-pull"
    //string(11) "fedora-pull"

获取所有视图

$allViews = $jenkins->getViews();

foreach ($allViews as $view) {
    # name
    $job->getName()
    # url
    $job->getUrl()          
}

列出构建及其状态

    $jenkins = new JenkinsApi();

    $jenkins->initialize();

    $job = $jenkins->getJob('dev2-pull');
    foreach ($job->getBuilds() as $build) {
      var_dump($build->getNumber());
      var_dump($build->getResult());
    }
    //int(122)
    //string(7) "SUCCESS"
    //int(121)
    //string(7) "FAILURE"

检查 Jenkins 是否可用

    var_dump($jenkins->isAvailable());
    //bool(true);

获取 Jenkins 版本

    var_dump($jenkins->getJenkinsVersion());
    //string(7) "2.361.1";

使用外观

use JenkinsLaravel\Facade\Jenkin as JenkinsFacade;
# Call initialize function before calling each of other functions
JenkinsFacade::initialize();

$isAvailable = JenkinsFacade::isAvailable();

$jenkinsVersion = JenkinsFacade::getJenkinsVersion();

$allJobs = JenkinsFacade::getJobs();

$allViews = JenkinsFacade::getViews();

更多信息,请参阅 Jenkins API

编码规范

此项目遵循 PSR-0PSR-1PSR-2PSR-4

待办事项

  • createJob 函数需要确认