自動化測試 - php調用jenkins-api構建job

背景:前一節搭建jenkins並創建了job任務後,用戶可以在jenkins平臺手動點擊構建來執行pytest自動化任務,想實現一個從web界面去觸發構建jenkins中的job任務,在這選擇使用php來調用jenkins-api去觸發構建

安裝php-jenkins-api包

# composer安裝,使用的是外國友人寫的一個包,該包也是基於別人的進行了部分擴展
composer require chbiel/jenkins-php-api

php調用php-jenkins-api方法構建job

# 以下是一個自定義的service文件:JenkinsApiService.php
<?php
/**
 * Created by PhpStorm.
 * User: wkk
 * Time: 2022/10/21 - 00:26
 * Desc: <jenkins-api操作jenkins>
 */

namespace app\common\service\jenkins;

use JenkinsApi\Item\Job;
use JenkinsApi\Jenkins;

class JenkinsApiService
{
    private Jenkins $jenkins;
    private         $token;        // token密鑰:php調用jenkins-api時需要的,在這不使用用戶名和密碼
    private         $userName;     // jenkins用戶名
    private         $jenkinsHost;  // jenkins系統host:port

    public function __construct()
    {
        $this->token       = env('JENKINS.APITEST_TOKEN');
        $this->userName    = env('JENKINS.JENKINS_USER');
        $this->jenkinsHost = env('JENKINS.JENKINS_HOST');
        $this->jenkins     = new Jenkins("http://{$this->userName}:{$this->token}@{$this->jenkinsHost}");
    }

    /**
     * 獲取job信息
     *
     * @param $jobName
     * @return Job|null
     */
    public function getJob($jobName): ?Job
    {
        return $this->jenkins->getJob($jobName);
    }

    /**
     * 構建job
     *
     * @param $jobName
     * @return bool
     */
    public function buildJob($jobName): bool
    {
        return $this->getJob($jobName)->launch();
    }
}

使用方法

# goujian 
/**
   * 構建job任務
   * @param $jobName
   * @return bool
   */
public static function buildJob($jobName): bool
{
    try {
        $jenkinsService = new JenkinsApiService();
        $res = $jenkinsService->buildJob($jobName);
    } catch (\Exception $e){
        // todo log日誌
        $res = false;
    }

    return $res;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章