thecodingmachine / gitlab-registry-api
用于在PHP中使用Gitlab registry api的库。
dev-master / 1.0.x-dev
2019-04-08 09:43 UTC
Requires
- php: >=7.1
- guzzlehttp/guzzle: ~6.0
- psr/container: ^1
- psr/log: ^1
Requires (Dev)
- maglnet/composer-require-checker: ^1.0
- mnapoli/simplex: ^0.5
- phpstan/phpstan: ^0.10.3
- phpunit/phpunit: ^7.3.1
- squizlabs/php_codesniffer: ^3.3.1
- thecodingmachine/discovery: ^1
- thecodingmachine/phpstan-strict-rules: ^0.10.3
This package is auto-updated.
Last update: 2024-09-08 21:59:18 UTC
README
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()); } }