/
wedyzza
/
simple-python-app
Обзор
Документация
Войти
/
wedyzza
/
simple-python-app
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
jenkins/Jenkinsfile
55 строк
4 KB
wedyzza
fix n2
11 окт 2025, 07:17
11 окт 2025, 07:17
86b6ea4
Код
Авторство
О чём код?
pipeline { agent { docker { image 'python:3.13.7-alpine3.22' } } options { skipStagesAfterUnstable() } stages { stage('Setup') { steps { sh ''' python -m venv venv . venv/bin/activate pip install -r requirements.txt ''' } } stage('Build') { steps { sh ''' . venv/bin/activate python -m py_compile sources/add2vals.py sources/calc.py ''' // Этот шаг `sh` (из раздела `steps`) запускает команду Python для компиляции вашего приложения и его библиотеки `calc` в файлы байт-кода (каждый с расширением `.pyc`), которые помещаются в рабочую директорию `sources` (внутри директории `/var/jenkins_home/workspace/simple-python-app` в контейнере Jenkins). stash(name: 'compiled-results', includes: 'sources/*.py*') //Этот шаг `stash` (из раздела basic steps) сохраняет исходный код Python и скомпилированные файлы байт-кода (с расширением `.pyc`) из рабочей директории `sources` для использования на последующих этапах. } } stage('Test') { steps { sh ''' . venv/bin/activate py.test --junit-xml test-reports/results.xml sources/test_calc.py ''' // Этот шаг `sh` (из раздела `steps`) выполняет команду `py.test` из `pytest` для файла `sources/test_calc.py`, которая запускает набор модульных тестов (определенных в `test_calc.py`) для функции `add2` библиотеки "calc" (используемой вашим простым Python-приложением `add2vals`). Опция `--junit-xml test-reports/results.xml` заставляет `py.test` генерировать отчет в формате JUnit XML, который сохраняется в `test-reports/results.xml` (внутри директории `/var/jenkins_home/workspace/simple-python-app` в Jenkins). } post { always { junit 'test-reports/results.xml' // Этот шаг `junit` (предоставляемый плагином JUnit) архивирует отчет JUnit XML (сгенерированный командой `py.test` выше) и предоставляет результаты через интерфейс Jenkins. Условие `always` в разделе `post`, содержащее этот шаг `junit`, гарантирует, что шаг всегда выполняется по завершении этапа `Test`, независимо от результата этапа. } } } stage('Deliver') { steps { echo "Собираю дистрибутив" // Тут мог бы быть код, который компилировал, переносил файлы в нужное вам место. Но мы этим не будем заниматься. } post { success { archiveArtifacts artifacts: '**/*.py' // Этот шаг `archiveArtifacts` (предоставляемый как часть ядра Jenkins) архивирует файлы . Условие `success` в разделе `post`, содержащее этот шаг `archiveArtifacts`, гарантирует, что шаг выполняется по завершении этапа `Deliver` только в том случае, если этот этап завершился успешно. } } } } }