No trabalho, usamos um servidor pypi privado. Este servidor pypi é especificado como um link de dependência:
...
from setuptools import setup
config = ConfigParser.ConfigParser()
rc = os.path.join(os.path.expanduser('~'), '.pypirc')
config.read(rc)
dependency_links = [
'https://{}:{}@<private_url>'.format(
config.get('dc', 'username'), config.get('dc', 'password'))]
setup(
dependency_links=dependency_links,
...)
Isso funciona bem na maioria dos nossos casos. No entanto, há algum tempo, tivemos que instalar pacotes em um servidor cliente. Para isso, tivemos que copiar um válido .pypirc
antes de poder instalar quaisquer pacotes.
Além disso, o código acima parece um hack sujo.
Qual é a maneira correta de especificar links de dependência protegidos sem credenciais codificadas?
Respostas:
Parece um truque razoável e não um truque sujo.
O trabalho está sendo feito e bem feito, a única maneira de melhorar isso é documentá-lo e testá-lo em várias configurações diferentes ou com vários servidores pypi e resolver os problemas resultantes disso.
fonte
Uma possibilidade seria definir variáveis de ambiente . Isso pode ser feito com ferramentas de implantação como o Ansible . Armazenando seus segredos com o Blackbox do Stack Overflow ou o Ansible's Vault
Como alternativa: a conteinerização ajudaria, pois tudo o que é necessário para executar o software está embutido.
fonte
Tenha muito cuidado ao usar esta solução. Conforme declarado na documentação :
Ou seja, suas credenciais serão distribuídas no
.egg
. Ao pesquisar osetuptools
código-fonte, descobri que internamente parece estar usando oeasy_install
comando para instalar dependências. Portanto, adicionar o seguinte às suassetup.cfg
causas faz com que ele adquira um repositório particular:Isso ainda causa a impressão de que suas credenciais são impressas no terminal durante a instalação, mas pelo menos elas não acabam na sua distribuição. Observe que esta solução substitui o URL do índice, portanto, seu repositório particular também deve refletir o público. Não vi suporte para adicionar URLs de índice de maneira óbvia.
fonte