Сохраните комплект мероприятия для скачивания

JenkinsBeginner
Практиковаться сейчас

Введение

Walk Weekender готовит материалы для посетителей вымышленного мероприятия на берегу реки. В комплект входят небольшой сайт, иллюстрация маршрута, CSV-файл остановок и памятка для посетителей. В Jenkins уже есть работающее средство сборки комплекта, но после каждого запуска его временный рабочий каталог очищается. Ваша задача — сохранить полный результат, связанный со своей сборкой и доступный для скачивания.

Для этой лабораторной работы предполагаются базовые навыки навигации в Jenkins, умение распознать короткий Declarative Pipeline и базовые навыки работы с файлами, включая распаковку ZIP. Архивирование, отпечатки файлов и жизненный цикл рабочего каталога объясняются до их использования. Вам не нужно писать сайт, устанавливать ПО или знать Java.

Используйте Pack Desk, чтобы ознакомиться с эталонными материалами для посетителей, а Jenkins — для сборок и настройки. Это два сервиса в одной подготовленной виртуальной машине. Файлы, скачанные через браузер, сохраняются на вашем компьютере, отдельно от файлов Jenkins в учебной виртуальной машине. Каждый учебный модуль начинается независимо от других. Продолжительность — авторская оценка, включающая чтение и обычные ошибки; её не проверяли на начинающих.

Выясните, куда попадают созданные файлы

На этом шаге вы изучите ожидаемые материалы для посетителей, запустите исходное задание и увидите, почему успешная сборка не оставляет автоматически комплект для скачивания. Начните в Pack Desk.

Заказ относится к Riverwalk Saturday, версия для посетителей RW-02. В разделе Reference visitor pack выберите Open the reference pack. Эталон показывает, как посетитель должен пользоваться материалами; вашим результатом будет ZIP, сохранённый вашей собственной сборкой Jenkins.

Выберите Explore the route. На маршруте три пронумерованные остановки: Garden gate, Willow bridge и Orchard yard. Выберите Download all route stops и откройте сохранённый CSV в привычной программе просмотра текста или электронных таблиц. CSV — текстовый формат, в котором поля разделены запятыми; первая строка задаёт названия столбцов. Начало файла:

order,stop_id,name,map_x,map_y,visitor_note
1,gate,Garden gate,150,340,Meet beside the blue gate.

Выберите Read the visitor notes и прочитайте скачанный текстовый файл. Подтверждённое время встречи — 10:00. Эти файлы, работающие страницы и изображение маршрута составляют единое целое. Скачивание файла не меняет страницу. Дважды используйте действие браузера Back, чтобы со страницы маршрута вернуться через обзор комплекта к странице Pack Desk.

Переключитесь на вкладку Jenkins. Откройте create-riverwalk-pack и выберите Build with Parameters. Дождитесь полной загрузки формы параметров. Оставьте EDITION равным river-v2 и выберите Build. Этот параметр выбирает подготовленную версию для посетителей; предоставленная программа создаёт её настоящий ZIP.

Дождитесь завершения сборки с её номером. Откройте эту сборку в разделе Builds, затем выберите Console Output. Найдите следующие строки:

Prepared visitor edition: Riverwalk Saturday / RW-02
Complete event-pack.zip created.
...
Finished: SUCCESS

Программа действительно создала комплект. Ниже в журнале Pipeline, в заключительных действиях после этапов, найдите [Pipeline] deleteDir. Предоставленная очистка удаляет файлы рабочего каталога этого запуска после завершения его этапов.

Рабочий каталог — каталог, который Jenkins выделяет для выполнения задания. Сборка может создавать в нём файлы, а затем удалять их. SUCCESS описывает результат запуска; это не означает, что Jenkins автоматически сохранил каждый созданный файл.

Вернитесь на страницу статуса этой сборки с её номером по ссылке в навигационной цепочке. Для этого исходного запуска нет скачиваемого артефакта event-pack.zip. Задание создало файлы, а затем удалило их, не сохранив предварительно архив. Оставьте эту сборку в истории, чтобы сравнить её со следующим запуском.

Сохраните архив перед очисткой

На этом шаге вы сохраните полный ZIP для посетителей, оставите очистку рабочего каталога и воспользуетесь скачанными файлами. Начните со страницы задания create-riverwalk-pack в Jenkins.

Выберите Configure, затем раздел Pipeline. Его редактор Script содержит предоставленные этапы сборки и блок post. Секция always в этом блоке выполняется после этапов, в том числе при неуспешном запуске. Операция deleteDir() в ней очищает выделенный рабочий каталог; сохраните эту очистку.

archiveArtifacts копирует выбранные файлы рабочего каталога в сохраняемые артефакты сборки до очистки. Настройка artifacts задаёт имя файла или шаблон относительно этого рабочего каталога. Одинарные кавычки вокруг 'event-pack.zip' обозначают строку. fingerprint: true также записывает идентификатор использования файла в Jenkins, который поможет проследить этот ZIP между заданиями в следующей лабораторной работе с пошаговыми инструкциями. Отпечаток фиксирует идентичность и использование файла; он не является подписью издателя.

Двоеточие отделяет каждую настройку от её значения, а запятая разделяет настройки. Добавьте этап Archive pack после Build pack, внутри stages. Сохраните параметр, команду сборки и очистку. Чтобы вставить полный готовый вариант, щёлкните внутри Script, выделите всё содержимое сочетанием Ctrl+A в Windows/Linux или Command+A в macOS и замените его следующим:

pipeline {
    agent any
    parameters {
        choice(name: 'EDITION', choices: ['river-v2'], description: 'Visitor edition to prepare')
    }
    stages {
        stage('Prepare workspace') {
            steps { deleteDir() }
        }
        stage('Build pack') {
            steps { sh 'sh /var/jenkins_home/walk-pack-fixtures/build-pack.sh' }
        }
        stage('Archive pack') {
            steps {
                archiveArtifacts artifacts: 'event-pack.zip', fingerprint: true
            }
        }
    }
    post {
        always { deleteDir() }
    }
}

Выберите Save. Снова запустите Build with Parameters. Дождитесь полной загрузки формы параметров, оставьте EDITION равным river-v2 и выберите Build. Дождитесь успешного завершения этой новой сборки с отдельным номером. В её консоли должны отображаться Archiving artifacts, Recording fingerprints и заключительная очистка.

Откройте страницу статуса новой сборки и найдите Build Artifacts. Скачайте event-pack.zip. Jenkins сохранил этот ZIP как часть данной сборки, хотя рабочий каталог был очищен.

Распакуйте весь ZIP в новую папку с помощью архиватора на вашем компьютере. Откройте index.html из этой распакованной папки в браузере. Держите все восемь файлов вместе:

index.html
route.html
styles.css
route-map.png
stops.csv
visitor-notes.txt
event.json
build.json

Убедитесь, что указаны Riverwalk Saturday, версия RW-02 и время встречи 10:00. Перейдите по Explore the route, изучите все три остановки, скачайте CSV маршрута и выберите Read the visitor notes, чтобы прочитать локальный текстовый файл. В зависимости от браузера этот текстовый файл может открыться прямо на странице вместо повторного скачивания; он уже включён в распакованную папку. Изображение и ссылки используют локальные файлы, поэтому этим комплектом для посетителей можно пользоваться независимо от учебной виртуальной машины.

Комплект для посетителей с подтверждённым временем встречи и настоящей иллюстрацией маршрута

Если на распакованной странице отсутствуют оформление или изображение, проверьте, что вы распаковали весь ZIP и открыли index.html рядом со styles.css и route-map.png. Если открыть только HTML-файл внутри программы просмотра ZIP, он может оказаться отделён от своих ресурсов. Распакуйте исходный скачанный архив в новую папку вместо пересоздания файлов.

Если Jenkins сообщает о синтаксической ошибке Groovy, вернитесь в Configure, восстановите полный скрипт выше, выберите Save и снова запустите river-v2. Сохраните фигурные скобки и одинарные кавычки. Если вы изменили скрипт до первого исходного запуска, временно удалите только Archive pack, сохраните и выполните один запуск; затем восстановите полный скрипт и запустите его снова.

Итоговый результат должен быть получен из текущего сохранённого Pipeline. После любого дальнейшего изменения запустите его снова. Сохраните предыдущие сборки и предоставленные файлы комплекта. Эта учебная виртуальная машина временная; по завершении лабораторной работы оставьте у себя скачанную копию.

Резюме

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