4

プロジェクト間でいくつかの社内パッケージを共有するために、github にsatisリポジトリをセットアップしました。

新しいリポジトリに「依存」しようとすると、次のようにしました。

"repositories": [ {
    "type": "composer",
    "url": "https://raw.githubusercontent.com/[organisation]/satis/master/web/packages.json?token=[token-copied-from-url]"
} ]

composer が package.json を見つけるのに十分なほど機能しますが、次のように失敗します。

[Composer\Downloader\TransportException]
  The "https://raw.githubusercontent.com/[organization]/satis/master/web/packages.json?token=[token-copied-from-url]/include/all$[some-json-file].json" file could not be downloaded (HTTP/1.1 404 Not Found)

?token 部分が無効な URL を生成しているように見えるため、これは驚くべきことではありません。

インクルードされたファイルの内容を直接 packages.json に手動で移動することで、これを回避できますが、特に satis が複数のファイルを生成することを決定した場合、これは理想的とは言えません。

これが引き起こすと思われるもう 1 つの問題は、トークンの有効性についてよくわからないことです。おそらく寿命が長くないため、satis を定期的に再生成する必要があります。

私のsatisレポを「ただの」githubレポとしてホストすることから逃れる方法はありますか?

4

2 に答える 2

1

初期テストでは、それが可能であることが示されています。

リポジトリ URL から packages.json を削除する必要があると思いますが、?token パラメーターが疑われます。理論的には、ヘッダーを介してトークンを渡すことができます。

https://developer.github.com/v3/#authentication

ただし、これはテストしていません。

ここで、認証なしで動作するテストを確認できます。

それを試すには:

git clone git@github.com:markchalloner/satishostcomposer.git
cd satishostcomposer
composer install

vendor/markchalloner/satishostdemo をインストールする必要があります

例 satis.json:

{
    "name": "Satis Host",
    "homepage": "https://raw.githubusercontent.com/markchalloner/satishost/master/web/",
    "archive": {
        "directory": "dist",
        "format": "tar",
        "prefix-url": "https://raw.githubusercontent.com/markchalloner/satishost/master/web/",
        "skip-dev": true
    },
    "repositories": [
        {
            "_comment": "Demo packages",
            "type": "package",
            "package": {
                "name": "markchalloner/satishostdemo",
                "version": "0.1.0",
                "dist": {
                    "type": "zip",
                    "url": "dist/demo.zip"
                }
            }
        }
    ],
    "require-all": true
}

composer.json の例 (プロジェクト内):

{
    "repositories": [
        {
            "type": "composer",
            "url": "https://raw.githubusercontent.com/markchalloner/satishost/master/web",
            "options":  {
                "http": {
                    "header": [
                        "API-TOKEN: YOUR-API-TOKEN"
                    ]
                }
            }
        }
    ],
    "require": {
        "markchalloner/satishostdemo": "0.1.0"
    },
    "minimum-stability": "dev"
}

ありがとう

于 2015-06-09T12:06:29.583 に答える