Composer - Clone Git Repository (Bitbucket) в конвейере с именем пользователя и паролем (без SSH-ключей) в DockerFile - PullRequest
0 голосов
/ 20 сентября 2019

У меня есть файл composer.json, который проверяет два частных репозитория Bitbucket, которые я создаю в Docker.

"repositories": [
    {
        "type": "vcs",
        "url":  "git@bitbucket.org:repo/service.git"
    },
    {
        "type": "vcs",
        "url":  "git@bitbucket.org:repo/package.git"
    }
]

В настоящее время единственный способ заставить это работать - это ввести SSHключ в изображение, чтобы он мог тянуть частные репозитории.Это, в свою очередь, требует от нас возврата ключа в SCM, который не является идеальным (и в целом довольно плохой практикой).

ADD ./build_id_rsa /home/user/.ssh/id_rsa
ADD ./build_id_rsa.pub /home/user/.ssh/id_rsa.pub

Если обратиться к документации, то похоже, что SSH-ключи являются единственным поддерживаемым вариантом.- https://getcomposer.org/doc/05-repositories.md#using-private-repositories.

Единственным требованием является установка ключей SSH для git-клиента.

Я надеюсь, что существует способ аутентификации с помощью имени пользователя и паролякоторый я могу передать с помощью переменных репозитория Bitbucket, которые вы можете защитить.

Я также приму любой другой обходной путь, который придумали другие, для создания образа Docker, который запускает composer install, который проверяет частные репозитории git.

Ответы [ 2 ]

0 голосов
/ 24 сентября 2019

Нет необходимости запекать ключ в контейнере - вы можете добавить закрытый ключ в Pipelines, в панели администратора репо.

Процесс выглядит примерно так:

  1. Перейдите в панель администратора репо и нажмите ссылку "Ключи SSH".
  2. Добавьте существующий закрытый ключ или попросите Pipelines создать 2048-битный ключ RSA для вас.
  3. Если вывы используете ключ, сгенерированный конвейерами, затем копируете открытый ключ;если вы используете существующий ключ, скопируйте его открытый ключ.Добавьте скопированный ключ в репозитории service и package в качестве «ключа доступа» (на экране «Ключи доступа» на панелях администратора этих репозиториев).
  4. Используйте bitbucket-pipelines.ymlSSH как обычно.Ключ на экране ключей SSH будет ключом по умолчанию для попыток подключения;Bitbucket уже знает свой собственный отпечаток ключа хоста, поэтому вам не придется обновлять known_hosts, а настройка ключа доступа обеспечивает доступ к репо только для чтения без записи рабочего места пользователя.

https://confluence.atlassian.com/bitbucket/use-ssh-keys-in-bitbucket-pipelines-847452940.html документация для этого.

0 голосов
/ 22 сентября 2019

Я не знаком с композитором, но вот вариант, о котором я могу подумать, который может вам помочь.

Создайте базовый образ с помощью ключа ssh и сохраните его в личном реестре Docker
Затем создайте каждую сборку из образа с уже имеющимся ключом, таким образом вам не нужно сохранятьключ в управлении исходным кодом.

Также вам даже не нужно использовать это изображение, на самом деле вы можете использовать многоэтапную сборку Docker и копировать ключ из базового образа в любое изображение, которое вы хотите использовать таким образом, которое вы все равно можете создать из любого образа докера, который захотитеи не иметь контроля исходных кодов.

PS
В bitbucket есть возможность аутентификации с использованием имени пользователя и пароля в URL, как показано ниже.
https://username:password@bitbucket.org/username/repo.git Может быть, это может быть полезно.

...