thecodingmachine/gitlab-registry-api

用于在PHP中使用Gitlab registry api的库。

dev-master / 1.0.x-dev 2019-04-08 09:43 UTC

This package is auto-updated.

Last update: 2024-09-08 21:59:18 UTC


README

Latest Stable Version Total Downloads Latest Unstable Version License Build Status

Gitlab registry api

这是一个用于从GitLab使用Docker registry的包。我写这个包是因为我没有找到一个功能完整的库(读取和销毁)。为了简化使用,所有返回的元素都是对象(在你的IDE中非常酷)。

私有仓库

如果你有私有仓库,你需要创建一个个人访问令牌来访问它。这在你个人资料、设置和访问令牌中。如果你想读取和删除元素,你必须勾选“api”和“read_registry”。

安装

使用Composer安装,这个仓库在Packagist上,所以以下内容应该没问题

{
    "require": {
        "thecodingmachine/gitlab-registry-api": "^1.0"
    }
}

然后按照常规方式运行composer install或composer update。

为了使用它,加载自动加载器

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

如何使用

使用您的个人仓库信息(域名、令牌、组名和项目名),我使用Guzzle 6调用registry api。所以在这个包中,如果api调用出现错误,你可以捕获一个Guzzle异常。

如何使用

我尝试通过对象操作尽可能简化使用。但是,你始终可以使用Image或Tag上的getPayload()函数获取原始数组结果。

获取数据

每个元素的每个属性都有一个getter。

示例

// Create client with access
$client = new Client('https://git.yourdomain.com/', 'myPrivateAccessToken');
// Declare your registry and retrieve a Registry object
$registry = $client->getRegistry('myGroup', 'myProject');
foreach ($registry->getImages() as $image) {
    echo $image->getId();
    foreach ($image->getTags() as $tag) {
        echo $tag->geTotalSize();
    }
}

如果你的组和项目已经连接(比如你的仓库来自GitLab api),你可以在组参数中设置它

$client = new Client('https://git.yourdomain.com/', 'myPrivateAccessToken');
$registry = $client->getRegistry('myGroup/myProject');
foreach ($registry->getImages() as $image) {
    echo $image->getId();
    foreach ($image->getTags() as $tag) {
        echo $tag->geTotalSize();
    }
}

分页

在标签列表中,你可以添加分页参数来过滤结果

$client = new Client('https://git.yourdomain.com/', 'myPrivateAccessToken');
$registry = $client->getRegistry('myGroup/myProject');
foreach ($registry->getImages() as $image) {
    echo $image->getId();
    // Pagination, get second page with 10 elements
    foreach ($image->getTags(2, 10) as $tag) {
        echo $tag->geTotalSize();
    }
}

销毁

你可以通过简单的destroy方法销毁一个镜像或仅一个标签。

镜像示例

$client = new Client('https://git.yourdomain.com/', 'myPrivateAccessToken');
$registry = $client->getRegistry('myGroup/myProject');
foreach ($registry->getImages() as $image) {
    // This return true, false or guzzle exception
    var_dump($image->destroy());
}

标签示例

$client = new Client('https://git.yourdomain.com/', 'myPrivateAccessToken');
$registry = $client->getRegistry('myGroup/myProject');
foreach ($registry->getImages() as $image) {
    foreach ($image->getTags() as $tag) {
        // This return true, false or guzzle exception
        var_dump($tag->destroy());
    }
}

负载

你可以检索原始数组结果。

镜像示例

$client = new Client('https://git.yourdomain.com/', 'myPrivateAccessToken');
$registry = $client->getRegistry('myGroup/myProject');
foreach ($registry->getImages() as $image) {
    // This return original array
    var_dump($image->getPayload());
}

标签示例

$client = new Client('https://git.yourdomain.com/', 'myPrivateAccessToken');
$registry = $client->getRegistry('myGroup/myProject');
foreach ($registry->getImages() as $image) {
    foreach ($image->getTags() as $tag) {
        // This return original array
        var_dump($tag->getPayload());
    }
}