Recuperación de información de repositorio y señales

get_repo_params ()

La función get-repo-params está diseñada para recuperar la información relacionada con el repositorio, cuando se proporciona el repositorio URL y la ruta del token de repositorio.

Parámetro

La función get-repo-params requiere los parámetros siguientes:

  • repo_url El repositorio URL. Proporcione la url correcta del repositorio cuyos parámetros deben encontrarse.
  • repo_token_path Vía de acceso a la señal asociada con el repositorio.

Salida

La función get-repo-params la proporciona la interconexión. La función devuelve la siguiente información:

  • repo_name: Nombre del repositorio.
  • repo_owner: Usuario o creador del repo.
  • scm_type: Tipo de gestión de control de fuentes del repositorio (Git, GRIT).
  • api_url: API URL vinculada al servicio Git que aloja el repositorio.

Llamada a función

   read -r <repo_name> <repo_owner> <scm_type> <api_url> \
    < <(get_repo_params "<repo_url>" "<token_path>")

Utilice la variable de guión bajo (_) en el comando de lectura como marcador de posición para una variable cuyo valor se descarta o no se utiliza en partes posteriores del script.

   read -r <repo_name> <_> <scm_type> <_> \
    < <(get_repo_params "<repo_url>" "<token_path>")

Utilice estas variables como variables de shell en su script.

Ejemplo

   ### <repo_url> = $EVIDENCE_LOCKER_URL
   ### <token_path> = ${WORKSPACE}/$EVIDENCE_TOKEN_PATH

   source "${ONE_PIPELINE_PATH}"/tools/get_repo_params

   read -r EVIDENCE_REPO_NAME EVIDENCE_REPO_ORG EVIDENCE_SCM_TYPE EVIDENCE_API_URL \
   < <(get_repo_params "$EVIDENCE_LOCKER_URL" "${WORKSPACE}/$EVIDENCE_TOKEN_PATH")

   ### Printing the value of EVIDENCE_LOCKER_URL

   echo "EVIDENCE_LOCKER_URL $EVIDENCE_LOCKER_URL"

get_repo_specific_token ()

La función get_repo_specific_token recupera el token asociado al repositorio URL utilizado anteriormente. Un token de repositorio autentica y autoriza el acceso a un repositorio específico.

Selecciona el valor de la variable (git-token-[repo_name]-[repo_org]) de la tabla de propiedades de entorno.

Ejemplo

let repo_url = <repo_git_url> donde:

<repo_name> = compliance-app
<repo_org> = user_name

Llamada a función

   parameter
   ### repo_url
   token=$(get_repo_specific_token "<repo_url>")

Salida:

Se genera la siguiente salida:

   echo "$repo_token"

Ejemplo:

   ### parameter:
   # <repo_url>: URL of repo of which token is required.

   source "${ONE_PIPELINE_PATH}"/tools/get_repo_params

   repo_url= <repo_url>
   token=$(get_repo_specific_token "$repo_url")

   ### Output
   # repo_token

   echo "Repository Token: $token"

get_api_url ()

La función get_api_url determina el API URL apropiado para diferentes tipos de repositorios de código fuente.

Parámetros:

  • repo_url: La dirección URL del repositorio de código fuente.

Llamada de función:

   api_url=$(get_api_url "<repo_url>")

Valor de retorno:

La función muestra el valor API URL para el repositorio dado.

Ejemplo:


   source "${ONE_PIPELINE_PATH}/tools/get_repo_params"

   repo_url= <repo_url>
   api_url=$(get_api_url "$repo_url")

   echo "API URL for $repo_url is: $api_url"

Tipos de SCM y URL de API correspondientes:

  1. GitHub Integrado:

    • Tipo de SCM: github_integrated
    • API URL: <api_url>
  2. GitHub Consolidado:

    • Tipo de SCM: githubconsolidated
    • Repositorio GitHub integrado:
      • API URL: https://<repo_server_name>/api/v3 (donde <repo_server_name> se extrae del repositorio URL )
    • Repositorio GitHub no integrado:
      • URL de API: https://api.github.com
  3. Gitalojado:

    • Tipo de SCM: hostedgit
    • API URL: https://<repo_server_name>/api/v4 (donde <repo_server_name> se extrae del repositorio URL )

Si el tipo de SCM no es uno de los tipos soportados, se visualiza un mensaje de aviso.

get_repo_scm_type ()

Esta función determina el tipo de gestión del código fuente (SCM) de un repositorio dado URL.

Parámetro:

  • repo_url: El URL del repositorio para el que se necesita determinar el tipo de SCM.

Llamada de función:

   scm_type=$(get_repo_scm_type "<repo_url>")

Salida:

Una etiqueta que indica la plataforma SCM, que puede ser una de las siguientes:

  • Para GitLab-hosted: gitlab
  • Para repositorios GitHub-integrated: github -Para otros casos (tomando como valor predeterminado GitHub): github

Ejemplo de uso:

   source "${ONE_PIPELINE_PATH}/tools/get_repo_params"

   repository_url= <repo_url>
   result=$(get_repo_scm_type "$repository_url")

   echo "SCM Type: $result"

Este ejemplo muestra github como valor de salida porque el repositorio URL proporcionado anteriormente está integrado con GitHub.

get_repo_owner ()

Esta función extrae la información del propietario o subgrupo del repositorio Git URL proporcionado anteriormente.

Parámetro:

  • repo_url: La dirección URL del repositorio Git.

Llamada de función:

   Owner_name=$(get_repo_owner "<repo_url>")

Salida:

  • La información del propietario o subgrupo que se extrae del repositorio URL.

Ejemplo de uso:

   source "${ONE_PIPELINE_PATH}/tools/get_repo_params"

   repository_url= <repo_url>
   owner=$(get_repo_owner "$repository_url")

   echo "Repository Owner: $owner"

Este ejemplo muestra user_name como salida porque GitHub aloja el repositorio URL la cuenta o subgrupo "nombre de usuario".

  • Si no se encuentra el propietario, extrae el primer segmento de URL como propietario.

get_repo_name ()

Esta función extrae el nombre de un repositorio Git de un repositorio dado URL.

Parámetros:

  • repo_url: La dirección URL del repositorio Git.

Llamada de función:

   Repo_name=$(get_repo_name "<repo_url>")

Salida:

Esta llamada funcional muestra el nombre del repositorio que se extrae del repositorio URL como su salida.

Ejemplo de uso:

   source "${ONE_PIPELINE_PATH}/tools/get_repo_params"

   repository_url= <repo_url>
   repo_name=$(get_repo_name "$repository_url")

   echo "Repository Name: $repo_name"

Este ejemplo mostraría compliance-app ya que el repositorio proporcionado URL se llama "compliance-app" en GitHub.

Si no se encuentra el nombre, se intenta utilizar el penúltimo segmento de URL como nombre.