Jenkins
Это открытый исходный код CI&CD
Программное обеспечение для автоматизации различных задач, включая сборку, тестирование и развертывание программного обеспечения;Java
написано на языке,Доступно наTomcat
、Docker
Запуск в популярных контейнерах,Также может запускаться независимо.С точки зрения непрофессионала, например, процесс компиляции, упаковки, загрузки и развертывания в Tomcat передается Jenkins. Jenkins переносит код на свой «хост-сервер» (установка Jenkins) через заданный URL-адрес кода (адрес хранилища кода). ). location), скомпилируйте, упакуйте и опубликуйте в контейнере Tomcat.
Continuous integration
продолжениеинтегрированный;① Получите результаты регрессионного тестирования заранее, чтобы избежать проблем при входе в производственную среду; ② Будет легче публиковать и компилировать;
③ Уменьшить переключение рабочих задач, быстро получать новости о сбое сборки и быстро решать проблему;
④ Значительно сокращаются затраты на тестирование, включая временные и трудовые затраты;
⑤ Экономьте время команды контроля качества и сосредоточьтесь на построении культуры качества.
continuous deployment
продолжениеразвертывать;① Частота быстрого выпуска; ② Риск снижается, и проблему можно быстро устранить; ③ Клиенты могут быстро увидеть результаты доставки продукта.
Continuous Delivery
продолжениедоставлять;Установите виртуальную машину Hyper-V на операционную систему Windows 10, затем установите на виртуальную машину операционную систему Ubuntu и запустите автоматические тесты на Ubuntu;
# Наша среда:
1. Сервер Linux (у меня Ubuntu) на виртуальной машине, хаха
2. Правильно установите докер на сервер
3. Извлеките изображение Дженкинса: jenkins/jenkins:lts.
4. Извлеките образ python3: docker pull python:3.7
1. Установите докер на Linux-сервер; 2. Создайте контейнер Дженкинса;
3. Создайте образ Python на основе пакета зависимостей проекта автоматизации (создайте автоматизированную среду Python);
4. Запустите новый контейнер Python и выполните проект автоматизации, который Дженкинс извлек из хранилища.
5. Удалите контейнер после завершения выполнения.
docker
тянутьJenkins
зеркало:docker pull jenkins/jenkins:lts
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
Описание параметра
-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.
docker
Установитьjenkins
Запустить не удалось;docker logs jenkin
/var/jenkins_home
разрешения:chown -R 1000 /var/jenkins_home
root
Запустить с разрешения,добавлять-u=root
。docker logs jenkins
jenkins
пароль,копировать Разблокировать после Прямо сейчас Может;
git
Плагин уже есть Установитьхорошо,Может从к Посмотрите изображение ниже:
install plugins
】Можетк Посмотреть уже Установитьплагин:
available plugins
】Вы можете загрузить нужные вам плагины,здесь я Установить Внизgitee
;
docker
Установить Прямо сейчас Может:
JDK
:
maven
:
SSH
:
После выполнения вышеуказанных шагов,Установить Перезагрузить после завершенияjenkins
контейнер
docker restart jenkins
jenkins
,точкаNew Item
Как показано на картинке:General
в опциях,Настройки следующие:
linux
Выбрать следующийshell
:
jenkins
Путь к отчету о тестировании, показанный на:
jenkins
управлять-система Конфигурация-Jenkins Location
。существоватьсистемауправлятьадрес электронной почты сотрудников,Введите соответствующий адрес электронной почты:
jenkins
управлять-система Конфигурация-Extended E-mail Notification
,Заполните соответствующиеsmtp
Контент, связанный с сервером,Нажмите «Дополнительно».,Введите соответствующий адрес электронной почты иsmtp
Код авторизации входа,Проверятьssl
:jenkins
управлять-система Конфигурация-Default Triggers
,По умолчанию оно будет отправлено только в том случае, если проверка не пройдена.,Можно настроить на постоянную отправку (или проверку в зависимости от потребностей),Таккаждый разбегатьпроект Письма будут отправляться каждый раз。
Python
бегать环境中Воляпроект Экспортировать зависимые пакетыприезжатьrequirements.txt
в файле;pip freeze > requirements.txt
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
pipreqs . --encoding=utf8 --force
docker
машина)Создайте новый каталог на(Мой каталогсуществоватьмой дом Создать в каталогеapp
),Воляrequirements.txt
документкопироватьвходить:
app
Создать в каталогеDockerfile
документ(документ Имя должно бытьDockerfile
,без суффикса)
Dockerfile
содержаниек及解释如Вниз: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 — это файл записи выполнения нашей платформы автоматизации.
app
в каталоге Выполнить команду сборки образа(此步骤也Можеткпомещатьприезжатьbuild.sh
,каждый разjenkins
Перестроить на сборкезеркало,Но это будет медленнее,Так что если среда стабильна, то рекомендуется собрать ее заранее)docker build -t python3.7:autopy .
-t: имя изображения Точка (.): точка указывает каталог, в котором находится файл Dockerfile. Сейчас я нахожусь в каталоге приложения, а точка указывает текущий каталог.
build.sh
Содержание следующее,Комментарии следует писать с новой строки: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
склад: git add .
git commit -am'update'
git push
Jenkins
запретитьиспользовать ПонятноCSS
стиль,Нужно решить вручную:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","")