เจนเฉเจฒเฉ เจนเจฐ เจเฉเจ!
เจเจธ เจฒเฉเจ เจตเจฟเฉฑเจ เจฎเฉเจ เจเฉเจจเจเจฟเจจเจเจผ เจจเฉเฉฐ เจเจเฉเจฎเฉเจธเจผเจจ เจตเจเฉเจ เจตเจฐเจคเจฆเฉ เจนเฉเจ เจเจชเจจเจธเจผเจฟเจซเจ เจตเจฟเฉฑเจ เจเฉเจฎเฉเจเจฐ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจเฉเจธเจเจพเจ เจจเฉเฉฐ เจเจฒเจพเจเจฃ เจฆเฉ เจเฉฑเจ เจคเจฐเฉเจเจฟเจเจ เจจเฉเฉฐ เจธเจพเจเจเจพ เจเจฐเจจเจพ เจเจพเจนเฉเฉฐเจฆเจพ เจนเจพเจเฅค เจชเจนเจฟเจฒเจพเจ เจ
เจธเฉเจ เจธเจพเจฐเฉ เจเจผเจฐเฉเจฐเฉ เจเจฆเจฎ (เจฌเจฃเจพเจเจฃเจพ ImageStreams
, BuildConfig
, Job
เจเจฆเจฟ) เจฎเฉเจจเฉเจ
เจฒ เจฎเฉเจก เจตเจฟเฉฑเจเฅค เจเจธ เจคเฉเจ เจฌเจพเจ
เจฆ, เจเจ เจเฉเจจเจเจฟเฉฐเจธ เจชเจพเจเจชเจฒเจพเจเจจ เจฒเจฟเจเฉเจ.
เจเฉฑเจ เจธเจผเฉเจฐเฉเจเจคเฉ เจฌเจฟเฉฐเจฆเฉ เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ เจธเจพเจกเฉ เจเฉเจฒ เจเจน เจนเฉเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉ:
- OpenShift (v3.11) เจเจฒเฉฑเจธเจเจฐ เจเฉฑเจฒ เจฐเจฟเจนเจพ เจนเฉ
- OpenShift เจตเจฟเฉฑเจ เจเฉฐเจฎ เจเจฐเจจ เจฒเจ เจเฉเจเจซเจฟเจเจฐ เจเฉเจคเฉ เจชเฉเจฐเจฎเจพเจฃ เจชเฉฑเจคเจฐเจพเจ เจตเจพเจฒเจพ เจเฉเจจเจเจฟเฉฐเจธ เจธเจฐเจตเจฐ
- ัะฐะนะป
apache-jmeter-5.2.tgz
เจเฉเจธเจเจพเจ เจฆเฉ เจคเฉเจฐ 'เจคเฉ เจเจน เจธเจงเจพเจฐเจจ เจนเฉเจตเฉเจเจพ HTTP Request
'เจคเฉ ya.ru
เจเฉฑเจ เจงเจพเจฐเจพ เจตเจฟเฉฑเจ.
OpenShift เจตเจฟเฉฑเจ เจเฉฑเจ เจชเฉเจฐเฉเจเฉเจเจ เจฌเจฃเจพเจเจฃเจพ
เจเจ เจเฉฑเจ เจจเจตเจพเจ เจฎเจพเจนเฉเจฒ เจฌเจฃเจพ เจเฉ เจธเจผเฉเจฐเฉเจเจค เจเจฐเฉเจเฅค เจเจ เจฌเจฃเจพเจเจ perftest
เจเฉฑเจ เจเฉเจฎ เจฆเฉเจเจฐเจพ เจเจฟเจฐเจฟเจ:
$ oc new-project perftest --display-name="Performance Tests" --description="Performance Tests - JMeter"
เจ
เจธเฉเจ เจเจชเจฃเฉ เจเจช เจนเฉ เจจเจตเฉเจ เจฌเจฃเจพเจ เจตเจพเจคเจพเจตเจฐเจจ เจตเจฟเฉฑเจ เจคเจฌเจฆเฉเจฒ เจนเฉ เจเจพเจตเจพเจเจเฉ perftest
, เจเจ เจเจพเจเจ เจเจฐเฉเจ เจเจฟ เจเจน เจเจธ เจคเจฐเฉเจนเจพเจ เจนเฉ:
$ oc project
Using project "perftest" on server "https://127.0.0.1:8443".
เจธเจเฉเจฐเฉเจเจผ เจฆเฉ เจฐเจเจจเจพ
เจเฉเจธเจ เจฐเจฟเจชเฉเจฐเจเจพเจ เจจเฉเฉฐ เจตเฉเจฌ เจธเจฐเจตเจฐ เจจเจพเจฒ เจธเจพเจเจเจพ เจเฉเจคเจพ เจเจพเจตเฉเจเจพ เจ
เจคเฉ jmeter-meter
'เจเฉฑเจ เจเจเฉเจนเจพ - /jmeter/reports
.
เจนเฉเจฃ เจธเจเฉเจฐเฉเจ เจฌเจฃเจพเจเจฃเจพ เจฌเจฟเจนเจคเจฐ เจนเฉ, เจเจฟเจเจเจเจฟ เจชเฉเจเจกเฉ เจเจนเจจเจพเจ เจจเจพเจฒ เจฌเฉฐเจจเฉเจนเฉ เจเจพเจฃเจเฉ jmeter-web
ะธ jmeter-master
.
เจคเฉเจนเจพเจจเฉเฉฐ เจ
เจงเจฟเจเจพเจฐเจค เจฆเจธเจคเจพเจตเฉเจเจผเจพเจ เจตเจฟเฉฑเจ เจธเจเฉเจฐเฉเจ เจฌเจพเจฐเฉ เจตเจงเฉเจฐเฉ เจตเจฟเจธเจคเฉเจฐเจฟเจค เจเจพเจฃเจเจพเจฐเฉ เจฎเจฟเจฒเฉเจเฉ
เจฒเจ yaml เจซเจพเจเจฒเจพเจ เจฌเจฃเจพเจเจ PV
ะธ PVC
.
pv.yaml
$ tee pv.yaml<<EOF
apiVersion: v1
kind: PersistentVolume
metadata:
name: jmeter-reports
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteMany
glusterfs:
endpoints: glusterfs-cluster
path: /jmeter/reports
readOnly: false
persistentVolumeReclaimPolicy: Retain
EOF
pvc.yaml
$ tee pvc.yaml<<EOF
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: jmeter-reports
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi
EOF
เจเจ เจฌเจฃเจพเจเจ PV
ะธ PVC
OpenShift เจฆเฉเจเจฐเจพ เจเจฟเจฐเจฟเจ เจนเฉเจเจ:
$ oc create -f pv.yaml -n perftest
$ oc create -f pvc.yaml -n perftest
เจฒเจ เจธเจฅเจฟเจคเฉ เจฆเฉ เจเจพเจเจ เจเฉเจคเฉ เจเจพ เจฐเจนเฉ เจนเฉ PVC
:
$ oc get pvc -n perftest
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
jmeter-reports Bound pvc-b0e5f152-db4b-11ea-a497-566f75280024 10Gi RWX glusterfs-storage 8m
GUI เจตเจฟเฉฑเจ เจเจน เจเจฟเจนเฉ เจเจฟเจนเจพ เจฆเจฟเจเจพเจ เจฆเฉเจตเฉเจเจพ:
เจเฉฑเจ JMeter เจฌเฉเจธ เจเจฟเฉฑเจคเจฐ เจฌเจฃเจพเจเจฃเจพ
เจเจ เจฌเจฃเจพเจเจฃ เจฒเจ เจ
เฉฑเจเฉ เจตเจงเฉเจ ImageStream
ะธ BuildConfig
.
เจคเฉเจธเฉเจ เจฆเจธเจคเจพเจตเฉเจเจผ เจตเจฟเฉฑเจ เจธเจพเจฐเฉ เจฒเฉเฉเฉเจเจฆเฉ เจเจพเจฃเจเจพเจฐเฉ เจฒเฉฑเจญ เจธเจเจฆเฉ เจนเฉ -
เจเจฟเฉฑเจคเจฐ เจฌเจฃเจพเจเจฃ เจฆเฉ เจฐเจฃเจจเฉเจคเฉ เจนเฉ Docker
เจเฉฑเจ เจธเจฅเจพเจจเจ เจธเจฐเฉเจค เจคเฉเจเฅค
เจเจ เจเฉฑเจ เจฌเฉเจธ เจเจฎเฉเจ เจฌเจฃเจพเจเจ jmeter-base
, เจเฉ เจเจฟ เจฒเจ เจเจงเจพเจฐ เจนเฉเจตเฉเจเจพ jmeter-master
.
เจกเฉเจเจฐเจซเจพเจเจฒ
FROM openjdk:8u212-jdk
ARG JMETER_VER="5.2"
ENV JMETER_HOME /jmeter/apache-jmeter-$JMETER_VER
ENV PATH $JMETER_HOME/bin:$PATH
RUN mkdir -p /jmeter/results
&& mkdir /jmeter/tests
WORKDIR /jmeter
COPY apache-jmeter-$JMETER_VER.tgz .
RUN tar -xzf $JMETER_HOME.tgz
&& rm $JMETER_HOME.tgz
&& ls -la
RUN sed -i s/#server.rmi.ssl.disable=false/server.rmi.ssl.disable=true/ $JMETER_HOME/bin/jmeter.properties
EXPOSE 60000
is.yaml
$ tee is.yaml<<EOF
apiVersion: v1
kind: ImageStream
metadata:
labels:
build: jmeter-base
name: jmeter-base
EOF
bc.yaml
$ tee bc.yaml<<EOF
apiVersion: v1
kind: BuildConfig
metadata:
name: jmeter-base
spec:
failedBuildsHistoryLimit: 5
nodeSelector: null
output:
to:
kind: ImageStreamTag
name: 'jmeter-base:latest'
postCommit: {}
resources: {}
runPolicy: Serial
source:
binary: {}
type: Binary
strategy:
dockerStrategy:
from:
kind: ImageStreamTag
name: 'openjdk:8u212-jdk'
type: Docker
successfulBuildsHistoryLimit: 5
EOF
เจเจ เจตเจธเจคเฉเจเจ เจฌเจฃเจพเจเจ IS
ะธ BC
:
$ oc create -f is.yaml -n perftest
$ oc create -f bc.yaml -n perftest
เจนเฉเจฃ เจฌเฉเจธ เจเจฎเฉเจ เจจเฉเฉฐ เจ
เจธเฉเจเจฌเจฒ เจเจฐเฉเจ jmeter-base
:
$ oc start-build jmeter-base -n perftest --from-dir=. --follow
เจเฉเจฎเฉเจเจฐ เจตเฉเฉฑเจฌ
jmeter-web
เจเจน เจเฉฑเจ เจ
เจชเจพเจเฉ เจตเฉเฉฑเจฌ เจธเจฐเจตเจฐ เจนเฉเฅค เจเจธเจฆเจพ เจเฉฐเจฎ เจฆเฉเจเจฃ เจฒเจ เจเฉเจธเจ เจฆเฉ เจจเจคเฉเจเจฟเจเจ เจตเจพเจฒเฉ เจเฉฑเจ เจกเจพเจเจฐเฉเจเจเจฐเฉ เจชเฉเจฐเจฆเจพเจจ เจเจฐเจจเจพ เจนเฉเฅค
เจคเจฟเจเจฐ เจเฉเจคเจพ Dockerfile
เจ
เจคเฉ เจธเฉฐเจฐเจเจจเจพ เจซเจพเจเจฒ httpd.conf
. เจจเจฟเจฐเจฆเฉเจธเจผ เจฒเจ DocumentRoot
เจฎเฉเฉฑเจฒ เจธเฉเฉฑเจ /jmeter/reports
, i.e. เจกเจพเจเจฐเฉเจเจเจฐเฉ เจเจฟเจธ เจตเจฟเฉฑเจ เจเฉเจธเจ เจฆเฉ เจจเจคเฉเจเฉ เจธเฉเจฐเฉฑเจเจฟเจ
เจค เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเจจเฅค
เจกเฉเจเจฐเจซเจพเจเจฒ
$ tee Dockerfile<<EOF
FROM httpd:2.4
COPY httpd.conf /usr/local/apache2/conf/httpd.conf
RUN chmod -R 777 /usr/local/apache2/logs
EXPOSE 8080
CMD ["httpd", "-D", "FOREGROUND"]
EOF
is.yaml
$ tee is.yaml<<EOF
apiVersion: v1
kind: ImageStream
metadata:
generation: 1
labels:
build: jmeter-web
name: jmeter-web
EOF
bc.yaml
$ tee bc.yaml<<EOF
apiVersion: v1
kind: BuildConfig
metadata:
name: jmeter-web
spec:
failedBuildsHistoryLimit: 5
nodeSelector: null
output:
to:
kind: ImageStreamTag
name: 'jmeter-web:latest'
runPolicy: Serial
source:
binary: {}
type: Binary
strategy:
dockerStrategy:
from:
kind: ImageStreamTag
name: 'httpd:2.4'
type: Docker
successfulBuildsHistoryLimit: 5
EOF
เจเจ เจฌเจฃเจพเจเจ ImageStream
ะธ BuildConfig
เจตเจธเจคเฉเจเจ:
$ oc create -f is.yaml -n perftest
$ oc create -f bc.yaml -n perftest
เจคเฉเจ เจเฉฑเจ เจเจฟเฉฑเจคเจฐ เจเจเฉฑเจ เจพ เจเจฐเจจเจพ Dockerfile
:
$ oc start-build jmeter-web -n perftest --from-dir=. --follow
dc.yaml
$ tee dc.yaml<<EOF
apiVersion: apps.openshift.io/v1
kind: DeploymentConfig
metadata:
name: jmeter-web
spec:
replicas: 1
template:
metadata:
labels:
name: jmeter-web
spec:
containers:
- image: 172.30.1.1:5000/perftest/jmeter-web
name: jmeter-web
volumeMounts:
- mountPath: /jmeter/reports
name: jmeter-reports
ports:
- containerPort: 80
protocol: TCP
- containerPort: 8080
protocol: TCP
volumes:
- name: jmeter-reports
persistentVolumeClaim:
claimName: jmeter-reports
EOF
sc.yaml
$ tee sc.yaml<<EOF
apiVersion: v1
kind: Service
metadata:
labels:
app: jmeter-web
name: jmeter-web
spec:
ports:
- name: 8080-tcp
port: 8080
protocol: TCP
targetPort: 8080
selector:
deploymentconfig: jmeter-web
sessionAffinity: None
type: ClusterIP
EOF
เจเจ เจตเจธเจคเฉเจเจ เจฌเจฃเจพเจเจ Service
ะธ DeploymentConfig
:
$ oc create -f sc.yaml -n perftest
$ oc create -f dc.yaml -n perftest
เจเจฎเฉเจเจฐ-เจฎเจพเจธเจเจฐ
เจเจ เจ เจชเจพเจเฉ เจตเฉเฉฑเจฌ เจธเจฐเจตเจฐ เจจเฉเฉฐ เจคเฉเจจเจพเจค เจเจฐเจจเจพ เจธเจผเฉเจฐเฉ เจเจฐเฉเจเฅค
เจเจน เจกเฉเจเจฐเจซเจพเจเจฒ เจนเฉ jmeter-master
'เจ', 'เจคเฉ เจเจงเจพเจฐเจฟเจค jmeter-base
, เจเฉ เจเฉเจธเจ เจเจฒเจพเจเจเจพ เจ
เจคเฉ เจจเจคเฉเจเจฟเจเจ เจจเฉเฉฐ เจธเจเฉเจฐเฉเจ เจตเจฟเฉฑเจ เจธเฉเจฐเฉฑเจเจฟเจ
เจค เจเจฐเฉเจเจพเฅค
เจกเฉเจเจฐเจซเจพเจเจฒ
Dockerfile
เจจเฉเฉฐ jmeter-master
, เจฆเฉ เจ
เจงเจพเจฐ เจคเฉ jmeter-base
.
FROM jmeter-base
ARG JMETER_VER="5.2"
ENV JMETER_HOME /jmeter/apache-jmeter-$JMETER_VER
ENV PATH $JMETER_HOME/bin:$PATH
WORKDIR /jmeter
COPY run.sh /jmeter/
COPY tests/*.jmx /jmeter/tests/
RUN chmod +x /jmeter/run.sh
ENTRYPOINT ["/bin/bash"]
CMD ["/jmeter/run.sh"]
run.sh
run.sh
เจเจน เจเฉฑเจ เจธเจเฉเจฐเจฟเจชเจ เจนเฉ เจเฉ JMeter เจเจฒเจพเจเจเจฆเฉ เจนเฉ เจ
เจคเฉ เจจเจคเฉเจเจฟเจเจ เจจเฉเฉฐ เจเฉฑเจ เจกเจพเจเจฐเฉเจเจเจฐเฉ เจตเจฟเฉฑเจ เจธเฉเจฐเฉฑเจเจฟเจ
เจค เจเจฐเจฆเฉ เจนเฉ files
.
เจนเจฐ เจตเจพเจฐ เจเจฆเฉเจ เจธเจเฉเจฐเจฟเจชเจ เจฒเจพเจเจ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉ, เจเจน เจชเจฟเจเจฒเฉ เจเฉเจธเจเจพเจ เจจเฉเฉฐ เจฎเจฟเจเจพ เจฆเจฟเฉฐเจฆเฉ เจนเฉ, เจคเจพเจ เจเฉ เจคเฉเจธเฉเจ เจธเจฟเจฐเจซ เจจเจตเฉเจจเจคเจฎ เจกเฉเจเจพ เจจเจพเจฒ เจนเฉ เจเฉฐเจฎ เจเจฐ เจธเจเฉเฅค เจชเจฐ เจเจน เจเฉเจ เจธเจฎเฉฑเจธเจฟเจ เจจเจนเฉเจ เจนเฉ, เจเจฟเจเจเจเจฟ เจคเฉเจธเฉเจ เจเจธ เจจเฉเฉฐ เจเจชเจฃเฉเจเจ เจฒเฉเฉเจพเจ เจฎเฉเจคเจพเจฌเจ เจฌเจฆเจฒ เจธเจเจฆเฉ เจนเฉเฅค
#!/bin/bash
set -e
if [ -d "/jmeter/reports/files" ]
then
echo "Directory /jmeter/reports/files exist - OK"
else
echo "Creating /jmeter/reports/files directory"
mkdir /jmeter/reports/files
fi
if [ -d "/jmeter/reports/dashboards" ]
then
echo "Directory /jmeter/reports/dashboards exist"
else
echo "Creating /jmeter/reports/dashboards directory"
mkdir /jmeter/reports/dashboards
fi
echo "*** JMeter START Tests ***"
for item in $(ls -1 /jmeter/tests | grep jmx)
do
echo "*** Removing dashboard directory for $item"
rm -rdf /jmeter/reports/dashboards/${item}*
echo "*** Removing tests directory for $item"
rm -rdf /jmeter/reports/files/${item}*
echo "*** Testing a $item file ***"
jmeter -n -t /jmeter/tests/${item} -l /jmeter/reports/files/${item}-report.jtl -e -o /jmeter/reports/dashboards/${item}-dash
done
is.yaml
$ tee is.yaml<<EOF
apiVersion: image.openshift.io/v1
kind: ImageStream
metadata:
generation: 1
labels:
build: jmeter-master
name: jmeter-master
EOF
bc.yaml
$ tee bc.yaml<<EOF
apiVersion: build.openshift.io/v1
kind: BuildConfig
metadata:
name: jmeter-master
spec:
failedBuildsHistoryLimit: 5
nodeSelector: null
output:
to:
kind: ImageStreamTag
name: 'jmeter-master:latest'
runPolicy: Serial
source:
binary: {}
type: Binary
strategy:
dockerStrategy:
from:
kind: ImageStreamTag
name: 'jmeter-base:latest'
type: Docker
successfulBuildsHistoryLimit: 5
EOF
เจเจ เจฌเจฃเจพเจเจ IS
ะธ BC
เจตเจธเจคเฉเจเจ:
$ oc create -f is.yaml -n perftest
$ oc create -f bc.yaml -n perftest
เจ
เจธเฉเจ เจเจเฉฑเจ เฉ เจเจฐเจฆเฉ เจนเจพเจ jmeter-master
เจเจฟเฉฑเจคเจฐ:
$ oc start-build jmeter-master -n perftest --from-dir=. --follow
เจ เฉฑเจฏเฉเจฌ
Job
เจฆเฉ เจตเจฐเจคเฉเจ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉ OpenShift
เจเฉฑเจ เจเจพเจ เจเฉฑเจ เจคเฉเจ เจตเฉฑเจง เจเจฒเจพเจเจฃ เจฒเจ POD
s เจ
เจคเฉ เจเจฎเจพเจเจก/เจธเจเฉเจฐเจฟเจชเจ เจจเฉเฉฐ เจเจฒเจพเจเจฃ เจคเฉเจ เจฌเจพเจ
เจฆ เจเจนเจจเจพเจ เจฆเฉ เจธเจซเจฒ เจธเฉฐเจชเฉเจฐเจจเจคเจพ เจฆเฉ เจเจพเจฐเฉฐเจเฉ เจฆเจฟเฉฐเจฆเฉ เจนเจจเฅค
$ tee job.yaml<<EOF
apiVersion: batch/v1
kind: Job
metadata:
name: jmeter-master
labels:
jobName: jmeter-master
spec:
completions: 1
parallelism: 1
template:
metadata:
name: jmeter-master
labels:
jobName: jmeter-master
spec:
containers:
- name: jmeter-master
image: 172.30.1.1:5000/perftest/jmeter-master:latest
volumeMounts:
- mountPath: /jmeter/reports
name: jmeter-reports
imagePullPolicy: Always
volumes:
- name: jmeter-reports
persistentVolumeClaim:
claimName: jmeter-reports
restartPolicy: Never
terminationGracePeriodSeconds: 30
EOF
เจเฉฑเจ เจตเจธเจคเฉ เจฌเจฃเจพเจ Job
:
$ oc create -f job.yaml -n perftest
เจเจ เจจเฉเจเจฐเฉ เจฆเฉ เจธเจฅเจฟเจคเฉ เจฆเฉ เจเจพเจเจ เจเจฐเฉเจ:
$ oc get jobs -n perftest
NAME DESIRED SUCCESSFUL AGE
jmeter-master 1 1 5m
เจฎเจฟเจเจพเจเจฃ เจฒเจ Job
เจเจ เจเจฎเจพเจเจก เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเฉเจ:
$ oc delete jobs/jmeter-master -n perftest --ignore-not-found=true
เจเฉเจจเจเจฟเฉฐเจธ เจชเจพเจเจชเจฒเจพเจเจจ
เจนเฉเจฃ เจเจเฉเจฎเฉเจธเจผเจจ. เจเจ เจฆเฉเจฌเจพเจฐเจพ เจเจฆเจฎเจพเจ 'เจคเฉ เจเฉฑเจฒเฉเจ:
git clone
oc whoami -t
oc start-build ...
oc delete jobs/jmeter-master
oc create -f job.yaml -n perftest
เจนเฉเจ เจพเจ เจเฉฑเจ เจชเจพเจเจชเจฒเจพเจเจจ เจนเฉ เจเจฟเจธ เจตเจฟเฉฑเจ เจฐเจฟเจชเฉเจเจผเจเจฐเฉ เจเจฒเฉเจจเจฟเฉฐเจ, เจฎเจฟเจเจพเจเจฃเจพ เจ
เจคเฉ เจเจชเจจเจธเจผเจฟเจซเจ เจฐเจเจจเจพ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉ Job
เจฆเฉ
#!groovy
pipeline {
agent any
stages {
stage('Start Notifications') {
steps {
echo "Sending Email Notification"
}
post {
always {
echo "STARTED - Performance Tests"
mail(to: '[email protected]', from: "[email protected]", subject: "START - Performance Tests",mimeType: "text/html", body: "<strong>START - Performance Tests</strong><br /><br />Project: Name of Project<br />Environment: PerfTest<br />Build number: ${env.BUILD_NUMBER}<br />Build URL: ${env.BUILD_URL}"
}
}
}
stage('Git checkout') {
steps {
...
}
}
stage('Perf Tests') {
steps {
script {
sh '''
OC_CMD1="oc login -u=username -p=PASS -n=perftest
--server=https://...:8443"
$OC_CMD1
OC_TOKEN=`oc whoami -t`
OC_CMD2="oc --token=$OC_TOKEN --server=https://...:8443
start-build jmeter-master -n=perftest --from-dir=./master
--follow=true"
OC_CMD3="oc --token=$OC_TOKEN --server=https://...:8443
delete jobs/jmeter-master -n=perftest --ignore-not-found=true"
OC_CMD4="oc--token=$OC_TOKEN --server=https://...:8443
create -f ./master/job.yaml -n=perftest"
$OC_CMD2
$OC_CMD3
$OC_CMD4
'''
}
}
}
post {
failure {
echo "FAILED - Performance Tests"
mail(to: '[email protected]', from: "[email protected]", subject: "FAILED - Performance Tests",mimeType: "text/html", body: "<strong>FAILED - Performance Tests</strong><br /><br />Project: Name of Project<br />Environment: PerfTest<br />Build number: ${env.BUILD_NUMBER}<br />Build URL: ${env.BUILD_URL}"
}
success {
echo "SUCCESSED - Performance Tests"
mail(to: '[email protected]', from: "[email protected]", subject: "SUCCESSED - Performance Tests",mimeType: "text/html", body: "<strong>SUCCESSED - Performance Tests</strong><br /><br />Project: Name of Project<br />Environment: PerfTest<br />Build number: ${env.BUILD_NUMBER}<br />Build URL: ${env.BUILD_URL}"
}
}
}
}
เจชเจพเจเจชเจฒเจพเจเจจ เจฆเจพ เจเฉฐเจฎ เจชเฉเจฐเจพ เจนเฉเจฃ เจคเฉเจ เจฌเจพเจ
เจฆ, เจธเจพเจจเฉเฉฐ เจเจฎเฉเจฒ เจฆเฉเจเจฐเจพ เจเฉฑเจ เจธเฉเจเจจเจพ เจชเฉเจฐเจพเจชเจค เจนเฉเจตเฉเจเฉ '[email protected]
เจคเฉฑเจ [email protected]
.
เจฒเจฟเฉฐเจ 'เจคเฉ เจเจฒเจฟเฉฑเจ เจเจฐเจเฉ files
, เจเฉ เจเฉเจธเจ เจฐเจฟเจชเฉเจฐเจเจพเจ เจจเฉเฉฐ เจธเจเฉเจฐ เจเจฐเจฆเจพ เจนเฉ:
เจซเจพเจเจฒ เจธเจฎเฉฑเจเจฐเฉ ya.HTTP.Request.jmx-report.jtk
:
timeStamp,elapsed,label,responseCode,responseMessage,threadName,dataType,success,failureMessage,bytes,sentBytes,grpThreads,allThreads,URL,Latency,IdleTime,Connect
1597311456443,569,Yandex - HTTP Request,200,Ok,Thread Group 1-1,text,true,,59449,220,1,1,https://ya.ru/,145,0,57
1597311456443,147,Yandex - HTTP Request-0,302,Found,Thread Group 1-1,,true,,478,110,1,1,http://ya.ru/,145,0,57
1597311456592,420,Yandex - HTTP Request-1,200,Ok,Thread Group 1-1,text,true,,58971,110,1,1,https://ya.ru/,370,0,259
เจธเจฟเฉฑเจเจพ
เจเจธ เจฒเฉเจ เจจเฉ OpenShift เจตเจพเจคเจพเจตเจฐเจฃ เจตเจฟเฉฑเจ JMeter เจเฉเจธเจเจพเจ เจจเฉเฉฐ เจเจฒเจพเจเจฃ เจฒเจ เจตเจฟเจเจฒเจชเจพเจ เจตเจฟเฉฑเจเฉเจ เจเฉฑเจ เจฆเจพ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจเฉเจคเจพ เจนเฉเฅค เจ เจธเฉเจ เจธเจพเจฐเฉ เจเจฆเจฎเจพเจ เจจเฉเฉฐ เจนเฉฑเจฅเฉเจ เจชเฉเจฐเจพ เจเฉเจคเจพ, เจเจฟเจธ เจคเฉเจ เจฌเจพเจ เจฆ เจ เจธเฉเจ เจเฉฑเจฒ เจฐเจนเฉ เจเฉเจธเจเจพเจ เจฆเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจจเฉเฉฐ เจธเจตเฉเจเจฒเจฟเจค เจเจฐเจจ เจฒเจ เจเฉเจจเจเจฟเฉฐเจธ เจชเจพเจเจชเจฒเจพเจเจจ เจฌเจฃเจพเจเฅค
เจธเจฐเฉเจค เจ เจคเฉ เจฆเจธเจคเจพเจตเฉเจเจผ
เจเฉเจฎเฉเจเจฐ - เจกเฉเจเจฐ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจตเฉฐเจกเจฟเจ เจฒเฉเจก เจเฉเจธเจเจฟเฉฐเจ เจเฉเจจเจเจฟเฉฐเจธ เจชเจพเจเจชเจฒเจพเจเจจ เจคเฉเจ เจเจชเจจเจธเจผเจฟเจซเจ เจตเจฟเฉฑเจ เจเฉเจฎเฉเจเจฐ เจเฉเจธเจเจพเจ เจจเฉเฉฐ เจเจฒเจพเจเจฃเจพ เจเจชเจจเจธเจผเฉเจซเจเจธเจฅเจพเจ เจธเจเฉเจฐเฉเจ เจฌเจฃเจพเจเจเจฆเจพ เจนเฉ เจ เจคเฉ เจเจฟเฉฑเจคเจฐ เจธเจเฉเจฐเฉเจฎ เจเจฐเจฆเจพ เจนเฉ
เจธเจฐเฉเจค: www.habr.com