En aquest tema, explorarem com utilitzar PowerShell en el context de pipelines de CI/CD (Integració Contínua i Distribució Contínua). Els pipelines de CI/CD són essencials per a l'automatització del desenvolupament de programari, permetent la integració i distribució contínua de codi de manera eficient i fiable.
Objectius del Tema
- Comprendre què són els pipelines de CI/CD.
- Aprendre a integrar PowerShell en pipelines de CI/CD.
- Veure exemples pràctics d'ús de PowerShell en pipelines.
- Realitzar exercicis pràctics per reforçar els conceptes apresos.
Què són els Pipelines de CI/CD?
Integració Contínua (CI)
La integració contínua és una pràctica de desenvolupament de programari on els desenvolupadors integren el seu codi en un repositori compartit diverses vegades al dia. Cada integració és verificada per una build automatitzada (incloent proves) per detectar errors tan aviat com sigui possible.
Distribució Contínua (CD)
La distribució contínua és una extensió de la integració contínua que permet la distribució automàtica del codi verificat a un entorn de producció o pre-producció. Això assegura que el codi sempre estigui en un estat desplegable.
Integració de PowerShell en Pipelines de CI/CD
PowerShell pot ser utilitzat en diverses etapes dels pipelines de CI/CD per automatitzar tasques com la compilació, les proves, el desplegament i la configuració de l'entorn. A continuació, veurem com integrar PowerShell en pipelines utilitzant Azure DevOps com a exemple.
Exemple: Azure DevOps
1. Creació d'un Pipeline de Build
-
Configuració del Repositori:
- Assegura't que el teu codi estigui en un repositori de Git (Azure Repos, GitHub, etc.).
-
Creació del Pipeline:
- A Azure DevOps, ves a la secció de Pipelines i crea un nou pipeline.
- Selecciona el repositori on es troba el teu codi.
-
Definició del Pipeline:
- Utilitza un fitxer YAML per definir el pipeline. A continuació es mostra un exemple bàsic que executa un script de PowerShell:
trigger: - main pool: vmImage: 'windows-latest' steps: - task: PowerShell@2 inputs: targetType: 'inline' script: | Write-Output "Iniciant la build..." # Executa el teu script de PowerShell aquí .\scripts\build.ps1
2. Creació d'un Pipeline de Release
-
Configuració del Pipeline de Release:
- A Azure DevOps, ves a la secció de Releases i crea un nou pipeline de release.
- Defineix l'artifact que serà desplegat (per exemple, el resultat de la build anterior).
-
Definició de les Etapes de Release:
- Afegeix una nova etapa per desplegar l'artifact.
- Afegeix una tasca de PowerShell per executar scripts de desplegament:
steps: - task: PowerShell@2 inputs: targetType: 'inline' script: | Write-Output "Desplegant l'aplicació..." # Executa el teu script de PowerShell aquí .\scripts\deploy.ps1
Exemples Pràctics
Exemple 1: Compilació i Proves
# build.ps1 Write-Output "Compilant el projecte..." # Comanda per compilar el projecte dotnet build Write-Output "Executant les proves..." # Comanda per executar les proves dotnet test
Exemple 2: Desplegament
# deploy.ps1 Write-Output "Desplegant l'aplicació..." # Comanda per copiar els fitxers a l'entorn de producció Copy-Item -Path "C:\source\*" -Destination "C:\inetpub\wwwroot" -Recurse
Exercicis Pràctics
Exercici 1: Crear un Pipeline de Build
- Crea un repositori de Git amb un projecte de .NET.
- Defineix un pipeline de build a Azure DevOps que compili el projecte i executi les proves utilitzant un script de PowerShell.
Exercici 2: Crear un Pipeline de Release
- Utilitza l'artifact generat pel pipeline de build anterior.
- Defineix un pipeline de release a Azure DevOps que desplegui l'artifact a un servidor de prova utilitzant un script de PowerShell.
Solucions als Exercicis
Solució a l'Exercici 1
trigger: - main pool: vmImage: 'windows-latest' steps: - task: PowerShell@2 inputs: targetType: 'inline' script: | Write-Output "Iniciant la build..." dotnet build Write-Output "Executant les proves..." dotnet test
Solució a l'Exercici 2
steps: - task: PowerShell@2 inputs: targetType: 'inline' script: | Write-Output "Desplegant l'aplicació..." Copy-Item -Path "C:\source\*" -Destination "C:\inetpub\wwwroot" -Recurse
Resum
En aquest tema, hem après què són els pipelines de CI/CD i com podem integrar PowerShell en aquests pipelines per automatitzar tasques de compilació, proves i desplegament. Hem vist exemples pràctics i hem realitzat exercicis per reforçar els conceptes apresos. Amb aquests coneixements, estàs preparat per utilitzar PowerShell en els teus propis pipelines de CI/CD i millorar l'eficiència del teu procés de desenvolupament de programari.
Curs de PowerShell
Mòdul 1: Introducció a PowerShell
- Què és PowerShell?
- Instal·lació i Configuració de PowerShell
- Consola i ISE de PowerShell
- Comandes i Sintaxi Bàsiques
- Sistema d'Ajuda en PowerShell
Mòdul 2: Scripting Bàsic
- Variables i Tipus de Dades
- Operadors en PowerShell
- Sentències Condicionals
- Bucles en PowerShell
- Funcions i Scripts
Mòdul 3: Treballant amb Objectes
- Comprensió dels Objectes
- Propietats i Mètodes dels Objectes
- Pipelines i Manipulació d'Objectes
- Filtratge i Selecció d'Objectes
- Ordenació i Agrupació d'Objectes
Mòdul 4: Tècniques Avançades de Scripting
- Gestió d'Errors
- Depuració de Scripts
- Expressions Regulars
- Treballant amb Fitxers i Directoris
- Ús de Mòduls i Snap-ins
Mòdul 5: Automatització i Programació de Tasques
- Introducció a l'Automatització
- Creació de Tasques Programades
- Ús de PowerShell per a l'Administració del Sistema
- Automatització de Tasques d'Active Directory
- Automatització de Tasques de Xarxa
Mòdul 6: Remotització amb PowerShell
- Introducció a la Remotització
- Configuració de la Remotització
- Ús d'Invoke-Command
- Gestió de Sessions
- Consideracions de Seguretat
Mòdul 7: Funcions Avançades de PowerShell
- Perfils de PowerShell
- Personalització de l'Entorn de PowerShell
- Creació i Ús de Classes
- Treballant amb XML i JSON
- Ús de PowerShell amb REST APIs
Mòdul 8: PowerShell i DevOps
- Introducció a DevOps
- Ús de PowerShell amb Pipelines CI/CD
- Infraestructura com a Codi (IaC)
- Gestió de Recursos al Núvol amb PowerShell
- PowerShell i Docker