CODECAVE
Tempo di lettura: 3 min

Semplificare la creazione del changelog con Azure DevOps e Confluence

Semplificare la creazione del changelog con Azure DevOps e Confluence

Nel mondo frenetico dello sviluppo software, tenere traccia in modo dettagliato delle modifiche è fondamentale. Il changelog è uno strumento essenziale: registra ogni aggiornamento, correzione o funzionalità aggiunta a un progetto. Integrare Azure DevOps con Confluence permette di costruire un sistema di gestione del changelog fluido, che migliora trasparenza ed efficienza. In questo articolo vediamo come automatizzare la creazione del changelog in Confluence con uno script PowerShell che estrae le informazioni di rilascio da un repository Azure DevOps.

Alla fine dell'articolo avrai uno script che automatizza l'estrazione delle informazioni di changelog tra l'ultima versione di un repository e quella precedente usando i comandi Git. Lo script sfrutta poi il modulo ConfluencePS per creare una nuova pagina Confluence che mostra il changelog. È configurato per essere eseguito in Azure Pipelines a determinate condizioni, per esempio quando nel repository viene creato un nuovo tag.

Cominciamo!

Che cosa ci serve?

  1. Recuperare le informazioni di rilascio.
  2. Ottenere il changelog tra la versione precedente e quella attuale.
  3. Creare una pagina Confluence.
  4. Integrare il tutto con Azure Pipelines.

Partiamo preparando Confluence per creare una nuova cartella dei changelog. Servono questi passaggi:

Passo 1: creare una pagina principale:

  • Accedi al tuo account Confluence.
  • Vai nello Space in cui vuoi creare la cartella dei changelog.
  • Crea una nuova pagina che farà da pagina principale per tutte le future pagine di changelog. Puoi farlo selezionando "Create" e seguendo le istruzioni per creare una pagina.

Passo 2: ottenere la SpaceKey:

  • La SpaceKey di solito compare nell'URL quando ti trovi in uno Space di Confluence.
  • Se la chiave non compare nell'URL, la trovi in Space tools > Overview > Space details.

Passo 3: ottenere l'ID della pagina principale:

  • L'ID della pagina principale (ParentID) si trova nell'URL quando sei sulla pagina che farà da genitore dei changelog. Nell'URL della pagina guarda il parametro pageId: quello è il ParentID.

Passo 4: individuare l'URL del sito Confluence:

Ora hai tutte le informazioni necessarie per creare nuove pagine di changelog con lo script.

[⚠️ Attenzione:]Assicurati di avere i permessi necessari per creare e modificare pagine nello Space Confluence che hai scelto.

Passo 5: creare lo script PowerShell

Ora creiamo un file confluence.ps1 nella root del nostro repository.

Per prima cosa lo script ricava l'elenco delle modifiche tra le due versioni. (Righe 1-11)

Poi crea una nuova pagina Confluence che mostra il registro delle modifiche, usando il modulo ConfluencePS, e la passa alla variabile d'ambiente della nostra pipeline. (Righe 13-33)

Param ([String]$username, [String]$password) # Ottieni i parametri username e password da Azure Pipeline
$repoPath = "." # Imposta il percorso del repository sulla directory corrente
$currentVersion = git describe --abbrev=0 HEAD  # Ottieni l'ultima versione del repository con git
# Write-Host $currentVersion
$prevVersion = git describe --abbrev=0 $currentVersion^  #Ottieni la versione precedente del repository con git
# Write-Host $prevVersion
$changelog = git log --no-merges --pretty="- %s<br />" "$prevVersion..$currentVersion"  #Ottieni l'elenco delle modifiche tra le due versioni con git
# Write-Host $changelog
# exit -0
$confluenceUrl = "https://your.atlassian.net/wiki"  #Imposta l'URL di Confluence
$securePassword = $password | ConvertTo-SecureString -AsPlainText -Force #Converti la password in una secure string
$credentials = New-Object System.Management.Automation.PSCredential `
     -ArgumentList $username, $securePassword   #Crea un oggetto credenziale per Confluence
#Verifica se il modulo ConfluencePS è installato
if (-not (Get-Module -Name ConfluencePS -ListAvailable)) {
    Install-Module -Name ConfluencePS -Scope CurrentUser -Force
}
Import-Module ConfluencePS # Importa il modulo ConfluencePS
Set-ConfluenceInfo -BaseURI $confluenceUrl -Credential $credentials   #Imposta le informazioni su Confluence usando URL e credenziali
$body = @"
<h2>What's new in comparison with version $prevVersion</h2>
<pre>$changelog</pre>
"@
$page = New-ConfluencePage -Title "What's new in $currentVersion" -SpaceKey YOURSPACEKEY -ParentID YOUR_PARENT_ID -Body $body  #Crea una nuova pagina Confluence con titolo, space key e corpo indicati
$pageObj = Get-ConfluencePage -PageID $page.ID     # Ottieni l'oggetto pagina Confluence tramite ID
Write-Output $pageObj.URL     #Stampa a schermo l'URL della pagina
Write-Host "##vso[task.setvariable variable=confluenceUrl]$($pageObj.URL)"    #Imposta la variabile confluenceUrl per Azure Pipeline usando l'URL della pagina

[⚠️ Attenzione:] Per usare questo script devi modificare quanto segue:
> $confluenceUrl con l'URL del tuo sito Confluence. (riga 13)
YOURSPACEKEY con la chiave del tuo Space in Confluence. (riga 30)
YOUR_PARENT_ID con l'ID della pagina principale in cui creare la nuova pagina. (riga 30)
• Assicurati che Git sia installato e disponibile nel path dello script.
• Assicurati di avere i permessi per creare pagine nello Space Confluence indicato.
• Se non usi Azure Pipeline, rimuovi o adatta al tuo ambiente di esecuzione le righe legate a Write-Host "##vso[task.setvariable variable=confluenceUrl]$($pageObj.URL)".

Nello script puoi sperimentare con il corpo della pagina e con l'elenco dei dati che vuoi inviare al changelog.

Passo 6: integrazione con Azure Pipelines.

Il task è configurato per essere eseguito in Azure Pipelines e parte solo a determinate condizioni, per esempio quando nel repository viene creato un nuovo tag. Le variabili $USERNAME e $PASSWORD sono conservate nei secret della pipeline e vengono passate al suo avvio. È il task a mandare in esecuzione il nostro script.

Azure Pipeline Task

- task: PowerShell@2
  condition: and(not(eq(variables['Build.Reason'], 'PullRequest')), BeginsWith(variables['Build.SourceBranch'], 'refs/tags/'))
  displayName: Create a changelog and create a page in Confluence.
  inputs:
    file path: .\confluence.ps1
    arguments: '-username $(USERNAME) -password $(PASSWORD)'

Aggiungilo alla tua pipeline Azure. Il risultato è una pagina con tutte le modifiche!

Conclusione

Automatizzare i registri delle modifiche con Azure DevOps e Confluence semplifica la documentazione e mantiene le informazioni sempre aggiornate. Questo approccio permette ai team di concentrarsi sullo sviluppo, lasciando da parte il lavoro di routine necessario a documentare le modifiche.

Questo articolo offre una panoramica generale del processo di integrazione e può servire da punto di partenza ai team che vogliono migliorare la gestione delle modifiche. Ci auguriamo che ti sia stato utile.

Ti auguriamo buonumore e task interessanti!