Автоматизация журнала изменений с помощью Azure DevOps и Confluence
Автоматизация журнала изменений с помощью Azure DevOps и Confluence
В динамичном мире разработки ПО крайне важно вести подробный учёт изменений. Журнал изменений (changelog) — ключевой инструмент, который фиксирует каждое обновление, исправление и новую функцию в проекте. Интеграция Azure DevOps с Confluence позволяет выстроить удобную систему ведения журналов изменений, которая делает работу прозрачнее и эффективнее. В этой статье рассказываем, как автоматизировать создание журнала изменений в Confluence с помощью скрипта PowerShell, который получает информацию о релизах из репозитория Azure DevOps.
К концу статьи у вас будет скрипт, который с помощью команд Git автоматически извлекает сведения об изменениях между последней и предыдущей версиями репозитория. Затем с помощью модуля ConfluencePS он создаёт в Confluence новую страницу с журналом изменений. Скрипт настроен на запуск в Azure Pipelines при определённых условиях, например при создании нового тега в репозитории.
Приступим!
Что нам понадобится?
- Получить информацию о релизе.
- Получить журнал изменений между предыдущей и последней версиями.
- Создать страницу в Confluence.
- Настроить интеграцию с Azure Pipelines.
Начнём с подготовки Confluence: создадим новую папку для журналов изменений. Для этого выполним следующие шаги:
Шаг 1. Создание родительской страницы:
- Войдите в свой аккаунт Confluence.
- Перейдите в пространство (Space), в котором хотите создать папку для журналов изменений.
- Создайте новую страницу — она станет родительской для всех будущих страниц с журналами изменений. Для этого выберите «Create» и следуйте инструкциям по созданию страницы.
Шаг 2. Получение SpaceKey:
- SpaceKey обычно отображается в URL, когда вы находитесь в пространстве Confluence.
- Если ключа в URL нет, его можно найти в разделе Space tools > Overview > Space details.
Шаг 3. Получение ID родительской страницы:
- ID родительской страницы (ParentID) можно найти в URL, открыв страницу, которая станет родительской для журналов изменений. Найдите в URL страницы параметр pageId — это и есть ParentID.
Шаг 4. URL сайта Confluence:
- URL сайта Confluence — это адрес, по которому вы входите в Confluence. Например, https://yourcompany.atlassian.net/wiki.
Теперь у вас есть всё необходимое, чтобы создавать новые страницы журналов изменений с помощью скрипта.
[⚠️ Внимание:]Убедитесь, что у вас есть права на создание и редактирование страниц в выбранном пространстве Confluence.
Шаг 5. Создание скрипта PowerShell
Создадим файл confluence.ps1 в корне репозитория.
Сначала скрипт получает список изменений между этими версиями. (Строки 1-11)
Затем с помощью модуля ConfluencePS скрипт создаёт в Confluence новую страницу с журналом изменений и передаёт её адрес в переменную окружения нашего пайплайна. (Строки 13-33)
Param ([String]$username, [String]$password) # Get username and password options from Azure Pipeline
$repoPath = "." # Set the repository path as the current directory
$currentVersion = git describe --abbrev=0 HEAD # Get the latest version of the repository using git
# Write-Host $currentVersion
$prevVersion = git describe --abbrev=0 $currentVersion^ #Get the previous version of the repository using git
# Write-Host $prevVersion
$changelog = git log --no-merges --pretty="- %s<br />" "$prevVersion..$currentVersion" #Get the list of changes between the two versions using git
# Write-Host $changelog
# exit -0
$confluenceUrl = "https://your.atlassian.net/wiki" #Set the Confluence URL
$securePassword = $password | ConvertTo-SecureString -AsPlainText -Force #Convert the password to a secure string
$credentials = New-Object System.Management.Automation.PSCredential `
-ArgumentList $username, $securePassword #Create a credential object for Confluence
#Check if the module ConfluencePS is installed
if (-not (Get-Module -Name ConfluencePS -ListAvailable)) {
Install-Module -Name ConfluencePS -Scope CurrentUser -Force
}
Import-Module ConfluencePS # Import the module ConfluencePS
Set-ConfluenceInfo -BaseURI $confluenceUrl -Credential $credentials #Set the information about Confluence using the URL and credentials
$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 #Create a new Confluence page with the given title, space key and body
$pageObj = Get-ConfluencePage -PageID $page.ID # Get the Confluence page object by ID
Write-Output $pageObj.URL #Print the page URL to the screen
Write-Host "##vso[task.setvariable variable=confluenceUrl]$($pageObj.URL)" #Set the variable confluenceUrl for Azure Pipeline using the page URL[⚠️ Внимание:] Чтобы использовать этот скрипт, измените следующее:
> $confluenceUrl — на URL вашего сайта Confluence. (строка 13)
YOURSPACEKEY — на ключ вашего пространства в Confluence. (строка 30)
YOUR_PARENT_ID — на ID родительской страницы, под которой нужно создать новую. (строка 30)
• Убедитесь, что Git установлен и доступен в пути, из которого запускается скрипт.
• Убедитесь, что у вас есть права на создание страниц в указанном пространстве Confluence.
• Если вы не используете Azure Pipeline, удалите строки, связанные с Write-Host "##vso[task.setvariable variable=confluenceUrl]$($pageObj.URL)", или измените их под свою среду выполнения.
В скрипте можно поэкспериментировать с содержимым страницы и набором данных, которые попадают в журнал изменений.
Шаг 6. Интеграция с Azure Pipelines.
Задача настроена на запуск в Azure Pipelines и выполняется только при определённых условиях, например при создании нового тега в репозитории. Переменные $USERNAME и $PASSWORD хранятся в секретах пайплайна и передаются при его запуске. Задача запускает наш скрипт.
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)'Добавьте эту задачу в свой пайплайн Azure. В результате у нас появилась страница с изменениями!
Итоги
Автоматизация журналов изменений с помощью Azure DevOps и Confluence упрощает документирование и поддерживает информацию в актуальном состоянии. Такой подход позволяет командам сосредоточиться на разработке и не тратить время на рутинное описание изменений.
В статье дан общий обзор процесса интеграции: она может стать отправной точкой для команд, которые хотят улучшить управление изменениями. Надеемся, она была вам полезна.
Желаем вам отличного настроения и интересных задач!