ftw-soft/rundeck-api-client

此软件包已被废弃且不再维护。未建议替代软件包。

Rundeck 的 API 客户端

v2.0.1 2021-02-14 19:33 UTC

This package is auto-updated.

Last update: 2023-10-15 01:05:28 UTC


README

一个基于官方文档 (非默认代表所有API功能) 访问 Rundeck API 的 PHP 客户端。不是所有API功能都有默认表示。

需求

  • PHP 7.2+ 且已启用 json 扩展
  • Rundeck 2.1+

此客户端基于 PSR-17PSR-18,因此您需要一个兼容的HTTP客户端和请求工厂。

我们建议使用 Guzzle 7+http-interop/http-factory-guzzle

composer require guzzlehttp/guzzle:^7.0 http-interop/http-factory-guzzle:^1.0

安装

composer require ftw-soft/rundeck-api-client

基本客户端使用

<?php
require_once __DIR__ . '/vendor/autoload.php';

use FtwSoft\Rundeck\Authentication\PasswordAuthentication;
use FtwSoft\Rundeck\Authentication\TokenAuthentication;
use FtwSoft\Rundeck\Client;
use GuzzleHttp\Client as HttpClient;
use Http\Factory\Guzzle\RequestFactory;
use Http\Factory\Guzzle\StreamFactory;

$httpClient = new HttpClient();

// --- Setup authentication ---
# Password authentication
$authentication = new PasswordAuthentication(
    'https://rundeck.local',
    'username',
    'password',
    $httpClient,
    new RequestFactory(),
    new StreamFactory()
);

# OR Token based authentication
$authentication = new TokenAuthentication('secret-token');

// --- Initialize client ---
$client = new Client(
    'https://rundeck.local',
    $authentication,
    $httpClient,
    new RequestFactory(),
    new StreamFactory(),
    36 // optional API version
);

// Make a request
$response = $client->request('GET', 'projects');
var_dump($response->getBody()->getContents());

支持的场景

此软件包包括常见的请求场景,这些场景被称为“资源”。以下资源目前支持

  • 执行
  • 作业
  • 项目
  • 项目列表
  • 系统
  • 令牌
  • 令牌列表
  • 用户

每个资源都包括对API的调用,其负载和/或响应由自定义实体类表示。

例如

<?php
require_once __DIR__ . '/vendor/autoload.php';

use FtwSoft\Rundeck\Resource\Tokens as TokensResource;
use FtwSoft\Rundeck\Client;
use FtwSoft\Rundeck\Entity\TokenEntity;

/** @var Client $client */
$tokensResource = new TokensResource($client);

/** @var TokenEntity[] $tokens */
$tokens = $tokensResource->get();

foreach ($tokens as $token) {
    echo '====================================';
    echo 'id: ', $token->getId(), PHP_EOL;
    echo 'user:', $token->getUser(), PHP_EOL;
    echo 'token: ', $token->getToken(), PHP_EOL;
    echo 'creator: ', $token->getCreator(), PHP_EOL;
    echo 'expire at: ', $token->getExpiration()->format(\DATE_ATOM), PHP_EOL;
    echo 'roles: ', implode(', ', $token->getRoles()), PHP_EOL;
    echo 'is expired: ', $token->isExpired() ? 'yes' : 'no', PHP_EOL;
}

请随意通过创建新的 pull request 将您自己的资源和实体添加到此软件包中。