Published on

April 22, 2018

Entrega continua a la PowerShell Gallery con VSTS

La entrega continua es un aspecto crucial del desarrollo de software que permite a los desarrolladores automatizar el proceso de implementación de su código en producción. En este artículo, exploraremos cómo lograr la entrega continua a la PowerShell Gallery utilizando Visual Studio Team Services (VSTS).

Crear proyecto y vincular a GitHub

El primer paso es crear un proyecto de VSTS y vincularlo a su repositorio de GitHub. Esto se puede hacer siguiendo estos sencillos pasos:

  1. Ir a https://www.visualstudio.com/ y hacer clic en “Comenzar gratis” en Visual Studio Team Services.
  2. Rellenar la información requerida y crear un nuevo proyecto.
  3. Hacer clic en “Compilaciones” y luego en “Nueva definición” para crear una nueva definición de compilación.
  4. Autorizar con OAuth o proporcionar un Token de Acceso Personal (PAT) para vincular su proyecto a su repositorio de GitHub.
  5. Elegir la rama en la que desea que se ejecute la definición de compilación.

Ejecutar pruebas unitarias con Pester

A continuación, necesitamos ejecutar pruebas unitarias para asegurarnos de que nuestro código funcione como se espera. Podemos usar la tarea de compilación Pester Test Runner para lograr esto. Aquí está cómo:

  1. Agregar la tarea de compilación Pester Test Runner a su definición de compilación.
  2. Configurar la tarea para ejecutar todos los archivos *.Tests.ps1 en la carpeta de pruebas de su proyecto.
  3. Guardar los resultados en un archivo JSON llamado Test-Pester.XML.

Actualizar la versión del módulo y confirmar los cambios

Después de ejecutar las pruebas unitarias, necesitamos actualizar la versión del módulo y confirmar los cambios en GitHub. Esto se puede hacer utilizando PowerShell en VSTS. Aquí hay un ejemplo de código:

$manifest = Import-PowerShellDataFile .\dbachecks.psd1 
[version]$version = $Manifest.ModuleVersion

# Agregar uno al número de compilación de la versión
[version]$NewVersion = "{0}.{1}.{2}" -f $Version.Major, $Version.Minor, ($Version.Build + 1) 

# Actualizar el archivo de manifiesto
$manifest -replace $version, $NewVersion | Set-Content .\dbachecks.psd1 -Encoding string

# Confirmar y enviar los cambios a GitHub
git add .\dbachecks.psd1
git commit -m "Actualizar número de versión a $NewVersion"
git push https://$(RobsGitHubPAT)@github.com/sqlcollaborative/dbachecks.git HEAD:master

Firmar el código con un certificado

Para garantizar la autenticidad e integridad de nuestro código, podemos firmarlo con un certificado de firma de código. En este ejemplo, utilizamos un certificado de DigiCert. Aquí está cómo firmar el código utilizando PowerShell en VSTS:

$cert = [System.Security.Cryptography.X509Certificates.X509Certificate2]::new("$(Agent.WorkFolder)\_temp\dbatools-code-signing-cert.pfx","$(CertPassword)")

# Firmar todos los scripts en la carpeta del módulo
Get-ChildItem -Filter *.ps1 -Include *.ps1 -Recurse |
Where-Object {($_ | Get-AuthenticodeSignature).Status -eq 'NotSigned'} |
Set-AuthenticodeSignature -Certificate $cert

Publicar en la PowerShell Gallery

Finalmente, podemos publicar nuestro módulo en la PowerShell Gallery. Aquí está cómo:

  1. Instalar los módulos requeridos (dbatools, Pester, PSFramework) utilizando PowerShell en VSTS.
  2. Publicar el módulo en la PowerShell Gallery utilizando el cmdlet Publish-Module.

Con estos pasos en su lugar, hemos logrado la entrega continua a la PowerShell Gallery utilizando VSTS. Esto nos permite automatizar el proceso de implementación de nuestro código y asegura que nuestro módulo esté siempre actualizado y disponible para la comunidad.

¡Feliz automatización!

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.