从GitLab安装自定义编译器包

时间:2016-04-05 20:11:54

标签: php wordpress git composer-php

我创建了一个简单的测试wordpress插件。该插件由一个php文件(kreplach.php)和一个composer.json组成:

kreplach.php

<?php
    /*
    Plugin Name: kreplach
    Plugin URI: http://gitlab.example.com/sales/kreplach
    Description: just a test
    Author: Foo Bartok
    Version: 1.0
    Author URI: http://example.com
    */
?>

composer.json

{
    "license": "MIT",
    "name": "sales/kreplach",
    "type": "wordpress-plugin",
    "description": "just a test",
    "authors": [
        {
            "name": "Foo Bartok",
            "email": "foo@example.com",
            "homepage": "example.com"
        }
    ],
    "require": {
        "composer/installers": "*"
    }
}

在我的开发服务器上,我有以下composer.json

服务器的composer.json

{
    "repositories": [
        {
            "type": "composer",
            "url": "https://wpackagist.org"
        },
        {
            "type": "vcs",
            "url": "git@gitlab.example.com:sales/kreplach.git"
        }
    ],
    "require": {
        "php": ">=5.4",
        "wpackagist-plugin/akismet": "*",
        "wpackagist-plugin/contact-form-7": "*",
        "wpackagist-plugin/wordpress-importer": "*",
        "sales/kreplach": "master",
        "johnpbloch/wordpress": "4.*",
        "composer/installers": "*"
    },
    "extra": {
        "wordpress-install-dir": "wp"
    }
}

我认为应该发生什么:

  1. Composer查看composer.json的git repo
  2. Composer匹配构建主机的composer.json中的名称“sales / kreplach”
  3. Composer将主分支的内容复制到我的构建主机上的wp-content/plugins/kreplach
  4. 我的假插件没有做任何设计。
  5. 实际发生了什么:

    苦涩,痛苦。

    Loading composer repositories with package information Updating dependencies (including require-dev)
    Your requirements could not be resolved to an installable set of packages.
    
      Problem 1
        - The requested package sales/kreplach could not be found in any version, there may be a typo in the package name.
    
    Potential causes:
     - A typo in the package name
     - The package is not available in a stable-enough version according to your minimum-stability setting
         see <https://getcomposer.org/doc/04-schema.md#minimum-stability> for more details.
    
    Read <https://getcomposer.org/doc/articles/troubleshooting.md> for further common problems.
    

    我已经测试了将sales/kreplach repo克隆到我试图安装该插件的同一主机上。

    为了确保作曲家实际上是从git repo中读取composer.json文件,我引入了一个拼写错误(是的,完全是故意的,就像),它扔了一个“嘿,这个json文件坏了,Foam Head”错误。

    我的gitlab版本是omnibus edition 8.6.4(今天安装)。

    我已经用pip / requirements.txt成功完成了同样的技巧来安装自定义python模块,所以我不习惯按照说明操作。我错过了一个步骤,或某种非显而易见的(至少对我来说)命名法吗?

2 个答案:

答案 0 :(得分:1)

更新 2021 年,5 年后,自 GitLab 13.3 (Aug. 2020) 起,GitLab(即使是免费版)有一个 Package Registry,将 GitLab 建立为私有存储库。

您可以在 Composer packages 中发布,并且使用 GitLab 13.11(2021 年 4 月):

<块引用>

将 Composer v2 与 GitLab 包注册表结合使用

您使用 Composer 发布、共享和下载您的 PHP 依赖项到您的 GitLab 项目。六个月前,Composer 的新主要版本 (v2) 发布,其中包含多项更改,包括显着的性能改进、架构更新和运行时功能。
您可以阅读有关更改的更多信息 here

直到最近,您还无法利用这些改进,因为 GitLab 注册表不支持 Composer v2。
这完全阻止了你们中的一些人使用 GitLab 注册表。

作为 MVC,我们专注于添加对强制参数 metadata-URL 的支持。我们添加了一个新端点 GET group/:id/-/packages/composer/p2/:package_name,它返回存储库中所有包的元数据。
当 Composer 查找包时,它会将 %package% 替换为包名称并获取该 URL。

这意味着我们添加了一个新端点 GET group/:id/-/packages/composer/p2/:package_name,它将返回存储库中所有包的元数据。

请注意,有两个参数被认为是可选的。
我们有问题需要添加对 providers-apilist-api 参数的支持。我们希望在即将到来的里程碑中优先考虑它们。

参见 DocumentationIssue

并且(仍然是 GitLab 13.11,2021 年 4 月):

<块引用>

从版本控制下载 Composer 依赖

下载 Composer 依赖项时有两个选项:sourcedist。对于稳定版本,Composer 默认使用 dist 并将依赖项下载为 zip 文件。

但是,您也可以直接从版本控制中下载。
如果启用了 --prefer-source,Composer 会将您的依赖项作为 Git 克隆下载,而不是作为打包的 zip 文件。

如果您想为项目进行错误修复并直接获取依赖项的本地 Git 克隆,这将非常有用。

直到最近,您还无法在下载 Composer 依赖项时使用 prefer-source 和相关的 preferred-install 命令和配置。
这使你们中的许多人无法将 GitLab 包注册表用于 Composer 依赖项。

我们很高兴地宣布,您现在可以从源代码下载 Composer 依赖项。
只需将 prefer-source 选项添加到您的安装命令中,如下所示:composer update --prefer-source

参见 DocumentationIssue

答案 1 :(得分:0)

我没有使用过gitlab,但是在Bitbucket和GitHub中使用了这个方法。

您需要在服务器的composer.json中指定"sales/kreplach": "dev-master" - 请注意,分支名称必须以&#34; dev - &#34;为前缀。

显然Composer对GitHub和BitBucket有特别的支持,Gitlab可能不存在...所以你may need to specify git as the repository type而不是vcs

祝你好运!

参考文献: