Руководство. Использование служба хранилища Azure для артефактов сборки
Важно!
Многие службы Azure используют подключаемые модули Jenkins. Поддержка некоторых таких подключаемых модулей будет прекращена 29 февраля 2024 г. В настоящее время для интеграции Jenkins со службами Azure рекомендуется использовать Azure CLI. Дополнительные сведения см. в статье Подключаемые модули Jenkins для Azure.
В этой статье демонстрируется использование хранилища BLOB-объектов в качестве репозитория для артефактов сборки, созданных решением непрерывной интеграции Jenkins, или в качестве источника скачиваемых файлов для процесса сборки. Одним из сценариев, где это может оказаться полезным, является программирование в гибкой среде разработки (с помощью Java или других языков), сборка выполняется на основе непрерывной интеграции, и вам требуется репозиторий для артефактов построения, чтобы можно было, например, использовать их совместно с другими членами организации, вашими клиентами или вести архив. Еще один сценарий связан с ситуацией, когда задание построения само требует других файлов, например, зависимостей для загрузки в качестве входа построения.
Необходимые компоненты
- Подписка Azure. Если у вас нет подписки Azure, создайте бесплатную учетную запись Azure перед началом работы.
- Сервер Jenkins: если у вас нет сервера Jenkins, создайте сервер Jenkins в Azure.
- Azure CLI: установите Azure CLI (версия 2.0.67 или более поздней версии) на сервере Jenkins.
- Учетная запись хранения Azure: если у вас еще нет учетной записи хранения, создайте учетную запись служба хранилища.
Для выполнения Azure CLI требуются учетные данные Azure.
Перейдите на портал Jenkins.
В меню выберите пункт Manage Jenkins (Управление Jenkins).
Выберите элемент Manage Credentials (Управление учетными данными).
Выберите глобальный домен.
Щелкните Добавление учетных данных.
Заполните обязательные поля:
- Тип: выберите имя пользователя с паролем.
- Имя пользователя: укажите
appId
субъект-службу. - Пароль. Укажите
password
субъект-службу. - Идентификатор: укажите идентификатор учетных данных, например
azuresp
. - Описание. При необходимости включите понятное описание среды.
Нажмите кнопку ОК, чтобы создать учетные данные.
Создание задания конвейера для отправки артефактов сборки
Ниже приведены пошаговые инструкции по созданию задания конвейера. В рамках задания конвейера создается несколько файлов, затем они отправляются в учетную запись хранения с помощью Azure CLI.
На панели мониторинга Jenkins выберите элемент New Item (Новый элемент).
Присвойте заданию имя myjob, выберите элемент Pipeline (Конвейер) и нажмите кнопку ОК.
В разделе Pipeline (Конвейер) в конфигурации задания выберите элемент Pipeline script (Скрипт конвейера) и вставьте приведенный ниже текст в поле Script (Скрипт). Измените заполнители, используя значения для своей среды.
pipeline { agent any environment { AZURE_SUBSCRIPTION_ID='99999999-9999-9999-9999-999999999999' AZURE_TENANT_ID='99999999-9999-9999-9999-999999999999' AZURE_STORAGE_ACCOUNT='myStorageAccount' } stages { stage('Build') { steps { sh 'rm -rf *' sh 'mkdir text' sh 'echo Hello Azure Storage from Jenkins > ./text/hello.txt' sh 'date > ./text/date.txt' } post { success { withCredentials([usernamePassword(credentialsId: 'azuresp', passwordVariable: 'AZURE_CLIENT_SECRET', usernameVariable: 'AZURE_CLIENT_ID')]) { sh ''' echo $container_name # Login to Azure with ServicePrincipal az login --service-principal -u $AZURE_CLIENT_ID -p $AZURE_CLIENT_SECRET -t $AZURE_TENANT_ID # Set default subscription az account set --subscription $AZURE_SUBSCRIPTION_ID # Execute upload to Azure az storage container create --account-name $AZURE_STORAGE_ACCOUNT --name $JOB_NAME --auth-mode login az storage blob upload-batch --destination ${JOB_NAME} --source ./text --account-name $AZURE_STORAGE_ACCOUNT # Logout from Azure az logout ''' } } } } } }
Выберите элемент Build Now (Выполнить сборку), чтобы запустить myjob.
Изучите выходные данные в консоли для определения состояния. Когда с помощью действия после сборки отправляются артефакты сборки, сообщения о состоянии для службы хранилища Azure записываются в консоль.
Если возникла ошибка, аналогичная следующей, это означает, что необходимо предоставить доступ на уровне контейнера:
ValidationError: You do not have the required permissions needed to perform this operation.
если вы получите это сообщение об ошибке, ознакомьтесь со следующими статьями, чтобы устранить следующее:После успешного завершения задания можно просмотреть артефакты сборки, открыв общедоступный большой двоичный объект:
- Войдите на портал Azure.
- Выберите Хранилище.
- Щелкните имя учетной записи хранения, используемой для решения Jenkins.
- Выберите Контейнеры.
- Выберите контейнер с именем myjobв списке больших двоичных объектов.
- Должна отобразиться два файла: hello.txt и date.txt.
- Скопируйте URL-адрес любого из них и откройте его в браузере.
- Отобразится текстовый файл, который был загружен в качестве артефакта сборки.
Основные моменты:
- Имена контейнеров и BLOB-объектов в хранилище Azure отображаются строчными буквами (и с учетом регистра).
Создание задания конвейера для скачивания элементов из Хранилища BLOB-объектов Azure
В следующих шагах показано, как настроить задание конвейера для скачивания элементов из Хранилища BLOB-объектов Azure.
В разделе Pipeline (Конвейер) в конфигурации задания выберите элемент Pipeline script (Скрипт конвейера) и вставьте приведенный ниже текст в поле Script (Скрипт). Измените заполнители, используя значения для своей среды.
pipeline { agent any environment { AZURE_SUBSCRIPTION_ID='99999999-9999-9999-9999-999999999999' AZURE_TENANT_ID='99999999-9999-9999-9999-999999999999' AZURE_STORAGE_ACCOUNT='myStorageAccount' } stages { stage('Build') { steps { withCredentials([usernamePassword(credentialsId: 'azuresp', passwordVariable: 'AZURE_CLIENT_SECRET', usernameVariable: 'AZURE_CLIENT_ID')]) { sh ''' # Login to Azure with ServicePrincipal az login --service-principal -u $AZURE_CLIENT_ID -p $AZURE_CLIENT_SECRET -t $AZURE_TENANT_ID # Set default subscription az account set --subscription $AZURE_SUBSCRIPTION_ID # Execute upload to Azure az storage blob download --account-name $AZURE_STORAGE_ACCOUNT --container-name myjob --name hello.txt --file ${WORKSPACE}/hello.txt --auth-mode login # Logout from Azure az logout ''' } } } } }
После сборки проверьте выходные данные консоли журнала сборки. Кроме того, можно просмотреть расположение для скачивания, чтобы узнать, были ли успешно скачаны нужные большие двоичные объекты.