Интеграция PowerShell в Jenkins для безшовной автоматизации

Если вы управляли серверами Windows в течение какого-то времени, то, несомненно, у вас накопилось много сценариев PowerShell для выполнения тех рутинных, но необходимых задач, которые вы регулярно выполняете, таких как сброс паролей, сбор данных журналов или архивирование резервных копий. Вы знали, что PowerShell в Jenkins – это вещь?

У вас могут быть сценарии, которые вы запускаете регулярно, возможно, даже установлено событие планировщика задач в попытке автоматизировать ваши сценарии PowerShell.

Есть лучший способ.

В этой статье вы узнаете, как установить Jenkins на Windows и запустить простой сценарий PowerShell. Вы узнаете, как установить Jenkins, настроить базовую безопасность, включить плагин PowerShell и запустить задачу для создания простого текстового файла с параметрами, которые мы введем.

Эта статья предназначена в качестве базового введения в Jenkins. Настройка, которую вы узнаете, не обязательно предназначена для производственных сред.

Предварительные требования

Большая часть этой статьи будет пошаговым руководством. Если вы собираетесь идти в ногу, убедитесь, что у вас есть несколько предварительных условий.

Требования для запуска Jenkins настолько минимальны, что любой современный компьютер может справиться. Приведенные в этой статье примеры будут основаны на Jenkins, работающем на:

  • Windows 10 Enterprise v.1903
  • PowerShell Core v6

Хотя Jenkins может запускаться на практически любой платформе, я сосредоточусь на Windows 10 Enterprise, чтобы упростить вещи.

Установка Jenkins

После выполнения предварительных требований давайте установим Jenkins.

Установка Jenkins проста и прямолинейна. Перейдите по ссылке https://www.jenkins.io/download/ и загрузите версию с долгосрочной поддержкой (LTS). Доступны две версии: версия LTS и “Еженедельная” версия. “Еженедельная” версия регулярно обновляется и может быть нестабильной. В этой статье мы используем версию LTS. Это самая стабильная версия.

Как видно на скриншоте ниже, есть несколько вариантов для выбора. Выберите версию для Windows, чтобы начать загрузку.

Installing the Windows package for Jenkins

После загрузки установщика извлеките файл из zip-архива и запустите установщик, принимая все значения по умолчанию. Установка проста.

После завершения установки Jenkins откроет браузер с Getting Started страницей. На этой странице будет начальный пароль администратора, необходимый для разблокировки Jenkins и продолжения конфигурации. Как видно ниже, Jenkins говорит мне прочитать текстовый файл по адресу C:\Program Files (x86)\Jenkins\secrets\initialAdminPassword.

Providing the administrator password for Jenkins

Перейдите к указанному файлу, откройте его, скопируйте отображенный пароль и используйте его в качестве пароля администратора на странице Getting Started.

Установка плагинов

После входа в систему впервые, Jenkins завершит окончательную настройку и затем спросит, какие плагины установить. Есть несколько вариантов, как вы можете видеть на скриншоте.

Выбор Установить предложенные плагины установит рекомендуемый набор плагинов на основе наиболее распространенных сценариев использования. Сюда входят плагины для поставщиков аутентификации, взаимодействия с GitHub и расширений Java. Выбрать плагин для установки позволяет установить только те, которые нужны, из списка всех доступных плагинов.

Выделите Установить предложенные плагины и нажмите ОК. Этот процесс займет несколько минут для установки начальных плагинов, поэтому сейчас идеальное время, чтобы взять себе чашку кофе.

Installing plugins in Jenkins

Создание учетной записи администратора

После установки плагинов следующим шагом является создание нашего первого пользователя. Этот первый пользователь является администратором для Jenkins и будет иметь глобальные разрешения, подобно администратору предприятия для сервера Windows. Вы можете видеть ниже, как будет выглядеть страница Создать первого пользователя-администратора.

Creating a Jenkins admin user

С этого момента интерфейс Jenkins доступен только при вводе действительного имени пользователя и пароля.

Настройка URL администратора Jenkins

Последний шаг – настроить URL для запуска службы Jenkins. Этот URL является интерфейсом для управления программой Jenkins и в идеале должен быть установлен как полное доменное имя (FQDN). Установка его как FQDN позволит удаленный доступ, подобно веб-сайту. Для этой статьи и для сохранения простоты, примите URL по умолчанию.

The Jenkins URL

Настройка безопасности

После завершения установки давайте настроим аутентификацию. Перейдите на главную панель управления, если она еще не открыта. На главной панели управления нажмите на Управление Jenkins, затем на Настроить глобальную безопасность, чтобы открыть настройки безопасности, как показано ниже.

Setting Global Security options

На странице Настроить глобальную безопасность вы увидите несколько вариантов для выбора. Для этой статьи мы собираемся использовать собственную базу данных пользователей Jenkins, чтобы все было просто. Также хорошей идеей будет снять флажок “Разрешить пользователям регистрироваться”, как показано ниже. Если он оставлен установленным, любому пользователю будет разрешено создавать учетную запись и получать доступ к Jenkins. .

Просмотрите скриншот ниже, чтобы увидеть другие варианты аутентификации.

  • Доверить сервлетному контейнеру – это используется, если у вас уже настроены контейнеры Docker с Jenkins и позволяет аутентифицироваться через контейнер.
  • LDAP – этот вариант используется, когда у вас уже есть каталог Active Directory, который вы хотите использовать для аутентификации.

Затем выберите вариант Зарегистрированные пользователи могут делать все. В этом режиме каждый зарегистрированный пользователь будет иметь полный контроль над Jenkins. Это может быть не самая хорошая идея для продакшена, так как это позволяет любому пользователю вносить изменения в настройки.

Configuring global security

Включение плагина PowerShell в Jenkins

После базовой настройки безопасности настало время настроить плагин PowerShell в Jenkins. Чтобы установить плагин PowerShell, перейдите на главную панель управления, нажмите Управление Jenkins, а затем Управление плагинами, как показано ниже.

Installing the PowerShell plugin

Есть сотни плагинов, поэтому лучший способ найти плагин PowerShell – это найти его. В строке фильтра введите “PowerShell” и выберите его из списка. Установите флажок, как показано ниже, чтобы включить его. Это позволит Jenkins напрямую записывать команды и сценарии PowerShell в текстовые поля внутри Jenkins, а также вызывать PowerShell без необходимости запуска отдельной консоли PowerShell.

Вы можете видеть ниже, как это может выглядеть.

Finding the PowerShell plugin

С включенным плагином Jenkins готов к выполнению задач PowerShell.

Создание задачи PowerShell в Jenkins

Установка плагина PowerShell в Jenkins завершена. Теперь пришло время для увлекательных моментов. Давайте создадим задачу.

В Jenkins задача определяется как серия задач для выполнения. Обычный сценарий – это задача, которая начнет компиляцию программы, когда разработчик внесет изменения в код. Очень похоже на Диспетчер задач в сервере Windows.

Задача, которую мы собираемся настроить, будет проверять каталог c:\temp и вставлять текстовый файл в этот каталог с пользовательским сообщением.

У Jenkins есть разные типы проектов, иногда называемых конвейерами, которые ориентированы на конкретные цели. Разные типы проектов имеют разные настройки, параметры и параметры в зависимости от выбранного типа проекта. Больше информации о типах проектов и о том, когда их использовать, можно найти на сайте Jenkins.

На главной панели управления щелкните Новый элемент. Для имени задания введите создание текстового файла. Это произвольно, но рекомендуется давать ему осмысленное название.

В этой статье мы собираемся использовать Проект Freestyle. Это предлагает наибольшую гибкость для создания нашего задания. Выделите Проект Freestyle и прокрутите вниз, затем нажмите OK.

Creating a Jenkins project

Это задание будет параметризованным проектом. Это означает, что мы можем запрашивать у пользователей ввод, и этот ввод будет передаваться заданию. Например, предположим, у нас есть задание PowerShell в Jenkins, которое копирует файлы журналов в определенный каталог. Мы можем добавить запрос к заданию, который будет спрашивать имя файла для включения в сборку при запуске задания.

Отметьте Этот проект параметризован в выпадающем списке. Нажмите на выпадающее меню Добавить параметр и выберите Строковый параметр. Строковый параметр – это место, где вы вводите сообщение, которое хотите включить в текстовый файл.

Creating a parameterized Jenkins job

Затем добавьте второй Параметр выбора. Он должен выглядеть так, как показано на скриншоте ниже. Этот параметр предоставит пользователю возможность выбрать элемент из выпадающего списка.

Adding parameters to the project

Настройки задания теперь должны выглядеть примерно так, как на скриншоте ниже.

Final job

Прокрутите вниз до раздела Build. Нажмите на маленькую стрелку и выберите Windows PowerShell. Это позволит Jenkins знать, что мы запускаем сценарий PowerShell. Здесь же мы вводим сценарий PowerShell. Эта задача теперь готова. Нажмите «Сохранить».

Windows PowerShell option

Для примера сценария для нашей задачи PowerShell в Jenkins давайте создадим файл во временном каталоге и добавим простое сообщение.

Это простой сценарий, который создаст временный каталог в корне, если его там еще нет, и создаст текстовый файл в этом каталоге.

# Создание временного каталога
if (-not(Test-Path -Path 'C:\temp'))
{
    New-Item -Path 'C:\temp' -ItemType directory
}

# Использование переменных среды, предоставленных заданием Jenkins 
Set-Content -Path "C:\temp\$($env:Filename).txt" -Value $env:Message

СОВЕТ: Напишите свой сценарий сначала в VSCode или другом редакторе, а затем вставьте его в поле.

Запуск сценария PowerShell в задаче Jenkins

Наконец, вы готовы выполнить свою первую задачу. Вернитесь на главную панель и вы увидите, что задача Create Text File перечислена на главной панели. См. ниже.

Our new Jenkins job

Нажмите на значок часов справа и откройте форму задачи.

Setting parameters on Jenkins job

В поле сообщения введите текст, который вы хотите вставить в текстовый файл, и нажмите «Создать». Как только сборка будет завершена, щелкните на вывод консоли. Вывод консоли показывает состояние задачи и успешно ли было выполнено задание.

Console output from job

Теперь все, что остается сделать, это открыть файловый менеджер и проверить файл. Перейдите во временный каталог и откройте текстовый файл. В нем будет такой же текст, какой вы ввели в поле сообщения сборки.

Final outcome of Jenkins job

Сводка

Теперь у вас есть базовое понимание PowerShell в Jenkins. Это мощный инструмент, который можно использовать для управления вашими сценариями PowerShell и автоматизации всех процессов!

Source:
https://adamtheautomator.com/jenkins-powershell/