私のcompsoser.jsonは、組織のGithubアカウントから2つのプライベートリポジトリを使用します。
{
"name": "API",
"repositories": [
{
"type": "vcs",
"url": "[email protected]/company/private.git"
},
{
"type": "vcs",
"url": "[email protected]/company/private2.git"
}
],
"require": {
"php": ">=5.3.3",
"zendframework/zendframework": ">2.1.3",
"doctrine/mongodb-odm": "dev-master",
"doctrine/doctrine-mongo-odm-module": "dev-master",
"company/private": "dev-master",
"company/private2": "dev-master"
}
}
SSHキーをセットアップし、ステージングサーバーの承認済みキーに追加しました。 git cloneを実行すると、完全に機能し、資格情報を要求しません。
ただし、composer updateを実行すると、composerはリポジトリにアクセスできないため、リポジトリの取得に失敗します。
これはビルドスクリプトの一部であるため、非インタラクティブな方法で実行されるため、資格情報を入力することはできず、これを自動化する必要があります。
ビルド中にcomposerがプライベートリポジトリにアクセスできるようにするにはどうすればよいですか?
キーファイルを使用してプライベートリポジトリにアクセスするようにcomposerを設定できます。
詳細: https://getcomposer.org/doc/articles/handling-private-packages-with-satis.md#security
私は質問のタイトルが具体的にタイプ「vcs」の使用に言及していることを理解していますが、これはプライベートgitリポジトリを使用してプロジェクトをパッケージとして展開する 代替方法 です.
"repositories": [
{
"type": "package",
"package": {
"name": "company/private",
"version": "0.1.0",
"type": "package",
"source": {
"url": "[email protected]:/company/private.git",
"type": "git",
"reference": "master"
}
}
}
],
"require": {
"company/private": "*"
}
制限は、最新バージョンが必要な場合は、デプロイするたびにバージョン番号を手動で変更する必要があることです。ただし、これはその利点でもあります。
この方法でリポジトリを定義すると、特定のタグ付きバージョンを取得できます。この場合、タグ0.1.0
のコミットはcomposer update
でプルされます。
GithubアカウントにデプロイするサーバーのSSHキーを追加する必要があります。
元の質問のURLにコロンがありません:
"url": "[email protected]/company/private.git"
あるべき
"url": "[email protected]:/company/private.git"
私はちょうど同じ問題を抱えていたので、修正しました。
"name": "{vendor}/{package-name}",
"repositories": [
{
"type": "package",
"package": {
"name": "{vendor}/{package-name}",
"version": "{arbitrary-version}",
"type": "package",
"source": {
"url": "[email protected]:{github-username}/{github-repository}.git",
"type": "git",
"reference": "{branch}"
}
}
}
]
"require": {
"{vendor}/{package-name}": "*"
}
答えとガイダンスを本当に感謝しました。ただし、notは解決策を得ることができました。そして、私は答えがおそらくここで起こっているように見えることに関していくつかの追加の詳細を使用できると思います。
composer.json
で使用されるベンダー名。composer.json
にあるパッケージ名ユーザー。私に最大の問題を与えた2つのことは、コロン(:
)の後にスラッシュ(/
)が続かない(しない?)ことでした。 url
の最後に.git
を置くことを忘れないでください。
推測と不確実性のポイント:
package.name
メンバーを何か間違ったものに変更するとどうなるかわかりません。つまり、これがrequire
のみの内部参照であるかどうかはわかりません。または、そこで何か他のことが起こる場合。