{"id":91723,"date":"2020-08-17T19:42:08","date_gmt":"2020-08-17T17:42:08","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/zapusk-testov-jmeter-v-openshift-ispolzuya-jenkins-pipeline"},"modified":"2020-08-17T19:42:08","modified_gmt":"2020-08-17T17:42:08","slug":"zapusk-testov-jmeter-v-openshift-ispolzuya-jenkins-pipeline","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/zapusk-testov-jmeter-v-openshift-ispolzuya-jenkins-pipeline","title":{"rendered":"JMeteri testide k\u00e4ivitamine OpenShiftis, kasutades Jenkins Pipeline'i.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! <\/p>\n<p><\/p>\n<p>\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0442\u0435\u0441\u0442\u043e\u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 JMeter \u0432 OpenShift&#8217;e \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Jenkins&#8217;a \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u044b \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u0435\u043c \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f (\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 <code>ImageStreams<\/code>, <code>BuildConfig<\/code>, <code>Job<\/code> \u0438 \u043f\u0440\u043e\u0447) \u0432 \u0440\u0443\u0447\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043f\u0438\u0448\u0438\u043c Jenkins Pipeline.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u0443 \u043d\u0430\u0441 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c:<\/p>\n<p><\/p>\n<ol>\n<li>\u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 OpenShift (v3.11) \u043a\u043b\u0430\u0441\u0442\u0435\u0440<\/li>\n<li>Jenkins server \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c\u0438 \u0443\u0447\u0435\u0442\u043d\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0432 OpenShift<\/li>\n<li>\u0444\u0430\u0439\u043b <code>apache-jmeter-5.2.tgz<\/code><\/li>\n<\/ol>\n<p><\/p>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0442\u0435\u0441\u0442\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 <code>HTTP Request<\/code> \u043d\u0430 <code>ya.ru<\/code> \u0432 \u043e\u0434\u0438\u043d \u043f\u043e\u0442\u043e\u043a. <\/p>\n<p><\/p>\n<h3 id=\"sozdanie-proekta-v-openshift\">\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 OpenShift<\/h3>\n<p><\/p>\n<p>\u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f. \u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c <code>perftest<\/code> \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">$ oc new-project perftest --display-name=&quot;Performance Tests&quot; --description=&quot;Performance Tests - JMeter&quot;<\/code><\/pre>\n<p><\/p>\n<p>\u041d\u0430\u0441 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0435\u0440\u0435\u043a\u0438\u043d\u0435\u0442 \u0432 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 <code>perftest<\/code>, \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c, \u0447\u0442\u043e \u044d\u0442\u043e \u0442\u0430\u043a:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">$ oc project\nUsing project &quot;perftest&quot; on server &quot;https:\/\/127.0.0.1:8443&quot;.<\/code><\/pre>\n<p><\/p>\n<h3 id=\"sozdanie-storagea\">\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 Storage&#8217;a<\/h3>\n<p><\/p>\n<p>\u041e\u0442\u0447\u0435\u0442\u044b \u0442\u0435\u0441\u0442\u043e\u0432 \u0431\u0443\u0434\u0443\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u0432 \u043e\u0431\u0449\u0435\u043c \u0434\u043b\u044f \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0438 <code>jmeter-meter<\/code>&#8216;a \u043c\u0435\u0441\u0442\u0435 \u2014 <code>\/jmeter\/reports<\/code>. <\/p>\n<p><\/p>\n<p>\u0421\u0442\u043e\u0440\u0430\u0434\u0436\u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043b\u0443\u0447\u0448\u0435 \u0441\u0435\u0439\u0447\u0430\u0441, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0430 \u043d\u0438\u0445 \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0432\u044f\u0437\u0430\u043d\u044b POD&#8217;\u044b <code>jmeter-web<\/code> \u0438 <code>jmeter-master<\/code>. <\/p>\n<p><\/p>\n<p>\u0411\u043e\u043b\u0435\u0435 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043f\u043e \u0441\u0442\u043e\u0440\u0430\u0434\u0436\u0430\u043c \u0432\u044b \u043d\u0430\u0439\u0434\u0435\u0442\u0435 \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.openshift.com\/container-platform\/3.11\/architecture\/additional_concepts\/storage.html\">Persistent Storage<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c yaml-\u0444\u0430\u0439\u043b\u044b \u0434\u043b\u044f <code>PV<\/code> \u0438 <code>PVC<\/code>.<\/p>\n<p><\/p>\n<p><strong>pv.yaml<\/strong><\/p>\n<p><\/p>\n<pre><code class=\"bash\">$ tee pv.yaml&lt;&lt;EOF\napiVersion: v1\nkind: PersistentVolume\nmetadata:\n  name: jmeter-reports\nspec:\n  capacity:\n    storage: 10Gi\n  accessModes:\n    - ReadWriteMany\n  glusterfs:\n    endpoints: glusterfs-cluster\n    path: \/jmeter\/reports\n    readOnly: false\n  persistentVolumeReclaimPolicy: Retain\nEOF<\/code><\/pre>\n<p><\/p>\n<p><strong>pvc.yaml<\/strong><\/p>\n<p><\/p>\n<pre><code class=\"bash\">$ tee pvc.yaml&lt;&lt;EOF\napiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n  name: jmeter-reports\nspec:\n  accessModes:\n    - ReadWriteMany\n  resources:\n    requests:\n      storage: 10Gi\nEOF<\/code><\/pre>\n<p><\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c <code>PV<\/code> \u0438 <code>PVC<\/code> \u0432 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0438 OpenShift&#8217;a:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">$ oc create -f pv.yaml -n perftest\n$ oc create -f pvc.yaml -n perftest<\/code><\/pre>\n<p><\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0441\u0442\u0430\u0442\u0443\u0441 \u0434\u043b\u044f <code>PVC<\/code>:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">$ oc get pvc -n perftest\nNAME             STATUS    VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS        AGE\njmeter-reports   Bound     pvc-b0e5f152-db4b-11ea-a497-566f75280024   10Gi       RWX            glusterfs-storage   8m<\/code><\/pre>\n<p><\/p>\n<p>\u0412\u043e\u0442, \u043a\u0430\u043a \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0432 GUI:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u0417\u0430\u043f\u0443\u0441\u043a \u0442\u0435\u0441\u0442\u043e\u0432 JMeter \u0432 OpenShift, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f Jenkins Pipeline\" src=\"\/wp-content\/uploads\/2020\/08\/713f764844c9b3bbe989982e5fb4a7ce.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h3 id=\"sozdanie-bazovogo-obraza-jmeter\">\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0437\u0430 JMeter<\/h3>\n<p><\/p>\n<p>\u041f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e <code>ImageStream<\/code> \u0438 <code>BuildConfig<\/code>. <\/p>\n<p><\/p>\n<p>\u0412\u0441\u044e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.openshift.com\/container-platform\/3.11\/architecture\/core_concepts\/builds_and_image_streams.html\">Builds and Image Streams<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u0441\u0431\u043e\u0440\u043a\u0438 \u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <code>Docker<\/code> \u0438\u0437 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430.<\/p>\n<p><\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043e\u0431\u0440\u0430\u0437 <code>jmeter-base<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043e\u0441\u043d\u043e\u0432\u043e\u0439 \u0434\u043b\u044f <code>jmeter-master<\/code>.<\/p>\n<p><\/p>\n<p><strong>Dockerfile<\/strong><\/p>\n<p><\/p>\n<pre><code class=\"bash\">FROM openjdk:8u212-jdk\n\nARG JMETER_VER=&quot;5.2&quot;\nENV JMETER_HOME \/jmeter\/apache-jmeter-$JMETER_VER\nENV PATH $JMETER_HOME\/bin:$PATH\n\nRUN mkdir -p \/jmeter\/results \n    &amp;&amp; mkdir \/jmeter\/tests\n\nWORKDIR \/jmeter\n\nCOPY apache-jmeter-$JMETER_VER.tgz .\n\nRUN tar -xzf $JMETER_HOME.tgz \n    &amp;&amp; rm $JMETER_HOME.tgz \n    &amp;&amp; ls -la\n\nRUN sed -i s\/#server.rmi.ssl.disable=false\/server.rmi.ssl.disable=true\/ $JMETER_HOME\/bin\/jmeter.properties\n\nEXPOSE 60000<\/code><\/pre>\n<p><\/p>\n<p><strong>is.yaml<\/strong><\/p>\n<p><\/p>\n<pre><code class=\"bash\">$ tee is.yaml&lt;&lt;EOF\napiVersion: v1\nkind: ImageStream\nmetadata:\n  labels:\n    build: jmeter-base\n  name: jmeter-base\nEOF<\/code><\/pre>\n<p><\/p>\n<p><strong>bc.yaml<\/strong><\/p>\n<p><\/p>\n<pre><code class=\"bash\">$ tee bc.yaml&lt;&lt;EOF\napiVersion: v1\nkind: BuildConfig\nmetadata:\n  name: jmeter-base\nspec:\n  failedBuildsHistoryLimit: 5\n  nodeSelector: null\n  output:\n    to:\n      kind: ImageStreamTag\n      name: 'jmeter-base:latest'\n  postCommit: {}\n  resources: {}\n  runPolicy: Serial\n  source:\n    binary: {}\n    type: Binary\n  strategy:\n    dockerStrategy:\n      from:\n        kind: ImageStreamTag\n        name: 'openjdk:8u212-jdk'\n    type: Docker\n  successfulBuildsHistoryLimit: 5\nEOF<\/code><\/pre>\n<p><\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u044b <code>IS<\/code> \u0438 <code>BC<\/code>:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">$ oc create -f is.yaml -n perftest\n$ oc create -f bc.yaml -n perftest<\/code><\/pre>\n<p><\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u0431\u0435\u0440\u0435\u043c \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u043e\u0431\u0440\u0430\u0437 <code>jmeter-base<\/code>:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">$ oc start-build jmeter-base -n perftest --from-dir=. --follow<\/code><\/pre>\n<p><\/p>\n<h3 id=\"jmeter-web\">JMeter WEB<\/h3>\n<p><\/p>\n<p><code>jmeter-web<\/code> \u044d\u0442\u043e \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440 Apache. \u0412 \u0435\u0433\u043e \u0437\u0430\u0434\u0430\u0447\u0443 \u0432\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0441 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430. <\/p>\n<p><\/p>\n<p>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d <code>Dockerfile<\/code> \u0438 \u0444\u0430\u0439\u043b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 <code>httpd.conf<\/code>. \u0414\u043b\u044f \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b <code>DocumentRoot<\/code> \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code>\/jmeter\/reports<\/code>, \u0442.\u0435. \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f \u0432 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<p><\/p>\n<p><strong>Dockerfile<\/strong><\/p>\n<p><\/p>\n<pre><code class=\"bash\">$ tee Dockerfile&lt;&lt;EOF\nFROM httpd:2.4\n\nCOPY httpd.conf \/usr\/local\/apache2\/conf\/httpd.conf\nRUN chmod -R 777 \/usr\/local\/apache2\/logs\n\nEXPOSE 8080\n\nCMD [&quot;httpd&quot;, &quot;-D&quot;, &quot;FOREGROUND&quot;]\nEOF<\/code><\/pre>\n<p><\/p>\n<p><strong>is.yaml<\/strong><\/p>\n<p><\/p>\n<pre><code class=\"bash\">$ tee is.yaml&lt;&lt;EOF\napiVersion: v1\nkind: ImageStream\nmetadata:\n  generation: 1\n  labels:\n    build: jmeter-web\n  name: jmeter-web\nEOF<\/code><\/pre>\n<p><\/p>\n<p><strong>bc.yaml<\/strong><\/p>\n<p><\/p>\n<pre><code class=\"bash\">$ tee bc.yaml&lt;&lt;EOF\napiVersion: v1\nkind: BuildConfig\nmetadata:\n  name: jmeter-web\nspec:\n  failedBuildsHistoryLimit: 5\n  nodeSelector: null\n  output:\n    to:\n      kind: ImageStreamTag\n      name: 'jmeter-web:latest'\n  runPolicy: Serial\n  source:\n    binary: {}\n    type: Binary\n  strategy:\n    dockerStrategy:\n      from:\n        kind: ImageStreamTag\n        name: 'httpd:2.4'\n    type: Docker\n  successfulBuildsHistoryLimit: 5\nEOF<\/code><\/pre>\n<p><\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c <code>ImageStream<\/code> \u0438 <code>BuildConfig<\/code> \u043e\u0431\u044a\u0435\u043a\u0442\u044b:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">$ oc create -f is.yaml -n perftest\n$ oc create -f bc.yaml -n perftest<\/code><\/pre>\n<p><\/p>\n<p>\u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u043e\u0431\u0440\u0430\u0437 \u0438\u0437 <code>Dockerfile<\/code>:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">$ oc start-build jmeter-web -n perftest --from-dir=. --follow<\/code><\/pre>\n<p><\/p>\n<p><strong>dc.yaml<\/strong><\/p>\n<p><\/p>\n<pre><code class=\"bash\">$ tee dc.yaml&lt;&lt;EOF\napiVersion: apps.openshift.io\/v1\nkind: DeploymentConfig\nmetadata:\n  name: jmeter-web\nspec:\n  replicas: 1\n  template:\n    metadata:\n      labels:\n        name: jmeter-web\n    spec:\n      containers:\n        - image: 172.30.1.1:5000\/perftest\/jmeter-web\n          name: jmeter-web\n          volumeMounts:\n            - mountPath: \/jmeter\/reports\n              name: jmeter-reports\n          ports:\n            - containerPort: 80\n              protocol: TCP\n            - containerPort: 8080\n              protocol: TCP\n      volumes:\n        - name: jmeter-reports\n          persistentVolumeClaim:\n            claimName: jmeter-reports\nEOF<\/code><\/pre>\n<p><\/p>\n<p><strong>sc.yaml<\/strong><\/p>\n<p><\/p>\n<pre><code class=\"bash\">$ tee sc.yaml&lt;&lt;EOF\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app: jmeter-web\n  name: jmeter-web\nspec:\n  ports:\n    - name: 8080-tcp\n      port: 8080\n      protocol: TCP\n      targetPort: 8080\n  selector:\n    deploymentconfig: jmeter-web\n  sessionAffinity: None\n  type: ClusterIP\nEOF<\/code><\/pre>\n<p><\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u044b <code>Service<\/code> \u0438 <code>DeploymentConfig<\/code>:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">$ oc create -f sc.yaml -n perftest\n$ oc create -f dc.yaml -n perftest<\/code><\/pre>\n<p><\/p>\n<h3 id=\"jmeter-master\">Jmeter-master<\/h3>\n<p><\/p>\n<p>\u0417\u0430\u0439\u043c\u0435\u043c\u0441\u044f \u0434\u0435\u043f\u043b\u043e\u0439\u043c\u0435\u043d\u0442\u043e\u043c \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 Apache.<\/p>\n<p><\/p>\n<p>\u042d\u0442\u043e Dockerfile <code>jmeter-master<\/code>&#8216;a, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 <code>jmeter-base<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0442\u0435\u0441\u0442\u044b \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0432 \u0441\u0442\u043e\u0440\u0430\u0434\u0436.<\/p>\n<p><\/p>\n<p><strong>Dockerfile<\/strong><\/p>\n<p><\/p>\n<p><code>Dockerfile<\/code> \u0434\u043b\u044f <code>jmeter-master<\/code>, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 <code>jmeter-base<\/code>.<\/p>\n<p><\/p>\n<pre><code class=\"bash\">FROM jmeter-base\n\nARG JMETER_VER=&quot;5.2&quot;\nENV JMETER_HOME \/jmeter\/apache-jmeter-$JMETER_VER\nENV PATH $JMETER_HOME\/bin:$PATH\n\nWORKDIR \/jmeter\nCOPY run.sh \/jmeter\/\nCOPY tests\/*.jmx \/jmeter\/tests\/\nRUN chmod +x \/jmeter\/run.sh\n\nENTRYPOINT [&quot;\/bin\/bash&quot;]\nCMD [&quot;\/jmeter\/run.sh&quot;]<\/code><\/pre>\n<p><\/p>\n<p><strong>run.sh<\/strong><\/p>\n<p><\/p>\n<p><code>run.sh<\/code> \u044d\u0442\u043e \u0441\u043a\u0440\u0438\u043f\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a JMeter&#8217;a \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e <code>files<\/code>.<\/p>\n<p><\/p>\n<p>\u041f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0441\u043a\u0440\u0438\u043f\u0442 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u0442\u0435\u0441\u0442\u044b, \u0442\u0430\u043a \u0447\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438. \u041d\u043e \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u043e\u0434 \u0441\u0432\u043e\u0438 \u043d\u0443\u0436\u0434\u044b.<\/p>\n<p><\/p>\n<pre><code class=\"bash\">#!\/bin\/bash\n\nset -e\n\nif [ -d &quot;\/jmeter\/reports\/files&quot; ]\nthen\n    echo &quot;Directory \/jmeter\/reports\/files exist - OK&quot;\nelse\n    echo &quot;Creating \/jmeter\/reports\/files directory&quot;\n    mkdir \/jmeter\/reports\/files\nfi\n\nif [ -d &quot;\/jmeter\/reports\/dashboards&quot; ]\nthen\n    echo &quot;Directory \/jmeter\/reports\/dashboards exist&quot;\nelse\n    echo &quot;Creating \/jmeter\/reports\/dashboards directory&quot;\n    mkdir \/jmeter\/reports\/dashboards\nfi\n\necho &quot;*** JMeter START Tests ***&quot;\n\nfor item in $(ls -1 \/jmeter\/tests | grep jmx)\ndo\n    echo &quot;*** Removing dashboard directory for $item&quot;\n    rm -rdf \/jmeter\/reports\/dashboards\/${item}*\n\n    echo &quot;*** Removing tests directory for $item&quot;\n    rm -rdf \/jmeter\/reports\/files\/${item}*\n\n    echo &quot;*** Testing a $item file ***&quot;\n    jmeter -n -t \/jmeter\/tests\/${item} -l \/jmeter\/reports\/files\/${item}-report.jtl -e -o \/jmeter\/reports\/dashboards\/${item}-dash\ndone<\/code><\/pre>\n<p><\/p>\n<p><strong>is.yaml<\/strong><\/p>\n<p><\/p>\n<pre><code class=\"bash\">$ tee is.yaml&lt;&lt;EOF\napiVersion: image.openshift.io\/v1\nkind: ImageStream\nmetadata:\n  generation: 1\n  labels:\n    build: jmeter-master\n  name: jmeter-master\nEOF<\/code><\/pre>\n<p><\/p>\n<p><strong>bc.yaml<\/strong><\/p>\n<p><\/p>\n<pre><code class=\"bash\">$ tee bc.yaml&lt;&lt;EOF\napiVersion: build.openshift.io\/v1\nkind: BuildConfig\nmetadata:\n  name: jmeter-master\nspec:\n  failedBuildsHistoryLimit: 5\n  nodeSelector: null\n  output:\n    to:\n      kind: ImageStreamTag\n      name: 'jmeter-master:latest'\n  runPolicy: Serial\n  source:\n    binary: {}\n    type: Binary\n  strategy:\n    dockerStrategy:\n      from:\n        kind: ImageStreamTag\n        name: 'jmeter-base:latest'\n    type: Docker\n  successfulBuildsHistoryLimit: 5\nEOF<\/code><\/pre>\n<p><\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c <code>IS<\/code> \u0438 <code>BC<\/code> \u043e\u0431\u044a\u0435\u043a\u0442\u044b:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">$ oc create -f is.yaml -n perftest\n$ oc create -f bc.yaml -n perftest<\/code><\/pre>\n<p><\/p>\n<p>\u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c <code>jmeter-master<\/code> \u043e\u0431\u0440\u0430\u0437:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">$ oc start-build jmeter-master -n perftest --from-dir=. --follow<\/code><\/pre>\n<p><\/p>\n<p><strong>Job<\/strong><\/p>\n<p><\/p>\n<p><code>Job<\/code>&#8216;\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 <code>OpenShift<\/code>&#8216;e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043e\u0434\u0438\u043d \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e <code>POD<\/code>&#8216;\u043e\u0432 \u0438 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u044b\/\u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f .<\/p>\n<p><\/p>\n<pre><code class=\"bash\">$ tee job.yaml&lt;&lt;EOF\napiVersion: batch\/v1\nkind: Job\nmetadata:\n  name: jmeter-master\n  labels:\n    jobName: jmeter-master\nspec:\n  completions: 1\n  parallelism: 1\n  template:\n    metadata:\n      name: jmeter-master\n      labels:\n        jobName: jmeter-master\n    spec:\n      containers:\n        - name: jmeter-master\n          image: 172.30.1.1:5000\/perftest\/jmeter-master:latest\n          volumeMounts:\n            - mountPath: \/jmeter\/reports\n              name: jmeter-reports\n          imagePullPolicy: Always\n      volumes:\n        - name: jmeter-reports\n          persistentVolumeClaim:\n            claimName: jmeter-reports\n      restartPolicy: Never\n      terminationGracePeriodSeconds: 30\nEOF<\/code><\/pre>\n<p><\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442 <code>Job<\/code>:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">$ oc create -f job.yaml -n perftest<\/code><\/pre>\n<p><\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0441\u0442\u0430\u0442\u0443\u0441 \u0434\u0436\u043e\u0431\u044b:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">$ oc get jobs -n perftest\nNAME            DESIRED   SUCCESSFUL   AGE\njmeter-master   1         1            5m<\/code><\/pre>\n<p><\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0443\u0434\u0430\u043b\u0438\u0442\u044c <code>Job<\/code> \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">$ oc delete jobs\/jmeter-master -n perftest --ignore-not-found=true<\/code><\/pre>\n<p><\/p>\n<h3 id=\"jenkins-pipeline\">Jenkins Pipeline<\/h3>\n<p><\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f. \u0415\u0449\u0435 \u0440\u0430\u0437 \u043f\u0440\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u0448\u0430\u0433\u0438:<\/p>\n<p><\/p>\n<ol>\n<li><code>git clone<\/code><\/li>\n<li><code>oc whoami -t<\/code><\/li>\n<li><code>oc start-build ...<\/code><\/li>\n<li><code>oc delete jobs\/jmeter-master<\/code><\/li>\n<li><code>oc create -f job.yaml -n perftest<\/code><\/li>\n<\/ol>\n<p><\/p>\n<p>\u041d\u0438\u0436\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f, \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 OpenShift <code>Job<\/code>&#8216;\u044b. <\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">#!groovy\n\npipeline {\n\n    agent any\n\n    stages {\n\n        stage('Start Notifications') {\n            steps {\n                echo &quot;Sending Email Notification&quot;\n            }\n            post {\n                always {\n                    echo &quot;STARTED - Performance Tests&quot;\n                    mail(to: 'username@srv.net', from: &quot;jenkins@srv.net&quot;, subject: &quot;START - Performance Tests&quot;,mimeType: &quot;text\/html&quot;, body: &quot;&lt;strong&gt;START - Performance Tests&lt;\/strong&gt;&lt;br \/&gt;&lt;br \/&gt;Project: Name of Project&lt;br \/&gt;Environment: PerfTest&lt;br \/&gt;Build number: ${env.BUILD_NUMBER}&lt;br \/&gt;Build URL:   ${env.BUILD_URL}&quot;\n                }\n            }\n        }\n\n        stage('Git checkout') {\n            steps {\n                ...\n            }\n        }\n\n        stage('Perf Tests') {\n            steps {\n                script {\n                    sh '''\n                        OC_CMD1=&quot;oc login -u=username -p=PASS -n=perftest \n                        --server=https:\/\/...:8443&quot;\n\n                        $OC_CMD1\n\n                        OC_TOKEN=`oc whoami -t`\n\n                        OC_CMD2=&quot;oc --token=$OC_TOKEN --server=https:\/\/...:8443 \n                        start-build jmeter-master -n=perftest --from-dir=.\/master \n                        --follow=true&quot;\n\n                        OC_CMD3=&quot;oc --token=$OC_TOKEN --server=https:\/\/...:8443 \n                        delete jobs\/jmeter-master -n=perftest --ignore-not-found=true&quot;\n\n                        OC_CMD4=&quot;oc--token=$OC_TOKEN --server=https:\/\/...:8443 \n                        create -f .\/master\/job.yaml -n=perftest&quot;\n\n                        $OC_CMD2\n                        $OC_CMD3\n                        $OC_CMD4\n                    '''\n                }\n            }\n        }\n\n        post {\n            failure {\n                echo &quot;FAILED - Performance Tests&quot;\n                mail(to: 'username@srv.net', from: &quot;jenkins@srv.net&quot;, subject: &quot;FAILED - Performance Tests&quot;,mimeType: &quot;text\/html&quot;, body: &quot;&lt;strong&gt;FAILED - Performance Tests&lt;\/strong&gt;&lt;br \/&gt;&lt;br \/&gt;Project: Name of Project&lt;br \/&gt;Environment: PerfTest&lt;br \/&gt;Build number: ${env.BUILD_NUMBER}&lt;br \/&gt;Build URL: ${env.BUILD_URL}&quot;\n                }\n\n            success {\n                echo &quot;SUCCESSED - Performance Tests&quot;\n                mail(to: 'username@srv.net', from: &quot;jenkins@srv.net&quot;, subject: &quot;SUCCESSED - Performance Tests&quot;,mimeType: &quot;text\/html&quot;, body: &quot;&lt;strong&gt;SUCCESSED - Performance Tests&lt;\/strong&gt;&lt;br \/&gt;&lt;br \/&gt;Project: Name of Project&lt;br \/&gt;Environment: PerfTest&lt;br \/&gt;Build number: ${env.BUILD_NUMBER}&lt;br \/&gt;Build URL:   ${env.BUILD_URL}&quot;\n            }\n        }\n\n    }\n}<\/code><\/pre>\n<p><\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a Pipeline \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u0430\u043b, \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0443\u044e \u043f\u043e\u0447\u0442\u0443 <code>'username@srv.net<\/code> \u043e\u0442 <code>jenkins@srv.net<\/code>. <\/p>\n<p><\/p>\n<p>\u041f\u0435\u0440\u0435\u0439\u0434\u044f \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 <noindex><a rel=\"nofollow\" href=\"http:\/\/jmeter-web.127.0.0.1.nip.io\/\">http:\/\/jmeter-web.127.0.0.1.nip.io\/<\/a><\/noindex> \u0443\u0432\u0438\u0434\u0438\u043c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e <code>files<\/code>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u043e\u0442\u0447\u0435\u0442\u044b \u0442\u0435\u0441\u0442\u043e\u0432:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u0417\u0430\u043f\u0443\u0441\u043a \u0442\u0435\u0441\u0442\u043e\u0432 JMeter \u0432 OpenShift, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f Jenkins Pipeline\" src=\"\/wp-content\/uploads\/2020\/08\/48d21b258cce367d1feaf3170aac3893.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0430\u0439\u043b\u0430 <code>ya.HTTP.Request.jmx-report.jtk<\/code>:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">timeStamp,elapsed,label,responseCode,responseMessage,threadName,dataType,success,failureMessage,bytes,sentBytes,grpThreads,allThreads,URL,Latency,IdleTime,Connect\n1597311456443,569,Yandex - HTTP Request,200,Ok,Thread Group 1-1,text,true,,59449,220,1,1,https:\/\/ya.ru\/,145,0,57\n1597311456443,147,Yandex - HTTP Request-0,302,Found,Thread Group 1-1,,true,,478,110,1,1,http:\/\/ya.ru\/,145,0,57\n1597311456592,420,Yandex - HTTP Request-1,200,Ok,Thread Group 1-1,text,true,,58971,110,1,1,https:\/\/ya.ru\/,370,0,259<\/code><\/pre>\n<p><\/p>\n<h3 id=\"zaklyuchenie\">\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h3>\n<p><\/p>\n<p>\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u044b\u043b \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d \u043e\u0434\u0438\u043d \u0438\u0437 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0442\u0435\u0441\u0442\u043e\u0432 JMeter \u0432 OpenShift \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0438. \u0421\u0434\u0435\u043b\u0430\u043b\u0438 \u0432\u0441\u0435 \u0448\u0430\u0433\u0438 \u0432 \u0440\u0443\u0447\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043b\u0438 Jenkins Pipeline \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0442\u0435\u0441\u0442\u043e\u0432.<\/p>\n<p><\/p>\n<h3 id=\"istochniki-i-dokumentaciya\">\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438 \u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/www.testautomationguru.com\/jmeter-distributed-load-testing-using-docker\/\">JMeter \u2013 Distributed Load Testing using Docker<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/eleanordare.com\/blog\/2017\/6\/14\/using-a-jenkins-pipeline-to-run-jmeter-tests-in-\">Running JMeter Tests in OpenShift from a Jenkins Pipeline<\/a><\/noindex>openshift<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.openshift.com\/container-platform\/3.11\/architecture\/additional_concepts\/storage.html\">Persistent Storage<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/docs.openshift.com\/container-platform\/3.11\/architecture\/core_concepts\/builds_and_image_streams.html\">Builds and Image Streams<\/a><\/noindex><\/li>\n<\/ul>\n<p>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/tsystems\/blog\/515166\/\">habr.com<\/a> <\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0442\u0435\u0441\u0442\u043e\u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 JMeter \u0432 OpenShift&#8217;e \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Jenkins&#8217;a \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u044b \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u0435\u043c \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f (\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 ImageStreams, BuildConfig, Job \u0438 \u043f\u0440\u043e\u0447) \u0432 \u0440\u0443\u0447\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043f\u0438\u0448\u0438\u043c Jenkins Pipeline. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u0443 \u043d\u0430\u0441 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c: \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 OpenShift (v3.11) \u043a\u043b\u0430\u0441\u0442\u0435\u0440 Jenkins [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":91724,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-91723","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0442\u0435\u0441\u0442\u043e\u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 JMeter \u0432 OpenShift&#039;e \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Jenkins&#039;a \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u044b \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u0435\u043c \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f (\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 ImageStreams, BuildConfig, Job \u0438 \u043f\u0440\u043e\u0447) \u0432 \u0440\u0443\u0447\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043f\u0438\u0448\u0438\u043c Jenkins Pipeline. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u0443 \u043d\u0430\u0441 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c: \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 OpenShift (v3.11) \u043a\u043b\u0430\u0441\u0442\u0435\u0440 Jenkins\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/zapusk-testov-jmeter-v-openshift-ispolzuya-jenkins-pipeline\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0417\u0430\u043f\u0443\u0441\u043a \u0442\u0435\u0441\u0442\u043e\u0432 JMeter \u0432 OpenShift, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f Jenkins Pipeline | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0442\u0435\u0441\u0442\u043e\u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 JMeter \u0432 OpenShift&#039;e \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Jenkins&#039;a \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u044b \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u0435\u043c \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f (\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 ImageStreams, BuildConfig, Job \u0438 \u043f\u0440\u043e\u0447) \u0432 \u0440\u0443\u0447\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043f\u0438\u0448\u0438\u043c Jenkins Pipeline. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u0443 \u043d\u0430\u0441 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c: \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 OpenShift (v3.11) \u043a\u043b\u0430\u0441\u0442\u0435\u0440 Jenkins\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/zapusk-testov-jmeter-v-openshift-ispolzuya-jenkins-pipeline\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-08-17T17:42:08+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-08-17T17:42:08+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47JMeteri testide k\u00e4ivitamine OpenShift'is, kasutades Jenkins Pipeline'i | ProHoster","description":"Tere k\u00f5igile! Selles artiklis tahan jagada \u00fcht v\u00f5imalust k\u00e4ivitada JMeteri j\u00f5udlusteste OpenShift'is, kasutades Jenkins'it automatiseerimise jaoks. Esiteks teeme k\u00f5ik vajalikud toimingud (ImageStreamide, BuildConfig'i, t\u00f6\u00f6de jne loomine) k\u00e4sitsi. Seej\u00e4rel kirjutame Jenkins Pipeline'i. Meie algpunktiks peab olema: t\u00f6\u00f6tav OpenShift (v3.11) klaster Jenkins.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/zapusk-testov-jmeter-v-openshift-ispolzuya-jenkins-pipeline","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0417\u0430\u043f\u0443\u0441\u043a \u0442\u0435\u0441\u0442\u043e\u0432 JMeter \u0432 OpenShift, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f Jenkins Pipeline | ProHoster","og:description":"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0442\u0435\u0441\u0442\u043e\u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 JMeter \u0432 OpenShift'e \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Jenkins'a \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u044b \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u0435\u043c \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f (\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 ImageStreams, BuildConfig, Job \u0438 \u043f\u0440\u043e\u0447) \u0432 \u0440\u0443\u0447\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043f\u0438\u0448\u0438\u043c Jenkins Pipeline. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u0443 \u043d\u0430\u0441 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c: \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 OpenShift (v3.11) \u043a\u043b\u0430\u0441\u0442\u0435\u0440 Jenkins","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/zapusk-testov-jmeter-v-openshift-ispolzuya-jenkins-pipeline","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-08-17T17:42:08+00:00","article:modified_time":"2020-08-17T17:42:08+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"91723","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 12:22:22","updated":"2022-10-03 08:23:59"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/91723","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=91723"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/91723\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/91724"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=91723"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=91723"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=91723"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}