Репозиторий Composer Satis, похоже, ссылается на исходный URL, а не на dist URL

У меня есть сервер Satis с базовой HTTP-аутентификацией.

Файл конфигурации выглядит следующим образом:

{
    "name": "MySatisServer",
    "homepage": "https:\/\/satis.example.co.uk",
    "repositories": [
        {
            "type": "git",
            "url": "[email protected]:Org\/Repo1.git"
        },
        {
            "type": "git",
            "url": "[email protected]:Org\/Repo2.git"
        },
        {
            "type": "git",
            "url": "[email protected]:Org\/Repo3.git"
        },
        {
            "type": "git",
            "url": "[email protected]:Org\/Repo4.git"
        }
    ],
    "require-all": true,
    "require-dependencies": true,
    "require-dev-dependencies": true,
    "archive": {
        "directory": "dist",
        "format": "zip",
        "prefix-url": "https://satis.example.co.uk"
    }
}

Я запустил сборку satis, которая создала каталог dist с файлом packages.json, который выглядит правильно.

Я могу перейти на https://satis.example.co.uk в своем браузере и загрузить любую версию репозиториев, которую я хочу, в виде ZIP-файла, и все работает нормально.

Проблема возникает, когда я пытаюсь использовать репозиторий через composer.

Мой файл composer.json выглядит примерно так:

{
    "name": "some/project",
    "description": "",
    "license": "proprietary",
    "authors": [],
    "require": {
        "org/repo-4": "^1.0"
    },
    "repositories": [
        {
            "type": "composer",
            "url": "https://satis.example.co.uk"
        }
    ]
}

Поскольку Satis Server использует базовую HTTP-аутентификацию, у меня также есть файл auth.json, который выглядит так:

{
    "http-basic": {
        "satis.example.co.uk": {
            "username": "my-username",
            "password": "my-password"
        }
    }
}

Запуск composer install дает мне следующий результат:

- Installing org/repo-4 (1.0.0): Downloading (failed)    Failed to download org/repo-4 from dist: The "https://api.github.com/repos/Org/Repo4/zipball/128f63b6a91cf71d5cda8f84861254452ff3a1af" file could not be downloaded (HTTP/1.1 404 Not Found)
Now trying to download from source
- Installing org/repo-4 (1.0.0): Cloning failed using an ssh key for authentication, enter your GitHub credentials to access private repos
Head to https://github.com/settings/tokens/new?scopes=repo&description=Composer+on+box359.localdomain+2017-04-18+1416
to retrieve a token. It will be stored in "/home/ubuntu/CashbackEngine/auth.json" for future use by Composer.
Token (hidden):

Как вы можете видеть из вышеизложенного, он полностью игнорирует тот факт, что файл, который ему нужно загрузить, находится по адресу https://satis.example.co.uk/dist/org/repo-4/repo-4-1.0.0-e1cd03.zip, и прыгает прямо, чтобы попытаться получить его из источника на GitHub, что не является желаемым результатом, поскольку это частный репозиторий GitHub.

Похоже, он даже не осознает, что доступна другая дистрибутивная версия.

Что-то не так с моей настройкой?

Любая помощь приветствуется.


person Tom Wright    schedule 18.04.2017    source источник


Ответы (1)


Проблема была связана с файлом composer.lock.

Хотя dist URL на Satis был правильным, композитор даже не обратил на него внимания, так как файл блокировки композитора кэшировал старый dist url, который был на GitHub.

Решение состояло в том, чтобы удалить файл composer.lock и запустить composer install. Я также заранее провел composer clearcache, чтобы убедиться.

person Tom Wright    schedule 18.04.2017