{"id":5106,"date":"2014-01-02T09:51:21","date_gmt":"2014-01-02T05:51:21","guid":{"rendered":"http:\/\/blog.denivip.ru\/?p=5084"},"modified":"2022-08-15T19:30:43","modified_gmt":"2022-08-15T15:30:43","slug":"%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-jenkins-ci-%d0%bd%d0%b0-mac-os-x-%d0%b4%d0%bb%d1%8f-%d1%81%d0%b1%d0%be%d1%80%d0%ba%d0%b8-android-%d0%b8-ios-%d0%bf%d1%80%d0%b8%d0%bb%d0%be%d0%b6","status":"publish","type":"post","link":"http:\/\/blog.denivip.ru\/index.php\/2014\/01\/%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b0-jenkins-ci-%d0%bd%d0%b0-mac-os-x-%d0%b4%d0%bb%d1%8f-%d1%81%d0%b1%d0%be%d1%80%d0%ba%d0%b8-android-%d0%b8-ios-%d0%bf%d1%80%d0%b8%d0%bb%d0%be%d0%b6\/","title":{"rendered":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Jenkins CI \u043d\u0430 Mac OS X \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 Android- \u0438 iOS-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 Phonegap\/Cordova \u0438 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0438\u0445 \u0432 TestFlight\/HockeyApp"},"content":{"rendered":"<p>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0435\u0441\u044c\u043c\u0430 \u0443\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0437\u0430\u043d\u044f\u0442\u0438\u0435\u043c, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u0441\u0430\u043c\u0438\u043c \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0442\u043e, \u0447\u0442\u043e \u0432\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0435.\u0420\u0430\u0431\u043e\u0442\u0430\u044f \u0441 \u043f\u0440\u0438\u043b\u0438\u0447\u043d\u044b\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 (\u043c\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u0441\u0430\u0439\u0442\u044b \u043d\u0430 \u0437\u0430\u043a\u0430\u0437), \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441 \u0440\u0430\u0441\u0442\u0443\u0449\u0438\u043c \u0447\u0438\u0441\u043b\u043e\u043c \u0441\u0432\u043e\u0438\u0445 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u043c\u044b \u0437\u0430\u0434\u0443\u043c\u0430\u043b\u0438\u0441\u044c \u043e \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438 \u0441\u0438\u043b \u0437\u0430\u0442\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u043d\u0430 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0443 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u0438 \u0440\u0435\u043b\u0438\u0437\u043d\u044b\u0445 \u0441\u0431\u043e\u0440\u043e\u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439.\u041f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u043e\u0432 \u0438 \u043f\u0440\u0438\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u0437\u0430\u0442\u0440\u0430\u0442\u044b \u043d\u0430 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0443 \u0441\u0431\u043e\u0440\u043e\u043a \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u0432\u0435\u0441\u044c\u043c\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c\u0438.\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0442\u0440\u0430\u0442\u0438\u0442\u044c \u0441\u0438\u043b\u044b \u0437\u0440\u044f \u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c\u0441\u044f \u0442\u0435\u043c, \u0447\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u0430\u0436\u043d\u043e \u0434\u043b\u044f \u0432\u0430\u0448\u0438\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432, \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0431\u043e\u0440\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439.\u041e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0434\u0430\u043b\u0435\u0435 \u043f\u043e\u0434\u0445\u043e\u0434 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c, \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0432 \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c \u0432\u0430\u043c \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f: <a href=\"http:\/\/2gzr.com\/\">Together<\/a>, <a href=\"http:\/\/photosuerte.com\/\">PhotoSuerte<\/a>, <a href=\"https:\/\/routes.tips\/explore\/\">Routes.Tips<\/a>.<!--more--><\/p>\n<ol>\n<li>\u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0434\u043b\u044f iOS \u0432\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 \u0438\u043b\u0438 \u043d\u043e\u0443\u0442\u0431\u0443\u043a <a href=\"http:\/\/www.apple.ru\/mac\/\">Mac<\/a>\n<ul>\n<li>\u0415\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 VPS, \u0442\u043e \u0434\u043b\u044f \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043d\u0430 \u043d\u0435\u043c Spotlight (<i>Settings > Spotlight > Privacy > + > Add the entire drive<\/i>)<\/li>\n<li>\u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a \u043c\u0430\u0448\u0438\u043d\u0435 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0435 &#8212; 512 \u041c\u0411 \u041e\u0417\u0423; \u0447\u0435\u043c \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0426\u041f\u0423, \u0442\u0435\u043c \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0441\u0431\u043e\u0440\u043a\u0430<\/li>\n<li>\u041c\u043e\u0436\u043d\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043b\u0438\u0431\u043e \u043d\u0430 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 Mac, \u043b\u0438\u0431\u043e \u043d\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u043c \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0435 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <a title=\"Hostmyapple\" href=\"http:\/\/www.hostmyapple.com\">Hostmyapple<\/a>, <a title=\"Gekkoit\" href=\"http:\/\/www.gekkoit.co.uk\">Gekkoit<\/a>, <a title=\"Xcloud\" href=\"http:\/\/xcloud.me\">Xcloud<\/a>)<\/li>\n<\/ul>\n<\/li>\n<li>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c <a title=\"Jenkins\" href=\"http:\/\/jenkins-ci.org\/\">Jenkins<\/a>\n<ul>\n<li>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c Java Runtime<\/li>\n<li>\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c SSH \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043a \u043a\u043e\u043d\u0441\u043e\u043b\u0438<\/li>\n<li>\u0421\u043a\u0430\u0447\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u0432\u0435\u0440\u0441\u0438\u044e Jenkins, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043a\u043e\u043d\u0441\u043e\u043b\u0438:<i>wget -O jenkins-latest.pkg http:\/\/mirrors.jenkins-ci.org\/osx\/latest<\/i><\/li>\n<li>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c Jenkins \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:<i>sudo installer -pkg jenkins-latest.pkg -target \/<\/i><\/li>\n<li>\u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c <i>jenkins<\/i> \u0441 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0435\u0439 <i>\/Users\/Shared\/Jenkins<\/i><\/li>\n<li>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c, \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438, <a href=\"http:\/\/java.com\/\">JRE<\/a> \u0438 <a href=\"http:\/\/ant.apache.org\/\">Apache Ant<\/a><\/li>\n<li>\u041f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c Mac \u0438 \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e Jenkins \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 \u0441\u043b\u0443\u0448\u0430\u0435\u0442 \u043f\u043e\u0440\u0442 8080.<\/li>\n<\/ul>\n<\/li>\n<li>\u0412 Jenkins \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0440\u0430\u0437\u0434\u0435\u043b <i>Manage Jenkins\/Manage Plugins<\/i> \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b:\n<ul>\n<li><a href=\"https:\/\/wiki.jenkins-ci.org\/display\/JENKINS\/Ant+Plugin\">Ant<\/a><\/li>\n<li><a href=\"https:\/\/wiki.jenkins-ci.org\/display\/JENKINS\/Xcode+Plugin\">Xcode<\/a><\/li>\n<li><a href=\"https:\/\/wiki.jenkins-ci.org\/display\/JENKINS\/Git+Plugin\">Git<\/a><\/li>\n<li><a href=\"http:\/\/wiki.jenkins-ci.org\/display\/JENKINS\/Publish+Over+SSH+Plugin\">Publish Over SSH<\/a><\/li>\n<li><a href=\"https:\/\/wiki.jenkins-ci.org\/display\/JENKINS\/Publish+Over+FTP+Plugin\">Publish Over FTP<\/a><\/li>\n<li><a href=\"https:\/\/wiki.jenkins-ci.org\/display\/JENKINS\/Email-ext+plugin\">Email extension<\/a><\/li>\n<li><a href=\"https:\/\/wiki.jenkins-ci.org\/display\/JENKINS\/Testflight+Plugin\">Testflight<\/a><\/li>\n<li><a href=\"https:\/\/wiki.jenkins-ci.org\/display\/JENKINS\/HockeyApp+Plugin\">HockeyApp<\/a><\/li>\n<li>\u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b.<\/li>\n<\/ul>\n<\/li>\n<li>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c Xcode \u0447\u0435\u0440\u0435\u0437 App Store, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f Apple ID<\/li>\n<li>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c Xcode Command Line Tools:\n<ul>\n<li>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c Xcode<\/li>\n<li>\u0412\u043e\u0439\u0442\u0438 \u0432 \u043c\u0435\u043d\u044e <i>Xcode\/Preferences\/Downloads<\/i><\/li>\n<li>\u041d\u0430\u0436\u0430\u0442\u044c <i>\u0421\u043a\u0430\u0447\u0430\u0442\u044c<\/i> \u0441\u043f\u0440\u0430\u0432\u0430 \u043e\u0442 <i>Command Line Tools<\/i><\/li>\n<\/ul>\n<\/li>\n<li>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c <a href=\"http:\/\/brew.sh\">Homebrew<\/a>, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043a\u043e\u043d\u0441\u043e\u043b\u0438:\n<ul>\n<li>ruby -e &#171;$(curl -fsSL https:\/\/raw.github.com\/mxcl\/homebrew\/go\/install)&#187;<\/li>\n<li>brew doctor<\/li>\n<li>brew update<\/li>\n<\/ul>\n<\/li>\n<li>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c nodejs \u0438 phonegap\/cordova, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043a\u043e\u043d\u0441\u043e\u043b\u0438:\n<ul>\n<li>brew install nodejs<\/li>\n<li>npm -global install phonegap<\/li>\n<li>npm -global install cordova<\/li>\n<\/ul>\n<\/li>\n<li>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c Android SDK, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043a\u043e\u043d\u0441\u043e\u043b\u0438:\n<ul>\n<li>\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c <a href=\"http:\/\/developer.android.com\/sdk\/index.html\">\u043e\u0442\u0441\u044e\u0434\u0430<\/a> \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0435 SDK \u0434\u043b\u044f \u0432\u0435\u0440\u0441\u0438\u0438 Mac OS X 64-bit;\u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u044b:<\/li>\n<li><i>cd \/Users\/Shared\/Jenkins\/build_stuff<\/i><\/li>\n<li><i>wget http:\/\/dl.google.com\/android\/adt\/adt-bundle-mac-x86_64-20131030.zip<\/i><\/li>\n<li><i>unzip adt-bundle-mac-x86_64-20131030.zip<\/i><\/li>\n<li><i>ln -s adt-bundle-mac-x86_64-20131030 adt-bundle<\/i><\/li>\n<li>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, Android SDK \u0431\u0443\u0434\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 <i>\/Users\/Shared\/Jenkins\/build_stuff\/adt-bundle\/sdk<\/i><\/li>\n<li>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0443\u0442\u0438\u043b\u0438\u0442\u0443 <i>\/Users\/Shared\/Jenkins\/build_stuff\/adt-bundle\/sdk\/tools\/android update sdk &#8212;no-ui<\/i> \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0442\u0430\u0440\u0433\u0435\u0442\u043e\u0432<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p>\u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0447\u0442\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f BlahApp.<\/p>\n<h3>\u0421\u0431\u043e\u0440\u043a\u0430 Android-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/h3>\n<ol>\n<li>\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0432 Jenkins \u0437\u0430\u0434\u0430\u0447\u0443 BlahApp-Android-build<\/li>\n<li>\u0412\u0437\u044f\u0442\u044c \u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0444\u0430\u0439\u043b\u044b ant.properties \u0438 BlahAppCertificate.keystroke, \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0432 \/Users\/Shared\/Jenkins\/build_stuff\/keystrokes<\/li>\n<li>\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0432\u044b\u0433\u0440\u0443\u0437\u043a\u0443 \u043a\u043e\u0434\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Git-\u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0432 workspace\n<ul>\n<li>\u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u0441\u043b\u0435 \u043f\u0443\u0448\u0435\u0439 \u0432 Git, \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0438\u0437 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 <a href=\"https:\/\/wiki.jenkins-ci.org\/display\/JENKINS\/Building+a+software+project#Buildingasoftwareproject-Buildsbysourcechanges\">Jenkins wiki<\/a><\/li>\n<\/ul>\n<\/li>\n<li>\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0448\u0430\u0433 \u0441\u0431\u043e\u0440\u043a\u0438 Invoke Ant \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438:\n<ul>\n<li>Targets: <i>release<\/i> (\u0438\u043b\u0438 \u043a\u0430\u043a \u0443\u043a\u0430\u0436\u0443\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438, \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d \u0432 build.xml)<\/li>\n<li>Build file: <i>platforms\/android\/build.xml<\/i><\/li>\n<li>Properties: \u044d\u0442\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0430\u0445 <i>local.properties<\/i> \u0438 <i>ant.properties<\/i>, \u0442\u0443\u0442 \u043e\u043d\u0438 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f, \u043a\u0430\u043a \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 Ant:\n<ul>\n<li>sdk.dir=\/Users\/Shared\/Jenkins\/build_stuff\/adt-bundle\/sdk<\/li>\n<li>key.store=\/Users\/Shared\/Jenkins\/build_stuff\/keystores\/BlahAppCertificate.keystore<\/li>\n<li>key.alias=BlahApp<\/li>\n<li>key.store.password=********<\/li>\n<li>key.alias.password=********<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0441\u0431\u043e\u0440\u043a\u0443 \u0438 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u0432\u0435\u0440\u0441\u0438\u0438 SDK \u0438 \u043f\u0440\u043e\u0447\u0435\u0435, \u0435\u0441\u043b\u0438 \u0441\u0431\u043e\u0440\u043a\u0430 \u043d\u0435 \u043e\u0442\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442<\/li>\n<li>\u0414\u043e\u0441\u0442\u0430\u0432\u043a\u0430 \u0444\u0430\u0439\u043b\u043e\u0432 \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\n<ul>\n<li>\u0410\u0440\u0445\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u043e\u0432, \u0448\u0430\u0433 <i>Post-build action\/Archive the artifact<\/i> \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438:\n<ul>\n<li>Files to archive: <i>platforms\/android\/bin\/*.apk<\/i><\/li>\n<\/ul>\n<\/li>\n<li>\u0414\u043e\u0441\u0442\u0430\u0432\u043a\u0430 \u043f\u043e FTP, \u0448\u0430\u0433 <i>Post-build action\/Send build artifacts over FTP<\/i> \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438:\n<ul>\n<li>\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e FTP-\u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u0432 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 Jenkins<\/li>\n<li>FTP Server Name: \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442<\/li>\n<li>Source files: <i>platforms\/android\/bin\/*.apk<\/i><\/li>\n<li>Remove prefix: <i>platforms\/android\/bin\/<\/i><\/li>\n<li>Remote directory: <i>BlahApp\/Android\/${BUILD_ID}_${BUILD_NUMBER}<\/i><\/li>\n<\/ul>\n<\/li>\n<li>\u0414\u043e\u0441\u0442\u0430\u0432\u043a\u0430 \u043f\u043e SSH, \u0448\u0430\u0433 <i>Post-build action\/Send build artifacts over SSH<\/i> \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438:\n<ul>\n<li>\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e SSH-\u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u0432 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 Jenkins<\/li>\n<li>SSH Server Name: \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442<\/li>\n<li>Source files: <i>platforms\/android\/bin\/*.apk<\/i><\/li>\n<li>Remove prefix: <i>platforms\/android\/bin\/<\/i><\/li>\n<li>Remote directory: <i>BlahApp\/Android\/${BUILD_ID}_${BUILD_NUMBER}<\/i><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>\u0414\u043e\u0441\u0442\u0430\u0432\u043a\u0430 \u0432 TestFlight\n<ul>\n<li>\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u0432 <a href=\"https:\/\/testflightapp.com\/\">Testflight<\/a><\/li>\n<li>\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c <a href=\"https:\/\/testflightapp.com\/account\/\">API token<\/a><\/li>\n<li>\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c <a href=\"https:\/\/testflightapp.com\/dashboard\/team\/edit\/\">Team token<\/a><\/li>\n<li>\u0421\u043e\u0437\u0434\u0430\u0442\u044c Token Pair \u0438\u0437 \u043e\u0431\u043e\u0438\u0445 \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 Jenkins \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 <i>Test Flight<\/i><\/li>\n<li>\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0448\u0430\u0433 <i>Post-build action\/Upload to Testflight<\/i>, \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438:\n<ul>\n<li>Token Pair: \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0432\u044b\u0448\u0435<\/li>\n<li>IPA\/APK Files: <i>platforms\/android\/bin\/*.apk<\/i><\/li>\n<li>dSYM File: \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0443\u0441\u0442\u044b\u043c<\/li>\n<li>\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440: <i>Append changelog to build notes<\/i><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>\u0414\u043e\u0441\u0442\u0430\u0432\u043a\u0430 \u043f\u043e \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u0435, \u0448\u0430\u0433 <i>Post-build action\/Editable Email Notification<\/i> \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438:\n<ul>\n<li>Attachments: <i>platforms\/android\/bin\/*.apk<\/i><\/li>\n<li>Attach Build Log: <i>Compress and Attach Build Log<\/i><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h3>\u0421\u0431\u043e\u0440\u043a\u0430 iOS \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/h3>\n<ol>\n<li>\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0438 \u043f\u0440\u043e\u0444\u0438\u043b\u0438\n<ul>\n<li>\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0434\u043b\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u043f\u0440\u043e\u0444\u0438\u043b\u044c<\/li>\n<li>\u0412 \u0443\u0442\u0438\u043b\u0438\u0442\u0435 Keychain Access \u0441\u043e\u0437\u0434\u0430\u0442\u044c <i>xcode.keychain<\/i> \u0438 \u0437\u0430\u0434\u0430\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u044c \u0434\u043b\u044f \u0435\u0433\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f<\/li>\n<li>\u0421\u043b\u043e\u0436\u0438\u0442\u044c \u0432 \u043d\u0435\u0433\u043e \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0438 \u0441\u043d\u044f\u0442\u044c \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0443 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 (\u0441\u043c. <a href=\"https:\/\/wiki.jenkins-ci.org\/display\/JENKINS\/Xcode+Plugin#XcodePlugin-Userinteractionisnotallowed)\">\u0432 \u0432\u0438\u043a\u0438<\/a>)<\/li>\n<li>\u0412 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 Jenkins \u0432 \u0441\u0435\u043a\u0446\u0438\u044e <i>Xcode Builder<\/i> \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u0441\u043f\u0438\u0441\u043e\u043a keychain&#8217;\u043e\u0432 <i>xcode.keychain<\/i>, \u0443\u043a\u0430\u0437\u0430\u0432 \u043f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443 \u0438 \u043f\u0430\u0440\u043e\u043b\u044c<\/li>\n<li>\u0424\u0430\u0439\u043b \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e <i>\/Users\/Shared\/Jenkins\/Library\/MobileDevice\/Provisioning Profiles<\/i><\/li>\n<\/ul>\n<\/li>\n<li>\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0432 Jenkins \u0437\u0430\u0434\u0430\u0447\u0443 <i>BlahApp-build-iOS<\/i><\/li>\n<li>\u041d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0432\u044b\u0433\u0440\u0443\u0437\u043a\u0443 \u043a\u043e\u0434\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 Git-\u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0432 workspace.<\/li>\n<li>4. \u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u0441\u043b\u0435 \u043f\u0443\u0448\u0435\u0439 \u0432 Git, \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0438\u0437 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 <a href=\"https:\/\/wiki.jenkins-ci.org\/display\/JENKINS\/Building+a+software+project#Buildingasoftwareproject-Buildsbysourcechanges\">\u0432 \u0432\u0438\u043a\u0438<\/a> \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432:<\/li>\n<li>\u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0441\u0443\u0431\u043c\u043e\u0434\u0443\u043b\u0438, \u043d\u0430\u0434\u043e:\n<ul>\n<li>\u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0434\u043b\u044f Git-\u043f\u043b\u0430\u0433\u0438\u043d\u0430 <i>Disable submodules processing<\/i><\/li>\n<li>\u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0435\u0440\u0432\u044b\u0439 \u0448\u0430\u0433 \u0441\u0431\u043e\u0440\u043a\u0438 <i>Execute shell<\/i> \u0441 \u043a\u043e\u0434\u043e\u043c &#171;git submodule update &#8212;init &#8212;recursive&#187;<\/li>\n<\/ul>\n<\/li>\n<li>\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0448\u0430\u0433 \u0441\u0431\u043e\u0440\u043a\u0438 <i>Xcode<\/i> \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438:\n<ul>\n<div style=\"overflow: hidden; height: 0.2px;\"><a href=\"https:\/\/edpillgrece.gr\">https:\/\/edpillgrece.gr<\/a><\/div>\n<li>\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c <i>Clean before build<\/i><\/li>\n<li>Configuration: <i>Release<\/i><\/li>\n<li>\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c: <i>Pack application and build .ipa<\/i><\/li>\n<li>Code Signing Identity: \u0438\u043c\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u0442\u0430, \u043d\u0430 \u0447\u044c\u0435 \u0438\u043c\u044f \u0432\u044b\u043f\u0438\u0441\u0430\u043d \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: <i>iPhone Distribution: DENIVIP Media OOO (SQ12345678)<\/i><\/li>\n<li>Embedded Profile: \u043f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443 \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u0442\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <i>\/Users\/Shared\/Jenkins\/build_stuff\/profiles\/4FF5AFF9-DD63-4881-9B69-941D166F1C37.mobileprovision<\/i><\/li>\n<li>\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c <i>Unlock keychain<\/i> \u0438 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0444\u0430\u0439\u043b \u0438\u0437 <a href=\"#profile\">\u043f. 1<\/a><\/li>\n<li>Xcode Schema File: \u0432\u0437\u044f\u0442\u044c \u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432<\/li>\n<li>Xcode Project Directory: <i>platforms\/ios<\/i><\/li>\n<li>Build Output Directory: <i>built-project<\/i><\/li>\n<\/ul>\n<\/li>\n<li>\u0414\u043e\u0441\u0442\u0430\u0432\u043a\u0430 \u0444\u0430\u0439\u043b\u043e\u0432 \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\n<ul>\n<li>\u0410\u0440\u0445\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u043e\u0432, \u0448\u0430\u0433 <i>Post-build action\/Archive the artifact<\/i> \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438:\n<ul>\n<li>Files to archive: <i>built-project\/*.ipa,built-project\/*.zip<\/i><\/li>\n<\/ul>\n<\/li>\n<li>\u0414\u043e\u0441\u0442\u0430\u0432\u043a\u0430 \u043f\u043e FTP, \u0448\u0430\u0433 <i>Post-build action\/Send build artifacts<\/i> over FTP \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438:\n<ul>\n<li>\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e FTP-\u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u0432 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 Jenkins<\/li>\n<li>FTP Server Name: \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442<\/li>\n<li>Source files: <i>built-project\/*.ipa<\/i><\/li>\n<li>Remove prefix: <i>built-project<\/i>\/<\/li>\n<li>Remote directory: <i>BlahApp\/iOS\/${BUILD_ID}_${BUILD_NUMBER}<\/i><\/li>\n<\/ul>\n<\/li>\n<li>\u0414\u043e\u0441\u0442\u0430\u0432\u043a\u0430 \u043f\u043e SSH, \u0448\u0430\u0433 <i>Post-build action\/Send build artifacts<\/i> over SSH \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438:\n<ul>\n<li>\u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e SSH-\u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u0432 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 Jenkins<\/li>\n<li>SSH Server Name: \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442<\/li>\n<li>Source files: <i>built-project\/*.ipa<\/i><\/li>\n<li>Remove prefix: <i>built-project\/<\/i><\/li>\n<li>Remote directory: <i>BlahApp\/iOS\/${BUILD_ID}_${BUILD_NUMBER}<\/i><\/li>\n<\/ul>\n<\/li>\n<li>\u0414\u043e\u0441\u0442\u0430\u0432\u043a\u0430 \u0432 TestFlight\n<ul>\n<li>\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u0432 <a href=\"https:\/\/testflightapp.com\/\">Testflight<\/a><\/li>\n<li>\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c <a href=\"https:\/\/testflightapp.com\/account\/\">API token<\/a> &#8212;<\/li>\n<li>\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c <a href=\"https:\/\/testflightapp.com\/dashboard\/team\/edit\/\">Team token<\/a><\/li>\n<li>\u0421\u043e\u0437\u0434\u0430\u0442\u044c Token Pair \u0438\u0437 \u043e\u0431\u043e\u0438\u0445 \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 Jenkins \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 <i>Test Flight<\/i><\/li>\n<li>\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0448\u0430\u0433 <i>Post-build action\/Upload to Testflight<\/i>, \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438:\n<ul>\n<li>Token Pair: \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0432\u044b\u0448\u0435<\/li>\n<li>IPA\/APK Files: <i>built-project\/*.ipa<\/i><\/li>\n<li>dSYM File: \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0443\u0441\u0442\u044b\u043c<\/li>\n<li>\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440: <i>Append changelog to build notes<\/i><\/li>\n<\/ul>\n<\/li>\n<li>Token Pair: \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0432\u044b\u0448\u0435<\/li>\n<li>IPA\/APK Files: <i>built-project\/*.ipa<\/i><\/li>\n<li>dSYM File: \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0443\u0441\u0442\u044b\u043c<\/li>\n<li>\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440: <i>Append changelog to build notes<\/i><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>\u0414\u043e\u0441\u0442\u0430\u0432\u043a\u0430 \u0432 HockeyApp\n<ul>\n<li>\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u0432 <a href=\"http:\/\/hockeyapp.net\/\">HockeyApp<\/a><\/li>\n<li>\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c API token \u0438 Public ID\/App ID<\/li>\n<li>\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0448\u0430\u0433 <i>Post-build action\/Upload to HockeyApp<\/i>, \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438:<\/li>\n<li>API Token: \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0432\u044b\u0448\u0435<\/li>\n<li>Public ID\/App ID: \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0432\u044b\u0448\u0435<\/li>\n<li>App file: <i>built-project\/*.ipa<\/i><\/li>\n<li>Symbols: <i>built-project\/*-dsym.zip<\/i><\/li>\n<\/ul>\n<\/li>\n<li>\u0414\u043e\u0441\u0442\u0430\u0432\u043a\u0430 \u043f\u043e \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u0435, \u0448\u0430\u0433 <i>Post-build action\/Editable Email Notification<\/i> \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438:\n<ul>\n<li>Attachments: <i>built-project\/*.ipa<\/i><\/li>\n<li>Attach Build Log: <i>Compress and Attach Build Log<\/i><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0435\u0441\u044c\u043c\u0430 \u0443\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0437\u0430\u043d\u044f\u0442\u0438\u0435\u043c, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u0441\u0430\u043c\u0438\u043c \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0442\u043e, \u0447\u0442\u043e \u0432\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0435.\u0420\u0430\u0431\u043e\u0442\u0430\u044f \u0441 \u043f\u0440\u0438\u043b\u0438\u0447\u043d\u044b\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 (\u043c\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u0441\u0430\u0439\u0442\u044b \u043d\u0430 \u0437\u0430\u043a\u0430\u0437), \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441 \u0440\u0430\u0441\u0442\u0443\u0449\u0438\u043c \u0447\u0438\u0441\u043b\u043e\u043c \u0441\u0432\u043e\u0438\u0445 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u043c\u044b \u0437\u0430\u0434\u0443\u043c\u0430\u043b\u0438\u0441\u044c \u043e \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438 \u0441\u0438\u043b \u0437\u0430\u0442\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u043d\u0430 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0443 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u0438 \u0440\u0435\u043b\u0438\u0437\u043d\u044b\u0445 \u0441\u0431\u043e\u0440\u043e\u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439.\u041f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[355,407,20],"tags":[521,98,522,99,100,23,356],"_links":{"self":[{"href":"http:\/\/blog.denivip.ru\/index.php\/wp-json\/wp\/v2\/posts\/5106"}],"collection":[{"href":"http:\/\/blog.denivip.ru\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.denivip.ru\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.denivip.ru\/index.php\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.denivip.ru\/index.php\/wp-json\/wp\/v2\/comments?post=5106"}],"version-history":[{"count":4,"href":"http:\/\/blog.denivip.ru\/index.php\/wp-json\/wp\/v2\/posts\/5106\/revisions"}],"predecessor-version":[{"id":5993,"href":"http:\/\/blog.denivip.ru\/index.php\/wp-json\/wp\/v2\/posts\/5106\/revisions\/5993"}],"wp:attachment":[{"href":"http:\/\/blog.denivip.ru\/index.php\/wp-json\/wp\/v2\/media?parent=5106"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.denivip.ru\/index.php\/wp-json\/wp\/v2\/categories?post=5106"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.denivip.ru\/index.php\/wp-json\/wp\/v2\/tags?post=5106"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}