A situação é a seguinte: a empresa que você trabalha é pequena e vocês querem publicar um pacote Python internamente. Mas sem pagar um serviço que faça isso ou adicionar uma nova ferramenta.
Embora essa pareça uma situação específica, podemos dizer que ela pode acontecer com bastante frequência. No Brasil, literalmente 99% das empresas são pequenos negócios. Segundo a Forbes, a estatística é exatamente a mesma nos EUA (o primeiro país que apareceu na busca :)).
Por isso hoje vou mostrar pra vocês as gambiarras estratégias que uso para resolver esse problema com o GitHub.
Se você usa o GitLab, pode ver como fazer nesse post aqui.
Alternativas
Pré-requisitos
- Um repositório privado no GitHub com uma wheel publicada lá
- Personal Access Token do GitHub
Para as duas opções você precisa ter um Personal Access Token
do GitHub que dê acesso de leitura ao repositório desejado. Conseguiu o token?
Agora configure-o como a variável de ambiente GH_API_TOKEN
.
Instalando direto do requirements.txt
Você pode adicionar a seguinte linha ao seu requirements.txt
:
seu-repo @ git+https://${GH_API_TOKEN}@github.com/org-ou-usuario/seu-repo@2.3.0
IMPORTANTE: essa opção é ótima mas expõe a variável de ambiente durante a instalação das dependendências, o que é uma falha de segurança. Esse é um bug conhecido que existe desde 2021.
Para resolver esse problema (enquanto a correção não vem) você pode adicionar -q
ao comando de instalação para omitir toda a saída. O lado ruim é que você não vai ver
o que está sendo instalado.
pip install -q -r requirements.txt
Fazendo download do wheel com a CLI do GitHub
Caso você prefira fazer isso fora do requirements.txt
, você pode também:
* instalar o gh
, a CLI do GitHub
* autenticar com a variável de ambiente
* fazer o download da release
* instalar usando pip install
e o arquivo
RUN apt install gh
RUN echo $GH_API_TOKEN | gh auth login --with-token
RUN gh release download 1.0.0 --repo https://github.com/org-ou-usuario/seu-repo/ -p '*.whl' -D /tmp
RUN pip install "/tmp/seu-repo-1.0.0-py3-none-any.whl"
Por hoje é só, pessoal
O GitHub já está trabalhando em diferentes formas de publicar pacotes por lá - só não pro Python ainda, infelizmente. Enquanto esse dia não chega, deixo aí essas alternativas.
Divirtam-se! 🐍
Translations
comments powered by Disqus