Configurar Swift Package Manager con CodeArtifact - CodeArtifact

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Configurar Swift Package Manager con CodeArtifact

Para usar Swift Package Manager para publicar paquetes o consumir paquetes de AWS CodeArtifact, primero tendrá que configurar las credenciales para acceder a su repositorio de CodeArtifact. El método recomendado para configurar la CLI de Swift Package Manager con sus credenciales de CodeArtifact y el punto de conexión del repositorio es mediante el comando aws codeartifact login. También puede configurar Swift Package Manager manualmente.

Configurar Swift con el comando login

Utilice el comando aws codeartifact login para configurar Swift Package Manager con CodeArtifact.

nota

Para usar el comando de inicio de sesión, se requiere Swift 5.8 o posterior y se recomienda Swift 5.9 o posterior.

El comando aws codeartifact login hará lo siguiente:

  1. Obtenga un token de autenticación de CodeArtifact y guárdelo en su entorno. La forma en que se almacenan las credenciales depende del sistema operativo del entorno:

    1. macOS: se crea una entrada en la aplicación MacOS Keychain.

    2. Linux y Windows: se crea una entrada en el archivo ~/.netrc.

    En todos los sistemas operativos, si existe una entrada de credenciales, este comando la reemplaza por un nuevo token.

  2. Busque la URL del punto de conexión del repositorio de CodeArtifact y agréguela a su archivo de configuración de Swift. El comando añade la URL del punto de conexión del repositorio al archivo de configuración a nivel de proyecto ubicado en /path/to/project/.swiftpm/configuration/registries.json.

nota

El comando aws codeartifact login llama a comandos swift package-registry que deben ejecutarse desde el directorio que contiene el archivo Package.swift. Por ello, debe ejecutarse el comando aws codeartifact login desde el proyecto Swift.

Para configurar Swift con el comando login
  1. Navegue hasta el directorio del proyecto Swift que contiene el archivo Package.swift de su proyecto.

  2. Ejecute el comando aws codeartifact login siguiente.

    Si va a acceder a un repositorio de un dominio de su propiedad, no tiene que incluir --domain-owner. Para obtener más información, consulte Dominios entre cuentas.

    aws codeartifact login --tool swift --domain my_domain \ --domain-owner 111122223333 --repository my_repo \ [--namespace my_namespace]

La opción --namespace configura la aplicación para que solo consuma paquetes de su repositorio de CodeArtifact si están en el espacio de nombres designado. Los espacios de nombres CodeArtifact son sinónimos de ámbitos y se utilizan para organizar el código en grupos lógicos y evitar las colisiones de nombres que pueden producirse cuando la base de código incluye varias bibliotecas.

El período de autorización predeterminado después de una llamada login es de 12 horas y login debe invocarse para actualizar periódicamente el token. Para obtener más información sobre el token de autorización creado con el comando login, consulte Tokens creados con el comando login.

Configurar Swift sin el comando login

Si bien se recomienda configurar Swift con el comando aws codeartifact login, también puede configurar Swift Package Manager sin el comando login actualizando manualmente la configuración de Swift Package Manager.

En el siguiente procedimiento, utilizará la AWS CLI para hacer lo siguiente:

  1. Obtenga un token de autenticación de CodeArtifact y guárdelo en su entorno. La forma en que se almacenan las credenciales depende del sistema operativo del entorno:

    1. macOS: se crea una entrada en la aplicación MacOS Keychain.

    2. Linux y Windows: se crea una entrada en el archivo ~/.netrc.

  2. Obtenga la URL del punto de conexión de su repositorio de CodeArtifact.

  3. En el archivo de configuración ~/.swiftpm/configuration/registries.json, añada una entrada con la URL del punto de conexión del repositorio y el tipo de autenticación.

Para configurar Swift sin el comando login
  1. En una línea de comandos, utilice el siguiente comando para obtener un token de autorización de CodeArtifact y almacenarlo en una variable de entorno.

    • Sustituya my_domain por su nombre de dominio de CodeArtifact.

    • Sustituya 111122223333 por el ID de la cuenta de AWS del propietario del dominio. Si va a acceder a un repositorio de un dominio de su propiedad, no tiene que incluir --domain-owner. Para obtener más información, consulte Dominios entre cuentas.

    macOS and Linux
    export CODEARTIFACT_AUTH_TOKEN=`aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --query authorizationToken --output text`
    Windows
    • Windows (mediante el intérprete de comandos predeterminado):

      for /f %i in ('aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --query authorizationToken --output text') do set CODEARTIFACT_AUTH_TOKEN=%i
    • Windows PowerShell:

      $env:CODEARTIFACT_AUTH_TOKEN = aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --query authorizationToken --output text
  2. Obtenga el siguiente comando para obtener el punto de conexión del repositorio de CodeArtifact. El punto de conexión de su repositorio se utiliza para dirigir Swift Package Manager a su repositorio para consumir o publicar paquetes.

    • Sustituya my_domain por su nombre de dominio de CodeArtifact.

    • Sustituya 111122223333 por el ID de la cuenta de AWS del propietario del dominio. Si va a acceder a un repositorio de un dominio de su propiedad, no tiene que incluir --domain-owner. Para obtener más información, consulte Dominios entre cuentas.

    • Sustituya my_repo por el nombre de su repositorio de CodeArtifact.

    macOS and Linux
    export CODEARTIFACT_REPO=`aws codeartifact get-repository-endpoint --domain my_domain --domain-owner 111122223333 --repository my_repo --format swift --query repositoryEndpoint --output text`
    Windows
    • Windows (mediante el intérprete de comandos predeterminado):

      for /f %i in ('aws codeartifact get-repository-endpoint --domain my_domain --domain-owner 111122223333 --repository my_repo --format swift --query repositoryEndpoint --output text') do set CODEARTIFACT_REPO=%i
    • Windows PowerShell:

      $env:CODEARTIFACT_REPO = aws codeartifact get-repository-endpoint --domain my_domain --domain-owner 111122223333 --repository my_repo --format swift --query repositoryEndpoint --output text

    La siguiente URL es un punto de conexión de repositorio de ejemplo.

    https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/swift/my_repo/
    nota

    Si quiere utilizar un punto de conexión de pila doble, use el punto de conexión codeartifact.region.on.aws.

    importante

    Debe añadir login al final del punto de conexión de la URL del repositorio cuando se utilice para configurar Swift Package Manager. Esto se hace automáticamente en los comandos de este procedimiento.

  3. Con estos dos valores almacenados en variables de entorno, páselos a Swift usando el comando swift package-registry login de la siguiente manera:

    macOS and Linux
    swift package-registry login ${CODEARTIFACT_REPO}login --token ${CODEARTIFACT_AUTH_TOKEN}
    Windows
    • Windows (mediante el intérprete de comandos predeterminado):

      swift package-registry login %CODEARTIFACT_REPO%login --token %CODEARTIFACT_AUTH_TOKEN%
    • Windows PowerShell:

      swift package-registry login $Env:CODEARTIFACT_REPO+"login" --token $Env:CODEARTIFACT_AUTH_TOKEN
  4. A continuación, actualice el registro de paquetes utilizado por su aplicación para que cualquier dependencia se extraiga del repositorio de CodeArtifact. Este comando debe ejecutarse en el directorio del proyecto en el que intenta resolver la dependencia del paquete:

    macOS and Linux
    $ swift package-registry set ${CODEARTIFACT_REPO} [--scope my_scope]
    Windows
    • Windows (mediante el intérprete de comandos predeterminado):

      $ swift package-registry set %CODEARTIFACT_REPO% [--scope my_scope]
    • Windows PowerShell:

      $ swift package-registry set $Env:CODEARTIFACT_REPO [--scope my_scope]

    La opción --scope configura la aplicación para que solo consuma paquetes de su repositorio de CodeArtifact si están dentro del ámbito designado. Los ámbitos son sinónimos de los espacios de nombres de CodeArtifact y se utilizan para organizar el código en grupos lógicos y evitar las colisiones de nombres que pueden producirse cuando la base de código incluye varias bibliotecas.

  5. Para confirmar que la configuración se ha configurado correctamente, consulte el contenido del archivo .swiftpm/configuration/registries.json a nivel de proyecto ejecutando el siguiente comando en el directorio del proyecto:

    $ cat .swiftpm/configuration/registries.json { "authentication" : { }, "registries" : { "[default]" : { "url" : "https://my-domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/swift/my-repo/" } }, "version" : 1 }

Ahora que ha configurado Swift Package Manager con su repositorio de CodeArtifact, puede usarlo para publicar y consumir paquetes Swift desde y hacia él. Para obtener más información, consulte Consumir y publicar paquetes de Swift.