{"id":310604,"date":"2020-09-28T15:00:53","date_gmt":"2020-09-28T15:00:53","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=310604"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=310604","title":{"rendered":"Jenkins Pipeline: \u0437\u0430\u043c\u0435\u0442\u043a\u0438 \u043e\u0431 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438. \u0427\u0430\u0441\u0442\u044c 1"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/company\/dins\/blog\/520220\/\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/9j\/3t\/bg\/9j3tbgtvn9vjih_wrg8myv0agag.png\"><\/p>\n<p>  \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0418\u043b\u044c\u044f \u0413\u0443\u043b\u044f\u0435\u0432, \u044f \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0441\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 Post Deployment Verification \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 DINS.<\/p>\n<p>  \u0412 DINS \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c Jenkins \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u0445: \u043e\u0442 \u0441\u0431\u043e\u0440\u043a\u0438 \u0431\u0438\u043b\u0434\u043e\u0432 \u0434\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0434\u0435\u043f\u043b\u043e\u0435\u0432 \u0438 \u0430\u0432\u0442\u043e\u0442\u0435\u0441\u0442\u043e\u0432. \u0412 \u043c\u043e\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c Jenkins \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0434\u043b\u044f \u0435\u0434\u0438\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441\u043c\u043e\u0443\u043a-\u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u043f\u043e\u0441\u043b\u0435 \u0434\u0435\u043f\u043b\u043e\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043d\u0430\u0448\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u043e\u0442 \u0434\u0435\u0432\u0435\u043b\u043e\u043f\u0435\u0440\u0441\u043a\u0438\u0445 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0439 \u0434\u043e \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0430.<\/p>\n<p>  \u0413\u043e\u0434 \u043d\u0430\u0437\u0430\u0434 \u0434\u0440\u0443\u0433\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0448\u0438 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u044b \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0435\u0433\u043e \u0438\u0437 \u0441\u043e\u0442\u0435\u043d \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432, \u043d\u043e\u0432\u043e\u0433\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0432\u0441\u0435\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0434 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043f\u0430\u0447\u0435\u043a \u0442\u0435\u0441\u0442\u043e\u0432. \u041d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 \u0432\u043e\u0437\u0440\u043e\u0441\u043b\u0430 \u0432 \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u0440\u0430\u0437, \u0438 Jenkins \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b \u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0441 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439 \u0438 \u0441\u0442\u0430\u043b \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0430\u0434\u0430\u0442\u044c. \u041c\u044b \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u043e\u043d\u044f\u043b\u0438, \u0447\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0438 \u0442\u044e\u043d\u0438\u043d\u0433 \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u0430 \u043c\u0443\u0441\u043e\u0440\u0430 \u043c\u043e\u0433\u0443\u0442 \u043b\u0438\u0448\u044c \u043e\u0442\u0441\u0440\u043e\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443, \u043d\u043e \u043d\u0435 \u0440\u0435\u0448\u0430\u0442 \u0435\u0435 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u043d\u0430\u0439\u0442\u0438 \u0443\u0437\u043a\u0438\u0435 \u043c\u0435\u0441\u0442\u0430 Jenkins \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445.<\/p>\n<p>  \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 Jenkins Pipeline, \u0438 \u043f\u043e\u0434\u0435\u043b\u044e\u0441\u044c \u0441\u0432\u043e\u0438\u043c\u0438 \u043d\u0430\u0445\u043e\u0434\u043a\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u0432\u0430\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u044b \u0431\u044b\u0441\u0442\u0440\u0435\u0435. \u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u0435\u043d \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430\u043c, \u043a\u0442\u043e \u0443\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0441 Jenkins, \u043d\u043e \u0445\u043e\u0442\u044f\u0442 \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u0431\u043b\u0438\u0436\u0435. <\/p>\n<p>  <a name=\"habracut\"><\/a>  <\/p>\n<h1>\u0427\u0442\u043e \u0437\u0430 \u0437\u0432\u0435\u0440\u044c Jenkins Pipeline<\/h1>\n<p>  Jenkins Pipeline \u2014 \u043c\u043e\u0449\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b. Jenkins \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u043d\u0430\u0431\u043e\u0440 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0432 \u0432\u0438\u0434\u0435 Groovy DSL, \u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u0435\u043c\u043d\u0438\u043a\u043e\u043c \u043f\u043b\u0430\u0433\u0438\u043d\u0430 Build Flow. <\/p>\n<p>  \u0421\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u0430 Build Flow \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u043b\u0441\u044f \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c Java-\u043f\u043e\u0442\u043e\u043a\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b Groovy-\u043a\u043e\u0434 \u0431\u0435\u0437 \u0431\u0430\u0440\u044c\u0435\u0440\u043e\u0432, \u043f\u0440\u0435\u043f\u044f\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0434\u043e\u0441\u0442\u0443\u043f\u0443 \u043a \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u043c\u0443 API Jenkins. \u0414\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u043b \u0443\u0433\u0440\u043e\u0437\u0443 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u0447\u0442\u043e \u0432\u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0438 \u0441\u0442\u0430\u043b\u043e \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043f\u0440\u0438\u0447\u0438\u043d \u043e\u0442\u043a\u0430\u0437\u0430 \u043e\u0442 Build Flow, \u043d\u043e \u043f\u043e\u0441\u043b\u0443\u0436\u0438\u043b\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u0441\u044b\u043b\u043a\u043e\u0439 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0433\u043e \u0438 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u2014 Jenkins Pipeline. <\/p>\n<p>  \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e\u0431 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f Jenkins Pipeline \u043c\u043e\u0436\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c \u0438\u0437 <a href=\"https:\/\/www.cloudbees.com\/blog\/move-toward-next-generation-pipelines\/\">\u0441\u0442\u0430\u0442\u044c\u0438 \u0430\u0432\u0442\u043e\u0440\u0430 Build Flow<\/a> \u0438\u043b\u0438 <a href=\"https:\/\/habr.com\/ru\/company\/jugru\/blog\/334374\/\">\u0434\u043e\u043a\u043b\u0430\u0434\u0430 \u041e\u043b\u0435\u0433\u0430 \u041d\u0435\u043d\u0430\u0448\u0435\u0432\u0430 \u043e Groovy DSL \u0432 Jenkins<\/a>.<\/p>\n<h1>\u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 Jenkins Pipeline<\/h1>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c\u0441\u044f, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u044b \u0438\u0437\u043d\u0443\u0442\u0440\u0438. \u041e\u0431\u044b\u0447\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f\u0442, \u0447\u0442\u043e Jenkins Pipeline \u2014 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u0432\u0438\u0434 \u0437\u0430\u0434\u0430\u043d\u0438\u0439 \u0432 Jenkins, \u043d\u0435\u043f\u043e\u0445\u043e\u0436\u0438\u0439 \u043d\u0430 \u0441\u0442\u0430\u0440\u044b\u0435 \u0434\u043e\u0431\u0440\u044b\u0435 freestyle-\u0434\u0436\u043e\u0431\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u043a\u043b\u0438\u043a\u0430\u0442\u044c \u0432 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435. \u0421 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u044d\u0442\u043e, \u043c\u043e\u0436\u0435\u0442, \u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a, \u043d\u043e \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b Jenkins \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u044b \u2014 \u043d\u0430\u0431\u043e\u0440 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0432 \u043a\u043e\u0434. <\/p>\n<h3>\u0421\u0445\u043e\u0434\u0441\u0442\u0432\u0430 Pipeline \u0438 Freestyle \u0434\u0436\u043e\u0431\u044b<\/h3>\n<p>  <\/p>\n<ul>\n<li>\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0434\u0436\u043e\u0431\u044b (\u043d\u0435 \u0448\u0430\u0433\u043e\u0432) \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435 config.xml<\/li>\n<li>\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 config.xml<\/li>\n<li>\u0422\u0440\u0438\u0433\u0433\u0435\u0440\u044b \u0442\u043e\u0436\u0435 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 config.xml<\/li>\n<li>\u0418 \u0434\u0430\u0436\u0435 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043f\u0446\u0438\u0438 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 config.xml <\/li>\n<\/ul>\n<p>  <b>\u0422\u0430\u043a. \u0421\u0442\u043e\u043f.<\/b> \u0412 <a href=\"https:\/\/www.jenkins.io\/doc\/book\/pipeline\/syntax\/\">\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a> \u0441\u043a\u0430\u0437\u0430\u043d\u043e, \u0447\u0442\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u044b \u0438 \u043e\u043f\u0446\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432 Pipeline. \u0413\u0434\u0435 \u0436\u0435 \u043f\u0440\u0430\u0432\u0434\u0430? <\/p>\n<p>  \u041f\u0440\u0430\u0432\u0434\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0432 Pipeline, \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0434\u043e\u0431\u0430\u0432\u044f\u0442\u0441\u044f \u0432 \u0440\u0430\u0437\u0434\u0435\u043b \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0432 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0434\u0436\u043e\u0431\u044b. \u0412\u0435\u0440\u0438\u0442\u044c \u043c\u043d\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b <a href=\"https:\/\/github.com\/jenkinsci\/pipeline-model-definition-plugin\/releases\/tag\/pipeline-model-definition-1.5.0\">\u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0440\u0435\u0434\u0430\u043a\u0446\u0438\u0438 \u043f\u0438\u0441\u0430\u043b \u044f<\/a>, \u043d\u043e \u043e\u0431 \u044d\u0442\u043e\u043c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0430\u0442\u044c\u0438. <\/p>\n<h3>\u041e\u0442\u043b\u0438\u0447\u0438\u044f Pipeline \u0438 Freestyle \u0434\u0436\u043e\u0431\u044b<\/h3>\n<p>  <\/p>\n<ul>\n<li>\u041d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u0441\u0442\u0430\u0440\u0442\u0430 \u0434\u0436\u043e\u0431\u044b Jenkins \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0437\u043d\u0430\u0435\u0442 \u043f\u0440\u043e \u0430\u0433\u0435\u043d\u0442\u0430 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u0436\u043e\u0431\u044b<\/li>\n<li>\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u043e\u0434\u043d\u043e\u043c groovy-\u0441\u043a\u0440\u0438\u043f\u0442\u0435<\/li>\n<\/ul>\n<h3>\u0417\u0430\u043f\u0443\u0441\u043a Jenkins Declarative Pipeline<\/h3>\n<p>  \u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 Jenkins Pipeline \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0448\u0430\u0433\u043e\u0432:  <\/p>\n<ol>\n<li>\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 config.xml<\/li>\n<li>\u0421\u0442\u0430\u0440\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u0442\u043e\u043a\u0430 (\u043b\u0435\u0433\u043a\u043e\u0432\u0435\u0441\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044f) \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u043d\u0438\u044f <\/li>\n<li>\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0430<\/li>\n<li>\u041f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0434\u0435\u0440\u0435\u0432\u0430<\/li>\n<li>\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0437\u0430\u0434\u0430\u043d\u0438\u044f<\/li>\n<li>\u041e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0438 \u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u0435<\/li>\n<li>\u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0432 \u0444\u0430\u0439\u043b\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443<\/li>\n<li>\u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0432 groovy-\u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u0435 <\/li>\n<li>\u0417\u0430\u043f\u0440\u043e\u0441 \u0430\u0433\u0435\u043d\u0442\u0430 \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u0438\u043b\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0448\u0430\u0433\u0430<\/li>\n<\/ol>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/4p\/7d\/jo\/4p7djocbtdtbkixq7qiga0j0w4g.png\"><\/p>\n<p>  \u041f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 pipeline-\u0434\u0436\u043e\u0431\u044b Jenkins \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u0438 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0437\u0430\u0434\u0430\u043d\u0438\u0435 \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043d\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435, \u0430 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u043a\u0430\u043a\u043e\u0439 \u0430\u0433\u0435\u043d\u0442 \u043d\u0443\u0436\u0435\u043d \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438. <\/p>\n<p>  \u0414\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0443\u043b \u043f\u043e\u0442\u043e\u043a\u043e\u0432 Jenkins (\u043b\u0435\u0433\u043a\u043e\u0432\u0435\u0441\u043d\u044b\u0445 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u0435\u0439). \u041c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043e\u043d\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435, \u043d\u043e \u043d\u0435 \u0437\u0430\u0442\u0440\u0430\u0433\u0438\u0432\u0430\u044e\u0442 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u043f\u0443\u043b \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u0435\u0439: <br \/>  <img loading=\"lazy\" decoding=\"async\" width=\"400\" height=\"820\" src=\"https:\/\/habrastorage.org\/webt\/ts\/qt\/3f\/tsqt3f6yst5psyy7azhkymfz6o0.png\"><\/p>\n<p>  \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0443\u043b\u0435 \u043d\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043e (\u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438).<\/p>\n<h3>\u0420\u0430\u0431\u043e\u0442\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0432 Pipeline. \u0410 \u0442\u0430\u043a\u0436\u0435 \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u043e\u0432 \u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u043f\u0446\u0438\u0439<\/h3>\n<p>  \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u0443\u043b\u043e\u0439:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/zn\/_p\/_a\/zn_p_arrlafd5wgislhxktefbci.png\"><\/p>\n<p>  \u0418\u0437 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0434\u0436\u043e\u0431\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u0432\u0438\u0434\u0438\u043c \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0443\u0434\u0430\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b Pipeline \u0438\u0437 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430, \u0430 \u0443\u0436\u0435 \u043f\u043e\u0442\u043e\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0432 Pipeline \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438\u0437 \u0434\u0436\u043e\u0431\u044b, \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u0431\u044b\u043b\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u044b \u0438\u0437 Pipeline.<\/p>\n<p>  <b>\u041a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0435\u0442 \u0438\u0437\u043d\u0443\u0442\u0440\u0438?<\/b><br \/>  \u0420\u0430\u0441\u0441\u043c\u043e\u0440\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440 config.xml (\u0444\u0430\u0439\u043b, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0434\u0436\u043e\u0431\u044b):  <\/p>\n<pre><code class=\"xml\">&lt;?xml version='1.1' encoding='UTF-8'?&gt; &lt;flow-definition plugin=&quot;workflow-job@2.35&quot;&gt;   &lt;actions&gt;     &lt;org.jenkinsci.plugins.pipeline.modeldefinition.actions.DeclarativeJobAction plugin=&quot;pipeline-model-definition@1.5.0&quot;\/&gt;     &lt;org.jenkinsci.plugins.pipeline.modeldefinition.actions.DeclarativeJobPropertyTrackerAction plugin=&quot;pipeline-model-definition@1.5.0&quot;&gt;       &lt;jobProperties&gt;         &lt;string&gt;jenkins.model.BuildDiscarderProperty&lt;\/string&gt;       &lt;\/jobProperties&gt;       &lt;triggers\/&gt;       &lt;parameters&gt;         &lt;string&gt;parameter_3&lt;\/string&gt;       &lt;\/parameters&gt;     &lt;\/org.jenkinsci.plugins.pipeline.modeldefinition.actions.DeclarativeJobPropertyTrackerAction&gt;   &lt;\/actions&gt;   &lt;description&gt;&lt;\/description&gt;   &lt;keepDependencies&gt;false&lt;\/keepDependencies&gt;   &lt;properties&gt;     &lt;hudson.model.ParametersDefinitionProperty&gt;       &lt;parameterDefinitions&gt;         &lt;hudson.model.StringParameterDefinition&gt;           &lt;name&gt;parameter_1&lt;\/name&gt;           &lt;description&gt;&lt;\/description&gt;           &lt;defaultValue&gt;&lt;\/defaultValue&gt;           &lt;trim&gt;false&lt;\/trim&gt;         &lt;\/hudson.model.StringParameterDefinition&gt;         &lt;hudson.model.StringParameterDefinition&gt;           &lt;name&gt;parameter_2&lt;\/name&gt;           &lt;description&gt;&lt;\/description&gt;           &lt;defaultValue&gt;&lt;\/defaultValue&gt;           &lt;trim&gt;false&lt;\/trim&gt;         &lt;\/hudson.model.StringParameterDefinition&gt;         &lt;hudson.model.StringParameterDefinition&gt;           &lt;name&gt;parameter_3&lt;\/name&gt;           &lt;description&gt;&lt;\/description&gt;           &lt;defaultValue&gt;&lt;\/defaultValue&gt;           &lt;trim&gt;false&lt;\/trim&gt;         &lt;\/hudson.model.StringParameterDefinition&gt;       &lt;\/parameterDefinitions&gt;     &lt;\/hudson.model.ParametersDefinitionProperty&gt;     &lt;jenkins.model.BuildDiscarderProperty&gt;       &lt;strategy class=&quot;org.jenkinsci.plugins.BuildRotator.BuildRotator&quot; plugin=&quot;buildrotator@1.2&quot;&gt;         &lt;daysToKeep&gt;30&lt;\/daysToKeep&gt;         &lt;numToKeep&gt;10000&lt;\/numToKeep&gt;         &lt;artifactsDaysToKeep&gt;-1&lt;\/artifactsDaysToKeep&gt;         &lt;artifactsNumToKeep&gt;-1&lt;\/artifactsNumToKeep&gt;       &lt;\/strategy&gt;     &lt;\/jenkins.model.BuildDiscarderProperty&gt;     &lt;com.sonyericsson.rebuild.RebuildSettings plugin=&quot;rebuild@1.28&quot;&gt;       &lt;autoRebuild&gt;false&lt;\/autoRebuild&gt;       &lt;rebuildDisabled&gt;false&lt;\/rebuildDisabled&gt;     &lt;\/com.sonyericsson.rebuild.RebuildSettings&gt;   &lt;\/properties&gt;   &lt;definition class=&quot;org.jenkinsci.plugins.workflow.cps.CpsScmFlowDefinition&quot; plugin=&quot;workflow-cps@2.80&quot;&gt;     &lt;scm class=&quot;hudson.plugins.filesystem_scm.FSSCM&quot; plugin=&quot;filesystem_scm@2.1&quot;&gt;       &lt;path&gt;\/path\/to\/jenkinsfile\/&lt;\/path&gt;       &lt;clearWorkspace&gt;true&lt;\/clearWorkspace&gt;     &lt;\/scm&gt;     &lt;scriptPath&gt;Jenkinsfile&lt;\/scriptPath&gt;     &lt;lightweight&gt;true&lt;\/lightweight&gt;   &lt;\/definition&gt;   &lt;triggers\/&gt;   &lt;disabled&gt;false&lt;\/disabled&gt; &lt;\/flow-definition&gt; <\/code><\/pre>\n<p>  \u0412 \u0441\u0435\u043a\u0446\u0438\u0438 <i><b>properties<\/b><\/i> \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u044b \u0438 \u043e\u043f\u0446\u0438\u0438, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f \u0434\u0436\u043e\u0431\u0430. \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0441\u0435\u043a\u0446\u0438\u044f <i><b>DeclarativeJobPropertyTrackerAction<\/b><\/i> \u0441\u043b\u0443\u0436\u0438\u0442 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0435.<\/p>\n<p>  \u041f\u0440\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0438\u0437 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0430, \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0443\u0434\u043b\u0451\u043d \u043a\u0430\u043a \u0438\u0437 <i><b>DeclarativeJobPropertyTrackerAction<\/b><\/i> \u0442\u0430\u043a \u0438 \u0438\u0437 <i><b>properties<\/b><\/i>, \u0442\u0430\u043a \u043a\u0430\u043a Jenkins \u0431\u0443\u0434\u0435\u0442 \u0437\u043d\u0430\u0442\u044c, \u0447\u0442\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0431\u044b\u043b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0435.<\/p>\n<p>  \u041f\u0440\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f, \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u0441\u044f <i><b>DeclarativeJobPropertyTrackerAction<\/b><\/i> \u0438 <i><b>properties<\/b><\/i>, \u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0430.<\/p>\n<p>  \u0418\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0441\u043b\u0438 \u0437\u0430\u0434\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0435, \u0442\u043e \u043e\u043d\u0438 <a href=\"https:\/\/issues.jenkins-ci.org\/browse\/JENKINS-41929\">\u0431\u0443\u0434\u0443\u0442 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0435<\/a>. <\/p>\n<h3>\u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 Jenkins Pipeline<\/h3>\n<p>  \u041a\u043e\u0433\u0434\u0430 Pipeline-\u0441\u043a\u0440\u0438\u043f\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d \u0438 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d, \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u041d\u043e \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f groovy. \u042f \u0432\u044b\u0434\u0435\u043b\u0438\u043b \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0442\u044f\u0436\u0435\u043b\u043e\u0432\u0435\u0441\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u0436\u043e\u0431\u044b: <\/p>\n<p>  <b>\u0412\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 Groovy-\u043a\u043e\u0434\u0430<\/b><br \/>  \u0421\u043a\u0440\u0438\u043f\u0442 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0430 \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435 \u2014 \u043e\u0431 \u044d\u0442\u043e\u043c \u043d\u0435\u043b\u044c\u0437\u044f \u0437\u0430\u0431\u044b\u0432\u0430\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043b\u0438\u0448\u043d\u044e\u044e \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043d\u0430 Jenkins. \u041d\u0430 \u0430\u0433\u0435\u043d\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0448\u0430\u0433\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0442 \u0441 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u0430\u0433\u0435\u043d\u0442\u0430 \u0438\u043b\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u043c\u0438 \u0432\u044b\u0437\u043e\u0432\u0430\u043c\u0438.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/r2\/kq\/er\/r2kqerv4syheimxdgid9ohxvh4w.png\"><\/p>\n<p>  \u0412 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0430\u0445 \u0435\u0441\u0442\u044c \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u043b\u0430\u0433\u0438\u043d, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c <a href=\"https:\/\/www.jenkins.io\/doc\/pipeline\/steps\/http_request\/\">HTTP \u0437\u0430\u043f\u0440\u043e\u0441\u044b<\/a>. \u0412 \u0434\u043e\u0431\u0430\u0432\u043e\u043a \u043e\u0442\u0432\u0435\u0442 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0432 \u0444\u0430\u0439\u043b.<\/p>\n<pre><code class=\"plaintext\">httpRequest  url: 'http:\/\/localhost:8080\/jenkins\/api\/json?pretty=true', outputFile: 'result.json' <\/code><\/pre>\n<p>  \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c\u0441\u044f \u043d\u0430 \u0430\u0433\u0435\u043d\u0442\u0435, \u043f\u043e\u0441\u043b\u0430\u0442\u044c \u0441 \u0430\u0433\u0435\u043d\u0442\u0430 \u0437\u0430\u043f\u0440\u043e\u0441, \u0430 \u043e\u0442\u0432\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 \u0444\u0430\u0439\u043b result.json. \u041d\u043e \u0432\u0441\u0451 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442, \u0438 \u0437\u0430\u043f\u0440\u043e\u0441 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0441 \u0441\u0430\u043c\u043e\u0433\u043e \u0434\u0436\u0435\u043d\u043a\u0438\u043d\u0441\u0430, \u0430 \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0430\u0439\u043b\u0430 \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0430 \u0430\u0433\u0435\u043d\u0442. \u0415\u0441\u043b\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043e\u0442\u0432\u0435\u0442\u0430 \u0432 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0435 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f, \u0442\u043e \u0441\u043e\u0432\u0435\u0442\u0443\u044e \u0437\u0430\u043c\u0435\u043d\u044f\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043d\u0430 curl:<\/p>\n<pre><code class=\"plaintext\">sh  'curl &quot;http:\/\/localhost:8080\/jenkins\/api\/json?pretty=true&quot; -o &quot;result.json&quot;' <\/code><\/pre>\n<p>  <b>\u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u043b\u043e\u0433\u0430\u043c\u0438 \u0438 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u0430\u043c\u0438<\/b><br \/>  \u041d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0442\u043e\u0433\u043e, \u043d\u0430 \u043a\u0430\u043a\u043e\u043c \u0430\u0433\u0435\u043d\u0442\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u043b\u043e\u0433\u0438 \u0438 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f \u043d\u0430 \u0444\u0430\u0439\u043b\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043c\u0430\u0441\u0442\u0435\u0440\u0430 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438.<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0432 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0441\u0435\u043a\u0440\u0435\u0442\u044b (credentials), \u0442\u043e \u043f\u0435\u0440\u0435\u0434 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u043b\u043e\u0433\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e <a href=\"https:\/\/github.com\/jenkinsci\/credentials-binding-plugin\/blob\/master\/src\/main\/java\/org\/jenkinsci\/plugins\/credentialsbinding\/impl\/SecretBuildWrapper.java\">\u0444\u0438\u043b\u044c\u0442\u0440\u0443\u044e\u0442\u0441\u044f \u043d\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0435<\/a>.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/wk\/8i\/l4\/wk8il4djhmydbw77dgloy8ezyx8.png\"><\/p>\n<p>  <b>\u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0448\u0430\u0433\u043e\u0432 (Pipeline Durability)<\/b><br \/>  Jenkins Pipeline \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u0443\u0435\u0442 \u0441\u0435\u0431\u044f \u043a\u0430\u043a \u0437\u0430\u0434\u0430\u0447\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043a\u0443\u0441\u043e\u0447\u043a\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b \u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u044b \u043f\u0440\u0438 \u043f\u0430\u0434\u0435\u043d\u0438\u0438 \u043c\u0430\u0441\u0442\u0435\u0440\u0430. \u041d\u043e \u0437\u0430 \u044d\u0442\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043b\u0430\u0442\u0438\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0437\u0430\u043f\u0438\u0441\u044f\u043c\u0438 \u043d\u0430 \u0434\u0438\u0441\u043a, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0437\u0430\u0434\u0430\u0447\u0438 \u0448\u0430\u0433\u0438 \u0441 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u043e\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u044c\u044e \u0434\u0435\u0442\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0443\u044e\u0442\u0441\u044f \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f \u043d\u0430 \u0434\u0438\u0441\u043a.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/mr\/ux\/sh\/mruxshhjkyxfzao7wop3lnx44cg.png\"><\/p>\n<p>  \u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u0436\u0438\u0432\u0443\u0447\u0435\u0441\u0442\u0438 (pipeline durability) \u0448\u0430\u0433\u0438 \u0433\u0440\u0430\u0444\u0430 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0430 \u0431\u0443\u0434\u0443\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u0432 \u043e\u0434\u043d\u043e\u043c \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0444\u0430\u0439\u043b\u0430\u0445 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0434\u0436\u043e\u0431\u044b. \u0412\u044b\u0434\u0435\u0440\u0436\u043a\u0430 \u0438\u0437 <a href=\"https:\/\/github.com\/jenkinsci\/workflow-api-plugin\/blob\/master\/docs\/flowgraph.md#working-with-the-flowgraph\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a>:<\/p>\n<blockquote><p>\u0412 \u043f\u043b\u0430\u0433\u0438\u043d\u0435 workflow-support \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0441\u0442\u0435\u043f\u043e\u0432 (FlowNode) \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u043b\u0430\u0441\u0441 FlowNodeStorage \u0438 \u0435\u0433\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 SimpleXStreamFlowNodeStorage \u0438 BulkFlowNodeStorage.  <\/p>\n<ul>\n<li>FlowNodeStorage \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0434\u043b\u044f \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u0430 \u0434\u0438\u0441\u043a. \u0411\u0443\u0444\u0435\u0440 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0432\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0431\u0435\u0441\u043f\u043e\u043a\u043e\u0438\u0442\u044c\u0441\u044f \u043e\u0431 \u044d\u0442\u043e\u043c, \u043d\u043e \u0438\u043c\u0435\u0439\u0442\u0435 \u0432 \u0432\u0438\u0434\u0443, \u0447\u0442\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 FlowNode \u043d\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430 \u0434\u0438\u0441\u043a\u0435.<\/li>\n<li>SimpleXStreamFlowNodeStorage \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u043c\u0443 XML-\u0444\u0430\u0439\u043b\u0443 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e FlowNode \u2014 \u0445\u043e\u0442\u044f \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043a\u0435\u0448 \u0441 soft-reference \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0434\u043b\u044f \u0443\u0437\u043b\u043e\u0432, \u044d\u0442\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0445\u0443\u0434\u0448\u0435\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 \u0441\u0442\u0435\u043f\u044b (FlowNodes).<\/li>\n<li>BulkFlowNodeStorage \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043e\u0434\u0438\u043d XML-\u0444\u0430\u0439\u043b \u0431\u043e\u043b\u044c\u0448\u0435\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0441\u043e \u0432\u0441\u0435\u043c\u0438 FlowNodes \u0432 \u043d\u0435\u043c. \u042d\u0442\u043e\u0442 \u043a\u043b\u0430\u0441\u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0436\u0438\u0432\u0443\u0447\u0435\u0441\u0442\u0438 PERFORMANCE_OPTIMIZED, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0440\u0435\u0436\u0435. \u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u044d\u0442\u043e \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u0435\u0435, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u0434\u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043f\u043e\u0442\u043e\u043a\u043e\u0432\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0447\u0435\u043c \u0433\u0440\u0443\u043f\u043f\u0430 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439, \u0438 \u0441\u0432\u043e\u0434\u0438\u0442 \u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c\u0443 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043d\u0430 \u041e\u0421 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u043c\u0438 \u043a\u0440\u043e\u0448\u0435\u0447\u043d\u044b\u043c\u0438 \u0444\u0430\u0439\u043b\u0430\u043c\u0438.<\/li>\n<\/ul>\n<p>  <\/p><\/blockquote>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041e\u0440\u0438\u0433\u0438\u043d\u0430\u043b<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<blockquote><p>Storage: in the workflow-support plugin, see the &#8216;FlowNodeStorage&#8217; class and the SimpleXStreamFlowNodeStorage and BulkFlowNodeStorage implementations.  <\/p>\n<ul>\n<li>FlowNodeStorage uses in-memory caching to consolidate disk writes. Automatic flushing is implemented at execution time. Generally, you won&#8217;t need to worry about this, but be aware that saving a FlowNode does not guarantee it is immediately persisted to disk.<\/li>\n<li>The SimpleXStreamFlowNodeStorage uses a single small XML file for every FlowNode \u2014 although we use a soft-reference in-memory cache for the nodes, this generates much worse performance the first time we iterate through the FlowNodes (or when)<\/li>\n<li>The BulkFlowNodeStorage uses a single larger XML file with all the FlowNodes in it. This is used in the PERFORMANCE_OPTIMIZED durability mode, which writes much less often. It is generally much more efficient because a single large streaming write is faster than a bunch of small writes, and it minimizes the system load of managing all the tiny files.<\/li>\n<\/ul>\n<p>  <\/p><\/blockquote>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u0421\u043e\u0445\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u0435 \u0448\u0430\u0433\u0438 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438:  <\/p>\n<pre><code class=\"bash\">$JENKINS_HOME\/jobs\/$JOB_NAME\/builds\/$BUILD_ID\/workflow\/ <\/code><\/pre>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430:  <\/p>\n<pre><code class=\"xml\">&lt;?xml version='1.1' encoding='UTF-8'?&gt; &lt;Tag plugin=&quot;workflow-support@3.5&quot;&gt;   &lt;node class=&quot;cps.n.StepStartNode&quot; plugin=&quot;workflow-cps@2.82&quot;&gt;     &lt;parentIds&gt;       &lt;string&gt;4&lt;\/string&gt;     &lt;\/parentIds&gt;     &lt;id&gt;5&lt;\/id&gt;     &lt;descriptorId&gt;org.jenkinsci.plugins.workflow.support.steps.StageStep&lt;\/descriptorId&gt;   &lt;\/node&gt;   &lt;actions&gt;     &lt;s.a.LogStorageAction\/&gt;     &lt;cps.a.ArgumentsActionImpl plugin=&quot;workflow-cps@2.82&quot;&gt;       &lt;arguments&gt;         &lt;entry&gt;           &lt;string&gt;name&lt;\/string&gt;           &lt;string&gt;Declarative: Checkout SCM&lt;\/string&gt;         &lt;\/entry&gt;       &lt;\/arguments&gt;       &lt;isUnmodifiedBySanitization&gt;true&lt;\/isUnmodifiedBySanitization&gt;     &lt;\/cps.a.ArgumentsActionImpl&gt;     &lt;wf.a.TimingAction plugin=&quot;workflow-api@2.40&quot;&gt;       &lt;startTime&gt;1600855071994&lt;\/startTime&gt;     &lt;\/wf.a.TimingAction&gt;   &lt;\/actions&gt; &lt;\/Tag&gt; <\/code><\/pre>\n<h1>\u0418\u0442\u043e\u0433\u0438<\/h1>\n<p>  \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0431\u044b\u043b \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0435\u043d \u0438 \u043f\u043e\u043c\u043e\u0433 \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u0438\u0437 \u0441\u0435\u0431\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u044b \u0438 \u043a\u0430\u043a \u043e\u043d\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0438\u0437\u043d\u0443\u0442\u0440\u0438. \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u2014 \u0434\u0435\u043b\u0438\u0442\u0435\u0441\u044c \u0438\u043c\u0438 \u043d\u0438\u0436\u0435, \u0431\u0443\u0434\u0443 \u0440\u0430\u0434 \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c! <\/p>\n<p>  \u0412\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u044f \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u044e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u0435\u0439\u0441\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u043d\u0430\u0439\u0442\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 Jenkins Pipeline \u0438 \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u0432\u0430\u0448\u0438 \u0437\u0430\u0434\u0430\u0447\u043a\u0438. \u0423\u0437\u043d\u0430\u0435\u043c, \u043a\u0430\u043a \u0440\u0435\u0448\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430, \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u00ab\u0436\u0438\u0432\u0443\u0447\u0435\u0441\u0442\u0438\u00bb \u0438 \u043e\u0431\u0441\u0443\u0434\u0438\u043c, \u0437\u0430\u0447\u0435\u043c \u043f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c Jenkins.<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/company\/dins\/blog\/520220\/\"> https:\/\/habr.com\/ru\/company\/dins\/blog\/520220\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/company\/dins\/blog\/520220\/\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/9j\/3t\/bg\/9j3tbgtvn9vjih_wrg8myv0agag.png\"><\/p>\n<p>  \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0418\u043b\u044c\u044f \u0413\u0443\u043b\u044f\u0435\u0432, \u044f \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0441\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 Post Deployment Verification \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 DINS.<\/p>\n<p>  \u0412 DINS \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c Jenkins \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u0445: \u043e\u0442 \u0441\u0431\u043e\u0440\u043a\u0438 \u0431\u0438\u043b\u0434\u043e\u0432 \u0434\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0434\u0435\u043f\u043b\u043e\u0435\u0432 \u0438 \u0430\u0432\u0442\u043e\u0442\u0435\u0441\u0442\u043e\u0432. \u0412 \u043c\u043e\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c Jenkins \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0434\u043b\u044f \u0435\u0434\u0438\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441\u043c\u043e\u0443\u043a-\u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u043f\u043e\u0441\u043b\u0435 \u0434\u0435\u043f\u043b\u043e\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043d\u0430\u0448\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u043e\u0442 \u0434\u0435\u0432\u0435\u043b\u043e\u043f\u0435\u0440\u0441\u043a\u0438\u0445 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0439 \u0434\u043e \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0430.<\/p>\n<p>  \u0413\u043e\u0434 \u043d\u0430\u0437\u0430\u0434 \u0434\u0440\u0443\u0433\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0448\u0438 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u044b \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0435\u0433\u043e \u0438\u0437 \u0441\u043e\u0442\u0435\u043d \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432, \u043d\u043e\u0432\u043e\u0433\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0432\u0441\u0435\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0434 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043f\u0430\u0447\u0435\u043a \u0442\u0435\u0441\u0442\u043e\u0432. \u041d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 \u0432\u043e\u0437\u0440\u043e\u0441\u043b\u0430 \u0432 \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u0440\u0430\u0437, \u0438 Jenkins \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b \u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0441 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439 \u0438 \u0441\u0442\u0430\u043b \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0430\u0434\u0430\u0442\u044c. \u041c\u044b \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u043e\u043d\u044f\u043b\u0438, \u0447\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0438 \u0442\u044e\u043d\u0438\u043d\u0433 \u0441\u0431\u043e\u0440\u0449\u0438\u043a\u0430 \u043c\u0443\u0441\u043e\u0440\u0430 \u043c\u043e\u0433\u0443\u0442 \u043b\u0438\u0448\u044c \u043e\u0442\u0441\u0440\u043e\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443, \u043d\u043e \u043d\u0435 \u0440\u0435\u0448\u0430\u0442 \u0435\u0435 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u043d\u0430\u0439\u0442\u0438 \u0443\u0437\u043a\u0438\u0435 \u043c\u0435\u0441\u0442\u0430 Jenkins \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445.<\/p>\n<p>  \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 Jenkins Pipeline, \u0438 \u043f\u043e\u0434\u0435\u043b\u044e\u0441\u044c \u0441\u0432\u043e\u0438\u043c\u0438 \u043d\u0430\u0445\u043e\u0434\u043a\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u0432\u0430\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u044b \u0431\u044b\u0441\u0442\u0440\u0435\u0435. \u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u0435\u043d \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430\u043c, \u043a\u0442\u043e \u0443\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0441 Jenkins, \u043d\u043e \u0445\u043e\u0442\u044f\u0442 \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u0431\u043b\u0438\u0436\u0435. <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-310604","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/310604","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=310604"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/310604\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=310604"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=310604"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=310604"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}