Подробный процесс развертывания среды автоматизированного тестирования интерфейса/UI на основе Jenkins+Python+Ubuntu+Docker.
Подробный процесс развертывания среды автоматизированного тестирования интерфейса/UI на основе Jenkins+Python+Ubuntu+Docker.

1 Что такое Дженкинс?

  • Официальный сайт исследования:Официальный сайт Дженкинса,Официальный сайт Jenkins в Китае
  • JenkinsЭто открытый исходный код CI&CD Программное обеспечение для автоматизации различных задач, включая сборку, тестирование и развертывание программного обеспечения;
  • использоватьJavaнаписано на языке,Доступно наTomcatDockerЗапуск в популярных контейнерах,Также может запускаться независимо.

С точки зрения непрофессионала, например, процесс компиляции, упаковки, загрузки и развертывания в Tomcat передается Jenkins. Jenkins переносит код на свой «хост-сервер» (установка Jenkins) через заданный URL-адрес кода (адрес хранилища кода). ). location), скомпилируйте, упакуйте и опубликуйте в контейнере Tomcat.

2 Какова цель Дженкинса?

  • Непрерывно и автоматически создавайте программные проекты или Автоматизированное тестированиепроект;
  • Помогите быстро обнаружить проблемы и повысить эффективность разработки;
  • Автоматизированное Обучение может помочь повысить эффективность тестирования.

3 Что такое CI/CD?

3.1 Непрерывная интеграция CI

  • CI:Прямо сейчасContinuous integrationпродолжениеинтегрированный;
  • Подчеркнув, что разработчик представил новый,Немедленно соберите и (юнит) протестируйте. По результатам испытаний,Мы можем определить, правильно ли интегрирован новый и исходный код;
  • Команде необходимо готовиться к каждой новой функции、улучшение кода、Или исправление проблемы для создания варианта использования «Автоматизированное обучение»;
  • нужен одинпродолжениеинтегрированныйсервер,Он может отслеживать отправку кода,Автоматизированное тестирование с каждой новой подачей;
  • Отправьте как можно быстрее;
  • Следующие изображения взяты из Интернета и могут помочь в понимании и предназначены только для справки:
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения
  • Преимущества:

① Получите результаты регрессионного тестирования заранее, чтобы избежать проблем при входе в производственную среду; ② Будет легче публиковать и компилировать;

③ Уменьшить переключение рабочих задач, быстро получать новости о сбое сборки и быстро решать проблему;

④ Значительно сокращаются затраты на тестирование, включая временные и трудовые затраты;

⑤ Экономьте время команды контроля качества и сосредоточьтесь на построении культуры качества.

3.2 Непрерывное развертывание компакт-диска

  • CD:Прямо сейчасcontinuous deploymentпродолжениеразвертывать;
  • Быстро доставляйте высококачественные продукты посредством автоматизированных циклов сборки, тестирования и развертывания;
  • Команда должна иметь полную концепцию тестирования;
  • Модульное тестирование особенно важно;
  • Документация и частота развертывания должны быть согласованными;
  • Преимущества:

① Частота быстрого выпуска; ② Риск снижается, и проблему можно быстро устранить; ③ Клиенты могут быстро увидеть результаты доставки продукта.

3.3 Непрерывная доставка компакт-диска

  • CD:Прямо сейчасContinuous Deliveryпродолжениедоставлять;
  • Это позволяет завершить процесс производства программных продуктов за короткий цикл, чтобы обеспечить стабильное и непрерывное поддержание программного обеспечения в состоянии, которое может быть выпущено в любое время;
  • существоватьпродолжениеинтегрированныйна основе,Разверните интегрированный код в более реалистичной операционной среде (производственной среде);
  • Цель состоит в том, чтобы ускорить и чаще создавать, тестировать и выпускать программное обеспечение;
  • нужен сильныйпродолжениеинтегрированныйкомпоненты и достаточное количество тестовых предметов, чтобыкудовлетворитькодпотребности;
  • Развертывание необходимо автоматизировать;
  • Следующие изображения взяты из Интернета и предназначены только для справки:
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения

4 среда Ubuntu

4.1 Экологические требования

  • Моя среда:

Установите виртуальную машину Hyper-V на операционную систему Windows 10, затем установите на виртуальную машину операционную систему Ubuntu и запустите автоматические тесты на Ubuntu;

Язык кода:python
кодКоличество запусков:0
копировать
# Наша среда:
1. Сервер Linux (у меня Ubuntu) на виртуальной машине, хаха
2. Правильно установите докер на сервер
3. Извлеките изображение Дженкинса: jenkins/jenkins:lts.
4. Извлеките образ python3: docker pull python:3.7

4.2 Идеи реализации

1. Установите докер на Linux-сервер; 2. Создайте контейнер Дженкинса;

3. Создайте образ Python на основе пакета зависимостей проекта автоматизации (создайте автоматизированную среду Python);

4. Запустите новый контейнер Python и выполните проект автоматизации, который Дженкинс извлек из хранилища.

5. Удалите контейнер после завершения выполнения.

5. Установите Docker под Ubuntu

6. Установите Дженкинс

6.1 Извлеките изображение Дженкинса

  • делатьиспользоватьdockerтянутьJenkinsзеркало:
Язык кода:python
кодКоличество запусков:0
копировать
docker pull jenkins/jenkins:lts
Вставьте сюда описание изображения
Вставьте сюда описание изображения
Вставьте сюда описание изображения
Вставьте сюда описание изображения

6.2 Запуск Дженкинса

Язык кода:python
кодКоличество запусков:0
копировать
docker run 
-dit 
--name=jenkins
-p 8080:8080 
-u=root 
-v /var/run/docker.sock:/var/run/docker.sock 
-v /usr/bin/docker:/usr/bin/docker 
jenkins/jenkins:lts
  • Описание параметра:
Язык кода:python
кодКоличество запусков:0
копировать
Описание параметра
-i: указывает на запуск контейнера
-t: указывает, что контейнер введет свою командную строку после запуска.
-d: создать контейнер в режиме демона и запустить его в фоновом режиме.
--name: имя контейнера
-p 8080:8080: сопоставление портов, порт хоста: порт контейнера Дженкинса
-u=root: указать пользователя контейнера в качестве пользователя root.
-v /var/run/docker.sock:/var/run/docker.sock: сопоставьте docker.sock с контейнером jenkins.
Файл docker.sock — это докер. клиент и докер файлы связи демона
-v /usr/bin/docker:/usr/bin/docker: сопоставляет клиент Docker хоста с контейнером jenkins.
Вставьте сюда описание изображения
Вставьте сюда описание изображения

6.3 Изменение разрешений Дженкинса

  • еслиdockerУстановитьjenkinsЗапустить не удалось;
  • Просмотр журнала показывает, что разрешений недостаточно:
Язык кода:python
кодКоличество запусков:0
копировать
docker logs jenkin
  • Затем измените указанный выше каталог/var/jenkins_homeразрешения:
Язык кода:python
кодКоличество запусков:0
копировать
chown -R 1000 /var/jenkins_home 
  • Или при запуске контейнера,кrootЗапустить с разрешения,добавлять-u=root
  • Просто введите адрес: 8080 в браузере:
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения

7. Начальная конфигурация Дженкинса

7.1 Просмотр журналов контейнера

Язык кода:python
кодКоличество запусков:0
копировать
docker logs jenkins
Вставьте сюда описание изображения
Вставьте сюда описание изображения
  • к Это нашеjenkinsпароль,копировать Разблокировать после Прямо сейчас Может;
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения

7.2 Выбор плагина

  • Войдите на следующую страницу:
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения
  • Плагин будет установлен следующим образом. Если появится сообщение об ошибке, просто нажмите «Повторить»:
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения

7.3 Создание пользователя-администратора

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

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

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

  • Когда мы раньше устанавливали плагин,,Выберите установку плагина по умолчанию,ТакgitПлагин уже есть Установитьхорошо,Может从к Посмотрите изображение ниже:
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения
  • Нажмите【install plugins】Можетк Посмотреть уже Установитьплагин:
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения
  • Нажмите【available plugins】Вы можете загрузить нужные вам плагины,здесь я Установить Внизgitee
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения

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

  • Искать следующим образомdockerУстановить Прямо сейчас Может:
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения
  • После установки это выглядит следующим образом:
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения

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

  • Ищите следующим образом:
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения

7.4.4 Установка плагина расширения электронной почты

  • Как показано ниже:
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения

7.4.5 JDK, Maven, плагин SSH (необязательно)

  • УстановитьJDK
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения
  • Введите номер вашего счета и пароль:
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения
  • Установитьmaven
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения
  • КонфигурацияSSH
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения
  • Задайте хост и порт и нажмите [Добавить]:
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения
  • Если при добавлении нет ответа, нажмите имя пользователя в правом верхнем углу, чтобы добавить его:
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения
  • Вы можете попробовать сами, чтобы убедиться, что все в порядке.

После выполнения вышеуказанных шагов,Установить Перезагрузить после завершенияjenkinsконтейнер

Язык кода:python
кодКоличество запусков:0
копировать
docker restart jenkins
Вставьте сюда описание изображения
Вставьте сюда описание изображения

8 Подробная конфигурация Дженкинса

8.1 Создать новую задачу

  • Войдите сноваjenkins,точкаNew ItemКак показано на картинке:
Вставьте сюда описание изображения
Вставьте сюда описание изображения
  • Введите название проекта и выберите способ строительства по своему проекту. Здесь я выберу первый (создать проект в свободном стиле):
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения

8.2 Задачи настройки

8.2.1 Настройка правил хранения записей сборки

  • существоватьGeneralв опциях,Настройки следующие:
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения

8.2.2 Конфигурация хранилища Git

  • Введите адрес, учетную запись и пароль git-склада:
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения

8.2.3 Настройка операций после сборки

  • Добавить модуль действий после сборки,linuxВыбрать следующийshell:
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения
  • Настройте работающий скрипт:
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения
  • КонфигурацияjenkinsПуть к отчету о тестировании, показанный на:
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения
  • Настройте триггеры электронной почты:
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения
  • После выполнения вышеуказанных действий сохраните его.

8.3 Настройка электронной почты

  • jenkinsуправлять-система Конфигурация-Jenkins Location。существоватьсистемауправлятьадрес электронной почты сотрудников,Введите соответствующий адрес электронной почты:
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения
  • jenkinsуправлять-система Конфигурация-Extended E-mail Notification,Заполните соответствующиеsmtpКонтент, связанный с сервером,Нажмите «Дополнительно».,Введите соответствующий адрес электронной почты иsmtpКод авторизации входа,Проверятьssl
Вставьте сюда описание изображения
Вставьте сюда описание изображения
Вставьте сюда описание изображения
Вставьте сюда описание изображения
  • Настройте триггеры электронной почты:jenkinsуправлять-система Конфигурация-Default Triggers,По умолчанию оно будет отправлено только в том случае, если проверка не пройдена.,Можно настроить на постоянную отправку (или проверку в зависимости от потребностей),Таккаждый разбегатьпроект Письма будут отправляться каждый раз。
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения

9. Создайте образ Python

9.1 Экспорт пакетов зависимостей

  • Создайте образ Python со средой выполнения проекта;
  • существоватьместныйPythonбегать环境中Воляпроект Экспортировать зависимые пакетыприезжатьrequirements.txtв файле;
Язык кода:python
кодКоличество запусков:0
копировать
pip freeze > requirements.txt
  • Моя заключается в следующем:
Язык кода:python
кодКоличество запусков:0
копировать
adbutils==0.11.0
alembic==1.6.5
allure-pytest==2.8.12
allure-python-commons==2.8.12
altgraph==0.17.2
amqp==5.0.6
anyjson==0.3.3
apipkg==1.5
apkutils2==1.0.0
Appium-Python-Client==0.50
asgiref==3.3.1
atomicwrites==1.4.0
attrs==20.3.0
BeautifulReport==0.1.3
beautifulsoup4==4.9.3
billiard==3.6.4.0
blinker==1.4
cached-property==1.5.2
celery==5.0.5
certifi==2020.12.5
cffi==1.14.5
chardet==3.0.4
cigam==0.0.3
click==7.1.2
click-didyoumean==0.0.3
click-plugins==1.1.1
click-repl==0.2.0
colorama==0.4.4
comtypes==1.1.8
configparser==5.0.2
coreapi==2.3.3
coreschema==0.0.4
coverage==5.5
cryptography==3.2.1
cycler==0.10.0
DataRecorder==3.2.2
ddt==1.4.2
decorator==5.0.9
defusedxml==0.7.1
Deprecated==1.2.12
deprecation==2.1.0
diff-match-patch==20200713
Django==2.2.16
django-bootstrap==0.2.4
django-bootstrap3==15.0.0
django-bootstrap4==2.3.1
django-celery==3.3.1
django-celery-beat==2.2.0
django-ckeditor==6.1.0
django-cors-headers==3.7.0
django-crispy-forms==1.12.0
django-crontab==0.7.1
django-filter==2.4.0
django-haystack==3.0
django-import-export==2.5.0
django-js-asset==1.2.2
django-mdeditor==0.1.18
django-ranged-response==0.2.0
django-redis==4.12.1
django-rest-framework-mongoengine==3.4.1
django-simple-captcha==0.5.13
django-simpleui==2021.6.2
django-timezone-field==4.1.2
django-tinymce==3.3.0
djangorestframework==3.12.2
djangorestframework-jwt==1.11.0
dnspython==1.16.0
docopt==0.6.2
docutils==0.17.1
dogtail==0.9.10
dominate==2.6.0
DownloadKit==0.5.0
drf-extensions==0.7.0
drf-haystack==1.8.10
DrissionPage==3.1.1
easygui==0.98.2
elasticsearch==2.4.1
et-xmlfile==1.0.1
eventlet==0.30.2
execnet==1.8.0
facebook-wda==1.4.3
filelock==3.0.12
Flask==1.1.2
Flask-Bootstrap==3.3.7.0
Flask-Excel==0.0.7
Flask-Login==0.5.0
Flask-Mail==0.9.1
Flask-Migrate==2.0.0
Flask-Moment==1.0.1
Flask-Script==2.0.5
Flask-SQLAlchemy==2.4.4
FlowViewer==0.2.2
freetype-py==2.2.0
fsspec==2022.8.2
future==0.18.2
greenlet==1.1.0
HTMLReport==2.3.1
idna==2.10
importlib-metadata==2.1.1
iniconfig==1.1.1
itsdangerous==1.1.0
itypes==1.2.0
jdcal==1.4.1
Jinja2==2.11.2
jsonpath==0.82
kiwisolver==1.3.1
kombu==5.1.0
lml==0.1.0
loguru==0.7.0
logzero==1.7.0
lxml==4.6.3
Mako==1.1.4
Markdown==3.3.4
MarkupPy==1.14
MarkupSafe==1.1.1
matplotlib==3.3.3
mock==3.0.5
mongoengine==0.22.1
more-itertools==8.7.0
mpmath==1.2.1
mutagen==1.44.0
mysql-connector==2.2.9
mysqlclient==2.0.3
numpy @ file:///C:/Users/Administrator/Downloads/numpy-1.21.0-cp37-cp37m-win_amd64.whl
odfpy==1.4.1
opencv-python==4.7.0.72
openpyxl==3.0.5
packaging==20.8
pandas==1.1.5
ParamUnittest==0.2
pefile==2021.9.3
Pillow==8.3.1
pipreqs==0.4.11
pluggy==0.13.1
progress==1.6
prompt-toolkit==3.0.19
psutil==5.8.0
py==1.10.0
pyasn1==0.4.8
pycparser==2.20
pycryptodomex==3.9.4
pyelftools==0.27
pyexcel==0.6.6
pyexcel-io==0.6.4
pyexcel-webio==0.1.4
pyexcel-xlsx==0.6.0
pygame==2.0.1
Pygments==2.9.0
pyinstaller==4.10
pyinstaller-hooks-contrib==2022.2
PyJWT==1.7.1
pymongo==3.11.3
PyMySQL==0.10.1
PyOpenGL==3.1.5
pyOpenSSL==19.1.0
pyparsing==2.4.7
PyQt5==5.15.4
pyqt5-plugins==5.15.4.2.2
PyQt5-Qt5==5.15.2
PyQt5-sip==12.11.0
pyqt5-tools==5.15.4.3.2
pytest==6.2.4
pytest-assume==2.4.3
pytest-cov==2.8.1
pytest-forked==1.1.3
pytest-html==2.0.1
pytest-ignore-flaky==2.0.0
pytest-metadata==1.8.0
pytest-ordering==0.6
pytest-repeat==0.9.1
pytest-rerunfailures==10.3
pytest-xdist==1.31.0
python-alipay-sdk==3.0.1
python-crontab==2.5.1
python-dateutil==2.8.1
python-dotenv==0.21.0
python-editor==1.0.4
pythonnet==2.5.1
pytz==2021.1
pywebview==3.4
pywin32==300
pywin32-ctypes==0.2.0
pywinauto==0.6.8
PyYAML==6.0
QQLoginTool==0.3.0
qt5-applications==5.15.2.2.2
qt5-tools==5.15.2.1.2
redis==3.5.3
requests==2.24.0
requests-file==1.5.1
retry==0.9.2
rsa==4.8
ruamel.yaml==0.17.21
ruamel.yaml.clib==0.2.7
scipy @ file:///C:/Users/Administrator/Downloads/scipy-1.7.0-cp37-cp37m-win_amd64.whl
selenium==3.141.0
Serializer==0.2.1
simplejson==3.17.2
six==1.15.0
sklearn==0.0.post5
soupsieve==2.0.1
SQLAlchemy==1.3.20
sqlparse==0.4.1
sympy==1.7.1
tablib==3.0.0
texttable==1.6.3
tldextract==3.4.0
toml==0.10.2
tornado==6.1
turtle==0.0.2
Twisted==20.3.0
ua-parser==0.10.0
uiautomation==2.0.10
uiautomator2==2.16.7
uritemplate==3.0.1
urllib3==1.25.11
user-agents==2.2.0
vine==5.0.0
visitor==0.1.3
wcwidth==0.2.5
websocket-client==1.5.0
weditor==0.6.4
Werkzeug==1.0.1
whichcraft==0.6.1
win32-setctime==1.1.0
WMI==1.5.1
wordninja==2.0.0
wrapt==1.12.1
wxgl==0.7.2
wxPython==4.1.1
xlrd==1.2.0
xlrd2==1.2.6
XlsxWriter==3.0.2
xlutils==2.0.0
xlwings==0.21.4
xlwt==1.3.0
xmltodict==0.12.0
yarg==0.1.9
zipfile37==0.1.3
zipp==1.2.0
  • На самом деле, это не занимает много времени. Это зависит от потребностей вашего проекта. Вы также можете войти в корневой каталог проекта и использовать следующую команду для экспорта пакетов зависимостей проекта:
Язык кода:python
кодКоличество запусков:0
копировать
pipreqs . --encoding=utf8 --force

9.2 Создать каталог приложений

  • существовать Хозяин(Установитьdockerмашина)Создайте новый каталог на(Мой каталогсуществоватьмой дом Создать в каталогеapp),Воляrequirements.txtдокументкопироватьвходить:
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения

9.3 Создание файла Docker

  • существоватьappСоздать в каталогеDockerfileдокумент(документ Имя должно бытьDockerfile,без суффикса) Dockerfileсодержаниек及解释如Вниз:
Язык кода:python
кодКоличество запусков:0
копировать
FROM python:3.7  #Создаем образ на основе базового образа Python:3.7 
WORKDIR /home/noamanelson/app   #Переключение каталога рабочей области 
ADD ./requirements.txt /home/noamanelson/app #Добавляем в образ файлы пакета зависимостей проекта Python 
RUN pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple #Установить пакеты зависимостей 
CMD ["python3", "main.py"] #Установите автоматическое выполнение команды после выполнения контейнера. Здесь start_all.py — это файл записи выполнения нашей платформы автоматизации.

9.4 Выполните команду построения образа

  • существоватьappв каталоге Выполнить команду сборки образа(此步骤也Можеткпомещатьприезжатьbuild.sh,каждый разjenkinsПерестроить на сборкезеркало,Но это будет медленнее,Так что если среда стабильна, то рекомендуется собрать ее заранее)
Язык кода:python
кодКоличество запусков:0
копировать
docker build -t python3.7:autopy .

-t: имя изображения Точка (.): точка указывает каталог, в котором находится файл Dockerfile. Сейчас я нахожусь в каталоге приложения, а точка указывает текущий каталог.

  • После успешной сборки вы увидите новое изображение:
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения

10 build.sh дизайн

  • build.shСодержание следующее,Комментарии следует писать с новой строки:
Язык кода:python
кодКоличество запусков:0
копировать
echo «Запустите контейнерный Python для автоматизации»  
#Вывод журнала
#-w=$WORKSPACE: указанное рабочее пространство
#--volumes-from=jenkins_save01: Сопоставьте рабочую область в контейнере jenkins с контейнером Python. На этом этапе будет сопоставлен код, извлеченный git в jenkins.
docker run --rm -w=$WORKSPACE --volumes-from=jenkins python3.7:autopy
echo «Автоматическое выполнение выполнения Python выполнено успешно»
  • Воляbuild.shкопироватьприезжатьтвойпроекткореньв каталоге:
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения
  • представлять на рассмотрениекодприезжатьGitсклад:
Язык кода:python
кодКоличество запусков:0
копировать
 git add .
 git commit -am'update'
 git push 

11 задач сборки

  • Ранее мы создали задачу:
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения
  • Построить сейчас:
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения
  • История сборки:
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения
  • Вывод консоли:
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения
  • Нет стиля при просмотре отчета об испытаниях,из-за того, что яJenkinsзапретитьиспользовать ПонятноCSSстиль,Нужно решить вручную:
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения

12 Решение стилей отчета

Вставьте сюда описание изображения
Вставьте сюда описание изображения
  • Напишите следующий код:
Язык кода:python
кодКоличество запусков:0
копировать
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","")
Вставьте сюда описание изображения
Вставьте сюда описание изображения
  • Если результат после выполнения пустой, значит все в порядке;
  • Перестройте, чтобы увидеть стилизованный отчет о тестировании:
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения
  • Вышеупомянутый метод является временным, и его необходимо установить снова после перезапуска Jenkins, поэтому установка подключаемого модуля Groovy может навсегда решить эту проблему:
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения
    Вставьте сюда описание изображения

13 Проверьте электронную почту

  • Судя по картинке, с электронной почтой тоже все в порядке;
Вставьте сюда описание изображения
Вставьте сюда описание изображения
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