1+
12pipeline {
2- agent {
3- docker {
4- image ' cimg/python:3.12-node' // includes Python and Node.js
5- }
6- }
3+ agent any
74
85 environment {
96 VENV = ' venv'
@@ -16,37 +13,39 @@ pipeline {
1613 }
1714
1815 stages {
19- stage(' Set Up Python ' ) {
16+ stage(' Setup & Lint in Docker ' ) {
2017 steps {
21- sh '''
22- python -m venv venv
23- ${PIP} install --upgrade pip
24- ${PIP} install -r requirements.txt
25- '''
26- }
27- }
18+ script {
19+ docker. image(' cimg/python:3.12-node' ). inside {
20+ sh '''
21+ python -m venv venv
22+ ./venv/bin/pip install --upgrade pip
23+ ./venv/bin/pip install -r requirements.txt
2824
29- stage( ' Lint & Security (ignore venv/ tests)' ) {
30- steps {
31- sh '''
32- ${FLAKE8} . --exclude= venv, tests, .serverless || true
33- ${BANDIT} -r . -x venv, tests, .serverless || true
34- ${ISORT} . --skip venv --skip tests --skip .serverless --check-only || true
35- ${MYPY} . --exclude '(venv|tests| \\ .serverless)' || true
36- '''
25+ # Linting & Security (ignoring venv, tests)
26+ ./venv/bin/flake8 . --exclude=venv,tests,.serverless || true
27+ ./venv/bin/bandit -r . -x venv,tests,.serverless || true
28+ ./venv/bin/isort . --skip venv --skip tests --skip .serverless --check-only || true
29+ ./venv/bin/mypy . --exclude '( venv| tests| \\ .serverless)' || true
30+ '''
31+ }
32+ }
3733 }
3834 }
3935
4036 stage(' Deploy to Lambda' ) {
4137 steps {
42- sh '''
43- npm install -g serverless
44- ${PIP} install serverless # optional, if needed for Python plugin
45- serverless deploy --stage dev
46- '''
38+ script {
39+ docker. image(' cimg/python:3.12-node' ). inside {
40+ sh '''
41+ npm install -g serverless
42+ ./venv/bin/pip install serverless # optional
43+ serverless deploy --stage dev
44+ '''
45+ }
46+ }
4747 }
4848 }
4949 }
5050}
5151
52-
0 commit comments