Тестирование программного обеспечения | Jenkins Create Pipeline
Тестирование программного обеспечения | Jenkins Create Pipeline

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

Введение и установка JenkinsPipeline

01

Любой, кто знаком с Jenkins, наверняка слышал о конвейере. Pipeline — это набор синтаксиса Groovy DSL, представленный Jenkins 2.0, который управляет и поддерживает задачи, которые изначально выполнялись независимо на нескольких заданиях или нескольких узлах в форме кода.

02

Для установки конвейера Jenkins рекомендуется использовать образ Docker. Поскольку Jenkins написан на Java, вам необходимо установить среду Java, настроить переменные среды и выполнить другие операции. Иногда вы можете столкнуться с проблемами несовместимости с версией jdk. Чтобы громоздкий процесс установки не ослабил наш энтузиазм к обучению, рекомендуется выполнять развертывание с использованием образов Docker. Шаги установки очень просты:

1

Извлеките изображение JenkinsBlueOcean.

Язык кода:txt
копировать
docker pull jenkinsci/blueocean

2

Создать каталог монтирования

Язык кода:txt
копировать
mkdir /var/jenkins_home

3

Запустить Дженкинса

Язык кода:txt
копировать
docker run -d -p 8888:8080 -p 50000:50000 -v jenkins:/var/jenkins_home –v /etc/localtime:/etc/localtime --name jenkinsci-blueocean -d jenkinsci/blueocean

Если вы воспользуетесь вышеуказанными шагами для установки Jenkins, после входа в систему вы увидите следующий значок на левой панели навигации страницы:

Если вы установили обычную версию Jenkins,Можно найти в【Manage Jenkins】——【ManagePlugins】Искать вBlueOceanУстановить,После установки вы также можете увидеть значок на картинке выше в боковой панели навигации основного интерфейса.

После завершения установки начинаем входить в тему и создавать Pipeline двумя разными способами.

Создание конвейера в классическом режиме

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

1. Войдите в Jenkins и нажмите «Создать» слева, чтобы создать новую задачу сборки.

2. Перейдите к следующему интерфейсу, введите имя задачи и информацию об ее описании, выберите параметр «Конвейер» и нажмите кнопку «ОК» ниже, чтобы создать задачу конвейера.

3. Перейдите на страницу настроек конвейера. Мы видим, что здесь есть четыре вкладки. Мы подробно представим каждую вкладку.

General

Общие сведения — некоторые базовые конфигурации Pipeline. Название, описание и некоторые основные настройки.

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

①.Проект GitHub

Исходный код этого конвейера размещен в Github. Выберите этот вариант, чтобы добавить адрес проекта в Github.

②.Preserve stashes from completed builds

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

③.Отменить старые сборки.

Здесь я настроил отмену сборок, сохраняя только историю сборок за последнюю неделю и не ограничивая количество сборок.

Создать триггер

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

Мой код размещен в gitlab, и я хочу автоматически запускать сборку при обновлении кода, поэтому я выбрал «Опрос SCM».

Расширенные параметры проекта

Это установка отображаемого имени проекта. Он не имеет специальной функции и не требует особого внимания.

сборочная линия

Эта часть является основной частью конвейера. На этом этапе мы начнем определять сборочную линию.

В определении «Сборочная линия» используется скрипт Groovy., есть два способа сохранить скрипты.,Первый — написать это прямо в проекте Jenkins.,Другой хранится в файле Jenkins в каталоге проектов репозитория кода.,В реальном проекте большинство сценариев хранятся в каталоге проекта.,Но это используется только тогда, когда количество проектов невелико. Если проекта слишком много,Jenkinsfile разбросан по различным проектам.,Также будет неудобно поддерживать,На данный момент вы можете создать каталог для централизованного сохранения файла Jenkins.,Легко найти и поддерживать.

Выберите способ определения сборочной линии

Я использовал [PipelinescriptfromSCM] и добавил только адрес хранилища кода и информацию о токене, оставив все остальное по умолчанию.

Конечно, прежде чем вы решите создать сборку таким способом. Прежде чем создать линию, вы должны разработать сборочную линии шагов и написал надежный файл Jenkinsfile.

Прежде чем писать Jenkinsfile, давайте познакомимся с некоторыми терминами.

● Agent:существоватьJenkinsв кластере,Агент эквивалентен подчиненной машине,Получайте и выполняйте задачи, назначенные главной машиной.

● Stage:Pipelineразные этапы в,Например: «строить»,“тест”и“развертывать”。

Ниже приведена программа, которую я написал【Подборка】——[Скомпилировать образ Docker]——【развертывать】——【тест】Линия, состоящая из этих этаповсборочная линия. Студенты, не знакомые с PipelineScript, могут сначала ознакомиться с грамматикой. Грамматика не является предметом рассмотрения в статье. В центре внимания на.

Язык кода:txt
копировать
pipeline {
  agent any  //agent Его необходимо поместить в определение верхнего уровня конвейера или, при необходимости, определить на этапе. Если он размещен на этапе, он будет использоваться на разных этапах.
  stages {  //Pipeline В основной части декларации декларируются различные этапы, такие как Сборка, развертывание, тестирование
    stage('Build') {  //фаза компиляции
      steps {
        sh 'pwd'
        git(url: 'https://xxx.xxx.xxx.xxx/xxxxxxxx/xxxxxxx', poll: true, credentialsId: '0000000-0000-0000-0000-000000000000') //Извлекаем код
        echo «Скомпилируйте, используя инструменты компиляции»  //компилируем
        archiveArtifacts(artifacts: 'testProject', onlyIfSuccessful: true)  //компилируемый Архив продуктов
      }
    }

    stage('Docker Build')  //компилируемdocker Файл изображения
            agent any
            steps {
                unstash 'test'
                sh "docker login"
                sh "docker build"
                sh "docker push "
                sh "docker rmi"
            }

        }
    stage('Deploy') { //этап развертывания
        agent {  //Специально объявите агент на этапе, и этап будет выполнен в объявленном агенте.
            docker {
                image 'image_name'
            }
        }
        steps { //этапы выполнения
            sh "mkdir -p ~/.kube"
            echo 'Добавить шаги развертывания для завершения развертывания '
            echo «Запустить сервис»
        }

    stage('Test') { //Этап тестирования
      steps {
        echo «Этап тестирования»
        git(url: 'https://xxx.xxx.xxx.xxx/xxxxxxxx/xxxxxxx', poll: true, credentialsId: '0000000-0000-0000-0000-000000000000')
        echo «Выполнить тестовый пример»
      }
    }

  }
  environment {  //Переменные среды, используйте ${variable в satge имя}, чтобы позвонить
    image_name = 'testProject'
    project_path = '../testProject'
    K8S_CONFIG = credentials('jenkins-k8s-config')
    GIT_TAG = sh(returnStdout: true,script: 'git describe --tags --always').trim()
  }
}

Таким образом можно определить конвейер: Создание конвейера в классическом Режим является наиболее широко используемым методом. Однако существует определенный порог для использования этого метода, то есть вы должны быть знакомы с правилами синтаксиса PipelineScript. Итак, если вы скажете, что я новичок и не имею языковой базы, могу ли я не говорить самостоятельно? конвейер Понятно?конечнонет,Второй метод, который будет представлен ниже,Вам не нужно писать код вручную,Дженкинс автоматически сгенерирует его для вас.

Использование плагина BlueOcean

Создать конвейер

Помните установленный в начале статьи плагин BlueOcean? Этот плагин предоставляет визуальный интерфейс,Вы можете взаимодействовать с Создать конвейер, значительно снижает порог использования. Давайте испытаем это ниже!

На домашней странице Jenkins нажмите «Открыть BlueOcean», чтобы войти в следующий интерфейс.

Нажмите «Создать новую сборочную линию», чтобы перейти на страницу создания.

Выберите хранилище кода,Заполните адрес и токен,Создать сборку линия。

После создания добавьте этапы и различные шаги в соответствии с вашими потребностями.

Визуализация Создать конвейер более «глупый»,Очень простой в эксплуатации,Я не буду здесь рассказывать об этом подробно.,Заинтересованные друзья могут попрактиковаться в этом сами.

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

Вышеупомянутое - Создать конвейердва пути,Друзья могут выбирать разные прически в соответствии со своими потребностями. Когда количество проектов относительно невелико,Может быть создан с помощью BlueOcean. Если проектов много или структура трубопровода сложна.,Использование этого метода будет очень медленным,И Jenkinsfile разбросан по различным каталогам проектов.,Неудобен в обслуживании,В настоящее время рекомендуется использовать классический режим для создания и обслуживания файла Jenkins, написав его самостоятельно.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose