es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error al cargar el paquete de Python en Artifactory si la versión ya existe.

Tengo un repositorio de Github para un paquete python. Github-actions sube el paquete a Artifactory cada vez que se realiza un cambio en la rama principal. Quiero agregar algo en Github-actions que no publique el paquete en Artifactory si ya existe un número de versión.

El código de acciones de Github se ve así:

PYRC y PYCONF son secretos que construyen el archivo .pypirc y pip.conf que se utilizan para cargar en Artifactory y pip.conf se utiliza para apuntar la instalación de pip a repositorios para extraer paquetes.

Estoy tratando de agregar algo aquí que fallaría la compilación si setup.py tiene una versión que ya está disponible en Artifactory. ¿Es posible hacerlo a través de un flujo de trabajo de Github?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible lograr esto a través de un flujo de trabajo de Github. Aquí están los pasos:

    1. Utilice la API REST de Artifactory para verificar si ya existe un paquete con la versión actual en Artifactory. Puede utilizar el siguiente comando para lograr esto:
    curl -X GET -H "X-JFrog-Art-Api: <api_key>" "<artifactory_url>/api/search/latestVersion?g=<group>&a=<artifact>&v=<version>"
    

    Reemplace <api_key> con su clave de API de Artifactory, <artifactory_url> con la URL de su instancia de Artifactory, <group> con la ID del grupo de su paquete, <artifact> con el nombre de su paquete y <version> con la versión actual de su paquete. Este comando devolverá una respuesta JSON que contiene información sobre la última versión del paquete en el repositorio especificado.

    1. Utilice la condición if en su flujo de trabajo de Github para verificar si la versión ya existe en Artifactory. Aquí hay un ejemplo:
    - name: Comprobar si la versión del paquete ya existe en Artifactory
      run: |
        respuesta=$(curl -s -X GET -H "X-JFrog-Art-Api: <api_key>" "<artifactory_url>/api/search/latestVersion?g=<group>&a=<artifact>&v=<version>")
        if [[ "$respuesta" != *"not found"* ]]; then
          echo "La versión del paquete ya existe en Artifactory"
          exit 1
        fi
    

    Reemplace <api_key>, <artifactory_url>, <group>, <artifact> y <version> con los valores específicos de su paquete. Este comando saldrá del flujo de trabajo de Github con un estado no cero si la versión especificada del paquete ya existe en Artifactory.

    1. Envuelva su código existente de Acciones de Github dentro de la condición if que agregó en el paso 2. Aquí hay un ejemplo:
    - name: Desplegando el paquete
      env:
        PYRC: ${{ secrets.DI_PYPIRC }}
        PYCONF: ${{ secrets.DI_PY_PIP_CONF }}
      run: |
        respuesta=$(curl -s -X GET -H "X-JFrog-Art-Api: <api_key>" "<artifactory_url>/api/search/latestVersion?g=<group>&a=<artifact>&v=<version>")
        if [[ "$respuesta" != *"not found"* ]]; then
          echo "La versión del paquete ya existe en Artifactory"
          exit 1
        fi
        echo "$PYRC" >> ~/.pypirc
        ls -a
        python setup.py sdist bdist_wheel upload -r local
    

    Reemplace <api_key>, <artifactory_url>, <group>, <artifact> y <version> con los valores específicos de su paquete. Este código solo ejecutará el comando python setup.py si la versión especificada del paquete aún no existe en Artifactory.

    Con estos pasos, puede asegurarse de que su flujo de trabajo de Github falle si ya existe un número de versión en Artifactory, y solo implementará el paquete si es una nueva versión.

Comments are closed.