如何配置私有Bitbucket存储库,以便我可以在composer.json中包含一个私有包?

Mar*_*s B 9 git oauth bitbucket composer-php

我有一个私人Git存储库Bitbucket.org.它包含一个Laravel可以用作的项目composer package.我不想发布它,我只是希望能够通过将其Laravel包含在其他项目中来使用它composer.json.我搜索了很多关于stackoverflow的教程和问题/答案,但我仍然无法做到这一点.以下是我的composer.json文件中应该相关的部分:

"require": {
    "php": ">=5.6.4",
    "myprovider/mypackage": "*",
    "laravel/framework": "5.4.*",
    "laravel/tinker": "~1.0"
},
"repositories": {
    "myrepository": {
        "type": "vcs",
        "url": "https://bitbucket.org/me/myrepository/"
    }
},
Run Code Online (Sandbox Code Playgroud)

我试过了composer require myprovider/mypackage:*,但后来我收到了一个错误Could not fetch https://api.bitbucket.org/2.0/repositories/me/myrepository?fields=-project%2C-owner, please create a bitbucket OAuth token to access private repos.因为我实际创建的OAuth令牌之前,我粘贴所需要的Consumer KeyConsumer Secret后来我得到这个:

Invalid OAuth consumer provided.
This can have two reasons:
1. You are authenticating with a bitbucket username/password combination
2. You are using an OAuth consumer, but didn't configure a (dummy) callback url

Installation failed, reverting ./composer.json to its original content.

  [Composer\Downloader\TransportException]
  The "?pagelen=100&fields=values.name%2Cvalues.target.hash%2Cnext&sort=-target.date" 
file could not be downloaded: failed to open stream: Resource temporarily unavailable
Run Code Online (Sandbox Code Playgroud)

我是新手Bitbucket,我怎么知道我是否正确配置了一切?

一步一步的配置会很棒,我在网上找到的那些都不适合我的情况.

Hub*_*0xx 12

以下答案是我按照这篇博客文章的说明并看到它起作用后的个人笔记。

非常感谢 gizmola 的博客文章和 gview 指向它的评论。

假设对于您的项目,my-name/my-project您希望myprovider/my-private-package在 bitbucket 上托管私有包。

  • 登录bitbucket
  • bitbucket settings> access management>oauth
  • 添加 oauth 消费者

    • 名称:作曲家
    • 回调:(需要但未使用) http://example.com
    • 勾选:这是一个私人消费者
    • 打勾:permissions> repositories>read
    • 节省
  • 从中获取密钥和秘密 composer oauth consumer / user for private repos

  • 打开/创建~/.composer/auth.json并确保它具有替换xxxxxyyyyy

    {
        "bitbucket-oauth": {
            "bitbucket.org": {
                "consumer-key": "xxxxx",
                "consumer-secret": "yyyyyy"
            }
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 将您的包添加到您的 composer.json 中

    {
       "name" : "my-name/my-project",
       "description" : "my project",
       "repositories": [
           {
             "type": "git",
             "url":  "https://bitbucket.org/myprovider/my-private-package.git"
           }
       ],
       "require": {
           "myprovider/my-private-package": "*"
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

请记住,如果私有包的 composer.json 未minimum-stability设置(例如设置为dev),它将无法工作。

composer.json 的示例 myprovider/my-private-package

{
    "name": "myprovider/my-private-package",
    "description": "my private package",
    "keywords": ["private package", "private", "package"],
    "type": "package",
    "version": "1.0.0",
    "minimum-stability": "dev",
    "license": "MIT",
    "authors": [
        {
          "name": "John Doe",
          "email": "john.doe@example.com"
        }
    ],
    "autoload": {"psr-0": {"": "src"}},
    "require-dev": {
        "behat/behat": "^3.4"
    }
}
Run Code Online (Sandbox Code Playgroud)