Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

618
Vistas
Subir a pypi desde Gitlab Pipelines

Estoy tratando de cargar un paquete en pypi usando un trabajo de Gitlab CI, pero no puedo hacerlo funcionar:/ ¿Alguien tiene un ejemplo funcional?

Lo que he intentado hasta ahora en mi .gitlab-ci.yaml (desde mi máquina local, todos funcionan):

  1. Hilo con un archivo .pypirc

     - echo "[distutils]" >> ~/.pypirc - echo "index-servers =" >> ~/.pypirc - echo " pypi" >> ~/.pypirc - echo "" >> ~/.pypirc - echo "[pypi]" >> ~/.pypirc - 'echo "repository: https://upload.pypi.org/legacy/" >> ~/.pypirc' - 'echo "username: ${PYPI_USER}" >> ~/.pypirc' - 'echo "password: ${PYPI_PASSWORD}" >> ~/.pypirc' - python3 setup.py check sdist bdist # This will fail if your creds are bad. - cat ~/.pypirc - twine upload dist/* --config-file ~/.pypirc
  2. Igual que antes pero con $VARIABLE

     [...] - 'echo "username: $PYPI_USER" >> ~/.pypirc' - 'echo "password: $PYPI_PASSWORD" >> ~/.pypirc' [...]
  3. Dos opciones antes pero usando python setup.py ... upload

  4. twine upload dist/* -u $PYPI_USER -p $PYPI_PASSWORD
  5. twine upload dist/* con las variables de entorno TWINE_USERNAME y TWINE_PASSWORD .

... y siempre recibe un 403 Client Error: Invalid or non-existent authentication information . me estoy quedando sin opciones...

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Simplemente estoy usando las variables TWINE_USERNAME y TWINE_PASSWORD , funcionó de inmediato.

Esta es la parte relevante en mi gitlab-ci.yml (reemplace la imagen con la que desee y, por supuesto, cambie todas las demás cosas como stage , cache , etc. según sus necesidades):

 pypi: image: docker.km3net.de/base/python:3 stage: release cache: {} script: - pip install -U twine - python setup.py sdist - twine upload dist/* only: - tags

Y agregue las variables de entorno en GitLab en Configuración->CI/CD->Variables ( https://your-gitlab-instance.oerg/GIT_NAMESPACE/GIT_PROJECT/settings/ci_cd ):

Variables de CI/CD de GitLab

Aquí está la tubería exitosa:

Canal de lanzamiento de PyPI

over 4 years ago · Santiago Trujillo Denunciar

0

Tengo esto funcionando, usando una versión modificada de su código:

 pypi: stage: upload script: - pip install twine - rm -rf dist - echo "[distutils]" >> ~/.pypirc - echo "index-servers =" >> ~/.pypirc - echo " nexus" >> ~/.pypirc - echo "" >> ~/.pypirc - echo "[nexus]" >> ~/.pypirc - echo "${PYPI_REPO}" >> ~/.pypirc - echo "${PYPI_USER}" >> ~/.pypirc - echo "${PYPI_PASSWORD}" >> ~/.pypirc - python3 setup.py check sdist bdist # This will fail if your creds are bad. - python setup.py sdist bdist_wheel - twine upload -r nexus dist/*.tar.gz

La diferencia es que no usé el "'" y me deshice de los dos puntos en el yaml; en su lugar, configuro los valores de los secretos como, por ejemplo, nombre de username: myuser

over 4 years ago · Santiago Trujillo Denunciar

0

Si aparecen problemas con EOF, asegúrese de cambiar Configuración/Repositorio/Etiquetas para que estén protegidos, para que funcionen nuevamente. He publicado aquí una descripción más completa.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda