adamgoose / gitlab
GitLab CE 的 Laravel API 封装器
Requires
- php: >=5.4.0
- guzzlehttp/guzzle: ~4.0
- illuminate/support: 4.1.*
This package is auto-updated.
Last update: 2024-08-29 04:08:58 UTC
README
GitLab 提供了 git 仓库管理、代码审查、问题跟踪、活动流和维基。企业可以在本地安装 GitLab,并通过 LDAP 和 Active Directory 服务器连接,以进行安全的身份验证和授权。单个 GitLab 服务器可以处理超过 25,000 个用户,但也可以创建一个高可用性设置,使用多个活动服务器。
这个 Laravel API 封装器允许用户以 Eloquent 类似的方式无缝地连接到他们自己的 GitLab 实例的 API。
API 文档可以在这里查看 这里,或者查看 develop 分支的 这里。
安装
将 adamgoose/gitlab
添加到您的 composer.json
文件中。
"require": {
"laravel/framework": "4.1.*",
...
"adamgoose/gitlab": "dev-master"
},
接下来,在 app/config/app.php
的 providers
数组中注册 GitlabServiceProvider
。
'providers' => array(
...
'Adamgoose\Gitlab\GitlabServiceProvider',
),
最后,您需要配置 API 封装器以访问您的实例。只需运行以下命令,然后更新位于 app/config/packages/adamgoose/gitlab/config.php
的文件。
php artisan config:publish adamgoose/gitlab
有关配置设置的详细信息可以在配置文件的注释中找到。
命名空间与别名
由于 API 封装器使用类似 Eloquent 模型的语法,因此从根命名空间静态访问一些类可能很有用。因此,我们根据配置文件中的默认设置对所有类进行了别名化。您可以随意更改这些设置,但对常见的模型名称(如 User
)要小心,以避免与您的 Eloquent 模型冲突。
目前,配置文件是这些别名的唯一来源。因此,将来添加到该软件包中的任何类或模型都不会自动进行别名化。我将尽力在更改日志中引用应更新此数组的任何更新。
使用方法
遍历 API 非常简单。Eloquent 用户(应该是所有人!)应该非常熟悉这种语法。
由于 API 的大部分功能都围绕项目,因此您的大部分 API 调用都应从 Project 模型开始。要查找项目,只需在 Project 模型上使用 find($id)
方法。
$project = Gitlab\Project::find(1);
注意:本文档将使用配置文件中配置的默认模型别名。但是,如果您已更新了这些别名,则需要相应地调整示例。请参阅本文档的 命名空间与别名 部分。
将 Project 模型转换为字符串(或输出)将返回一个包含 GitLab CE API 提供的所有信息的 JSON 对象。
从这里,您还可以获取与项目相关联的几个关系。
$events = $project->events;
$members = $project->members;
$hooks = $project->hooks;
$branches = $project->branches;
$tags = $project->tags;
$tree = $project->tree;
$commits = $project->commits;
$snippets = $project->snippets;
$keys = $project->keys;
$issues = $project->issues;
$milestones = $project->milestones;
$merge_requests = $project->merge_requests;
这些特定调用将返回填充了相应模型的 Illuminate\Support\Collection
实例。
注意:如果您想将它们作为方法调用,请随意。例如:
$project->events()
。
许多这些模型都支持单次获取。
$member = $project->member($id);
$hook = $project->hook($id);
$branch = $project->branch($name);
$commit = $project->commit($sha);
$snippet = $project->snippet($id);
$key = $project->key($id);
$issue = $project->issue($id); // Note that the $id passed to the issue() method is the global ID, not the project-specific ID that is presented to you in the web version
$milestone = $project->milestone($id);
$merge_request = $project->merge_request($id);
这些调用将返回相应模型的实例。
有关这些模型的更多文档将可在本存储库的Wiki中找到(最终)。
GitLab CE API
GitLab API 文档可在 http://doc.gitlab.com/ce/api/README.html 查找,或者通过访问您个人GitLab实例上的 /help/api/README
来浏览。
待办事项(在1.0之前)
此列表没有优先级。
- 启用递归树浏览
- 启用文件下载
- 启用存档下载
- 创建
- 更新
- 删除
- 渲染API文档
- 添加异常
- 测试?