)]}'
{
  "log": [
    {
      "commit": "79ecec3428e4660b4728ffdcd37f9bc7daf75dd9",
      "tree": "25b568a10a6c8ea029f7ddb989eb985849bb7cfc",
      "parents": [
        "7c0abfe2bc316e258e1b170f347227ae0eb1bf68"
      ],
      "author": {
        "name": "Jakub Josef",
        "email": "jakub.josef@gmail.com",
        "time": "Fri Feb 17 14:36:28 2017 +0100"
      },
      "committer": {
        "name": "Filip Pytloun",
        "email": "filip@pytloun.cz",
        "time": "Mon Feb 20 13:41:39 2017 +0100"
      },
      "message": "MCP pipeline library merged with ccp-pipeline-libs repo.\n\nChange-Id: I74080e18c5a482b7bf44b5516228b7bfe1fe3586\n"
    },
    {
      "commit": "7c0abfe2bc316e258e1b170f347227ae0eb1bf68",
      "tree": "4602d7d18d677d8ca4704c3857ecfc5865354524",
      "parents": [
        "a78ee8d560b34b285793b5de74a43f2709eaa02f"
      ],
      "author": {
        "name": "Denis Egorenko",
        "email": "degorenko@mirantis.com",
        "time": "Tue Feb 14 15:42:02 2017 +0400"
      },
      "committer": {
        "name": "Denis Egorenko",
        "email": "degorenko@mirantis.com",
        "time": "Fri Feb 17 13:33:01 2017 +0000"
      },
      "message": "Add ability to search images by their tag\n\nChange-Id: Ic3e05896018bb160fdc6b3a9b2ed591d2b69e99f\n"
    },
    {
      "commit": "a78ee8d560b34b285793b5de74a43f2709eaa02f",
      "tree": "7c9248fbe8d8f52e8ac90ef8f795ff21d830a701",
      "parents": [
        "40d384e78dbb9bb91dffd9ea55815279c8e1b284"
      ],
      "author": {
        "name": "Ryabin Sergey",
        "email": "sryabin@mirantis.com",
        "time": "Tue Feb 07 12:52:18 2017 +0400"
      },
      "committer": {
        "name": "Ryabin Sergey",
        "email": "sryabin@mirantis.com",
        "time": "Tue Feb 14 19:10:47 2017 +0400"
      },
      "message": "ccp CI/CD object model\n\nExample usage (bvt pipeline):\n\n  def ccpCiCd \u003d new com.mirantis.mcp.CCPCICD().newInstance(this, env)\n\n  ccpCiCd.applyPipelineParameters()\n\n  ccpCiCd.fetchEnvConfiguration()\n  ccpCiCd.parametrizeConfig()\n\n  ccpCiCd.build()\n  ccpCiCd.deploy()\n  ccpCiCd.cleanup()\n\nChange-Id: Ie4a8328947f77334943b6dc6343960721985ad84\n"
    },
    {
      "commit": "40d384e78dbb9bb91dffd9ea55815279c8e1b284",
      "tree": "f6856aac8f11206b7a2f630f9c3a0fb6357b86d0",
      "parents": [
        "86e19c7e1f6843e54cffc7f33b00fca9ff9162fa"
      ],
      "author": {
        "name": "azvyagintsev",
        "email": "azvyagintsev@mirantis.com",
        "time": "Mon Feb 06 15:11:05 2017 +0200"
      },
      "committer": {
        "name": "azvyagintsev",
        "email": "azvyagintsev@mirantis.com",
        "time": "Mon Feb 06 18:21:23 2017 +0200"
      },
      "message": "Extend gitSSHCheckout\n\n  * Seperate ssh and http to new function\n  * add default behavior for protocol\n\nChange-Id: Ib3072a529c71a88e9c7b6469ef0304c5847031b4\n"
    },
    {
      "commit": "86e19c7e1f6843e54cffc7f33b00fca9ff9162fa",
      "tree": "4276cdade55cbce0017ee7ab48e622472704cc8c",
      "parents": [
        "85ae52b6580cd5584c4aacfe906b9e5e7bdf1049"
      ],
      "author": {
        "name": "Artem Panchenko",
        "email": "apanchenko@mirantis.com",
        "time": "Tue Jan 31 13:09:42 2017 +0200"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Mon Feb 06 12:15:20 2017 +0000"
      },
      "message": "Don\u0027t override user provided by credentials\n\nThere is no need to specify user/login in repository\nURL if credentials are used.\n\nChange-Id: Id9e998e5ed618daa07f6e661de01d8280e0fa50b\n"
    },
    {
      "commit": "85ae52b6580cd5584c4aacfe906b9e5e7bdf1049",
      "tree": "e6807a871c927288c2ac9a142b7c28b8b30040a4",
      "parents": [
        "9a58e142d97ac2959b2b62ae4577a87809470f44"
      ],
      "author": {
        "name": "asledzinskiy",
        "email": "asledzinskiy@mirantis.com",
        "time": "Thu Feb 02 17:59:20 2017 +0200"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Fri Feb 03 12:49:56 2017 +0000"
      },
      "message": "Install requirements on env preparation\n\nChange-Id: I5479137974bed4f8309d41bc5f2c2f320519686a\n"
    },
    {
      "commit": "9a58e142d97ac2959b2b62ae4577a87809470f44",
      "tree": "3f5406c5e549e3cfc960112cb39e117078a1c30b",
      "parents": [
        "21c936c88c009b702a8e27ad334e906af492279a"
      ],
      "author": {
        "name": "Tomáš Kukrál",
        "email": "tkukral@mirantis.com",
        "time": "Thu Feb 02 16:09:33 2017 +0100"
      },
      "committer": {
        "name": "Tomáš Kukrál",
        "email": "tkukral@mirantis.com",
        "time": "Thu Feb 02 16:09:33 2017 +0100"
      },
      "message": "remove batch run of kubernetes.master.setup\n\nBatch runs are broken starting from Salt 2016.3.5 (Boron)\nUsing run targeted on exact host is sufficient.\n\nWe may add pillar target when it is added to reclass cluster level.\n\nChange-Id: I9e59d81ad0767af345dff52395c8d34d7a926d3a\n"
    },
    {
      "commit": "21c936c88c009b702a8e27ad334e906af492279a",
      "tree": "bf33d9752fb577977b265b3727317387234dd9f2",
      "parents": [
        "6e3beae2dbceba0365851badb1b399a2fc4a7e54"
      ],
      "author": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Thu Feb 02 13:43:14 2017 +0200"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Thu Feb 02 11:49:56 2017 +0000"
      },
      "message": "Add method for jinjaTemplates rendering\n\nAlso add custom bool filter\n\nChange-Id: I69ba0bc21c325fd37108331fba86e3f66f74bcbd\n"
    },
    {
      "commit": "6e3beae2dbceba0365851badb1b399a2fc4a7e54",
      "tree": "14b98299f7d7963e6fc503853b7d3c9166c64f61",
      "parents": [
        "62747d4b5798455d50cf7afe5575788715fca18b"
      ],
      "author": {
        "name": "Denis Egorenko",
        "email": "degorenko@mirantis.com",
        "time": "Thu Feb 02 15:30:26 2017 +0400"
      },
      "committer": {
        "name": "Denis Egorenko",
        "email": "degorenko@mirantis.com",
        "time": "Thu Feb 02 15:38:18 2017 +0400"
      },
      "message": "Fix shell for kill command\n\nBase shell is not support -SIG notation, so directly\nspecify QUIT command.\n\nChange-Id: I98aa7c96f59cb366eef4f012238cdc222305c1ef\n"
    },
    {
      "commit": "62747d4b5798455d50cf7afe5575788715fca18b",
      "tree": "45c5523beb047780c1d6153138d30ca26fd858be",
      "parents": [
        "d6dc108ee1d355b4da03f42f5e43f8a98ce76fa8"
      ],
      "author": {
        "name": "Denis Egorenko",
        "email": "degorenko@mirantis.com",
        "time": "Thu Feb 02 14:23:59 2017 +0400"
      },
      "committer": {
        "name": "Denis Egorenko",
        "email": "degorenko@mirantis.com",
        "time": "Thu Feb 02 14:23:59 2017 +0400"
      },
      "message": "Kill nginx process with SIGQUIT\n\nBy default kill sends SIGTERM which doesn\u0027t propertly handled\nport release if such opened. Instead of that SIGQUIT correctly\ncloses process and releases opened by this propess ports.\n\nChange-Id: I0c513c26315ffc53303b2ea79a166d7bdf6587be\n"
    },
    {
      "commit": "d6dc108ee1d355b4da03f42f5e43f8a98ce76fa8",
      "tree": "44f52aa30d68f5cd00ace02b056499ef11ac964f",
      "parents": [
        "def4df08c6df092a88ad8d22d66b011788fd3e52"
      ],
      "author": {
        "name": "Denis Egorenko",
        "email": "degorenko@mirantis.com",
        "time": "Wed Jan 25 19:29:03 2017 +0400"
      },
      "committer": {
        "name": "Denis Egorenko",
        "email": "degorenko@mirantis.com",
        "time": "Wed Feb 01 13:13:42 2017 +0000"
      },
      "message": "Add functionaly for configuring and deploying nginx proxy\n\nChange-Id: I107e33c8fa5f4d51abb28931db1cf927cb8fe4da\n"
    },
    {
      "commit": "def4df08c6df092a88ad8d22d66b011788fd3e52",
      "tree": "4409df23b08ae9211c306391855beac0d1df164f",
      "parents": [
        "d79430f203c1deaa16f148485bfae925b37c9100"
      ],
      "author": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Wed Feb 01 14:17:46 2017 +0200"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Wed Feb 01 14:17:46 2017 +0200"
      },
      "message": "[calico] Fix glide cache issues with libcalico-go\n\nChange-Id: Icbfcd4c789d3eb237464f5ea54d79c0748971889\n"
    },
    {
      "commit": "d79430f203c1deaa16f148485bfae925b37c9100",
      "tree": "c5f467b3e3749081026f4edb0b318cf1ccc681cd",
      "parents": [
        "70b1fe634693f9b611f38ad9de4ba4d8068d1e89"
      ],
      "author": {
        "name": "Artem Panchenko",
        "email": "apanchenko@mirantis.com",
        "time": "Wed Feb 01 00:34:21 2017 +0200"
      },
      "committer": {
        "name": "Artem Panchenko",
        "email": "apanchenko@mirantis.com",
        "time": "Wed Feb 01 12:35:58 2017 +0200"
      },
      "message": "[calico] Perform cleanup before building calico/cni\n\nSince we modify \u0027glide.lock\u0027 file manually to fetch\ndownstream libcalico-go into \u0027vendor\u0027 directory,\ngit reports that repository state is \u0027dirty\u0027. Reset\nall changes before starting binary and image build\nin order to get clean versions.\n\nChange-Id: I266c793a6c0fddbf09dc1e8aa1157a86da603b17\n"
    },
    {
      "commit": "70b1fe634693f9b611f38ad9de4ba4d8068d1e89",
      "tree": "684f541dcbfd0d9d85a7b5dba05728a70d803cd5",
      "parents": [
        "a9e6504f30f27c5d816b54aad571312fe46187b0"
      ],
      "author": {
        "name": "Sergey Reshetnyak",
        "email": "sreshetniak@mirantis.com",
        "time": "Tue Jan 31 22:27:06 2017 +0300"
      },
      "committer": {
        "name": "Sergey Reshetnyak",
        "email": "sreshetniak@mirantis.com",
        "time": "Tue Jan 31 22:27:33 2017 +0300"
      },
      "message": "Move yaml helpers to common module\n\nChange-Id: I99ca47817b9d6913cd240d1533d68f74916a342c\n"
    },
    {
      "commit": "a9e6504f30f27c5d816b54aad571312fe46187b0",
      "tree": "bc24847c31cf655a018cd6624b9b2933eb0b1d43",
      "parents": [
        "d10610b909b6364a7666eba98229614cc59ad4f2"
      ],
      "author": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Tue Jan 31 14:20:24 2017 +0200"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Tue Jan 31 14:20:24 2017 +0200"
      },
      "message": "[calico] Set dockerRepo as mandatory parameter\n\ndockerRepo should be an artifactory repo which is not virtual and\nthis paramter must be mandatory\n\nChange-Id: I4da7659287e3161d8407b6e8eb6fe2eaeed31d99\n"
    },
    {
      "commit": "d10610b909b6364a7666eba98229614cc59ad4f2",
      "tree": "251b676ea575a0eadf01b2b331c5f5b4ea340be9",
      "parents": [
        "bc13d2645229d20c8fc4aae9d2c6b3b2c20dbc89"
      ],
      "author": {
        "name": "Artem Panchenko",
        "email": "apanchenko@mirantis.com",
        "time": "Fri Jan 27 18:09:52 2017 +0200"
      },
      "committer": {
        "name": "Artem Panchenko",
        "email": "apanchenko@mirantis.com",
        "time": "Fri Jan 27 18:09:52 2017 +0200"
      },
      "message": "Fix gerrit credentials in Calico module\n\nReplace temporary used \u0027credentialsId\u0027 by a\nproduction one.\n\nChange-Id: I0cf0a27202df8e053ecb9ec0f65b2a0f6bd58160\n"
    },
    {
      "commit": "bc13d2645229d20c8fc4aae9d2c6b3b2c20dbc89",
      "tree": "1db7756109e84eb0ff7c0447c79a4f298c9c555d",
      "parents": [
        "c4cd5b70fe1607ba371f3061d27041530116e312"
      ],
      "author": {
        "name": "Artem Panchenko",
        "email": "apanchenko@mirantis.com",
        "time": "Fri Jan 20 12:40:58 2017 +0200"
      },
      "committer": {
        "name": "Artem Panchenko",
        "email": "apanchenko@mirantis.com",
        "time": "Fri Jan 27 12:57:13 2017 +0200"
      },
      "message": "Move Calico test/build/publish stuff to library\n\nSince we use the same stages by different Calico\npipelines, moved them to library in order to\nmake DRY jobs.\n\nChange-Id: Ibf4dc7712e463cb0e137f1de87289e30dff46fa1\n"
    },
    {
      "commit": "c4cd5b70fe1607ba371f3061d27041530116e312",
      "tree": "2818b7fd74683f9d5b9e65ec3a57add4028b7c87",
      "parents": [
        "b36e36ea262faf333e4a283fc62987110df145fb"
      ],
      "author": {
        "name": "asledzinskiy",
        "email": "asledzinskiy@mirantis.com",
        "time": "Wed Jan 25 16:50:56 2017 +0200"
      },
      "committer": {
        "name": "asledzinskiy",
        "email": "asledzinskiy@mirantis.com",
        "time": "Wed Jan 25 16:57:51 2017 +0200"
      },
      "message": "Remove env erase from runTest\n\n- Env erase shouldn\u0027t be part of runTest because it erases\nenvs between stages and so that all starts from scratch.\n- Env erase moved to separate function\n\nChange-Id: I49ed4ca05606486f5d4955d99cfa4e42f6cd9663\n"
    },
    {
      "commit": "b36e36ea262faf333e4a283fc62987110df145fb",
      "tree": "e24f6b3e5009a716d863f34dfbdf6d8ca3c27f61",
      "parents": [
        "b1aa0ff6d49751d98f41c35ee493619d58100b1b"
      ],
      "author": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Mon Jan 23 18:26:40 2017 +0200"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Mon Jan 23 18:26:40 2017 +0200"
      },
      "message": "[k8s-slave] Running function can potentially return values\n\nWe can expect reutrning values from function which is running\non k8s cluster\n\nExample:\n  def artifacts \u003d common.runOnKubernetes([\n    function : this.\u0026buildCalicoContainers,\n    jnlpImg  : jnlpSlaveImg,\n    slaveImg : jenkinsSlaveImg\n  ])\n  // run system test\n  node (\u0027calico\u0027){\n    stage (\"Run system tests\") {\n       build job: \u0027calico.system-test.deploy\u0027, propagate: true, wait: true, parameters:\n        [\n            [$class: \u0027StringParameterValue\u0027, name: \u0027CALICO_NODE_IMAGE_REPO\u0027, value: artifacts[\"CALICO_NODE_IMAGE_REPO\"]],\n            [$class: \u0027StringParameterValue\u0027, name: \u0027CALICOCTL_IMAGE_REPO\u0027, value: artifacts[\"CALICOCTL_IMAGE_REPO\"]],\n            [$class: \u0027StringParameterValue\u0027, name: \u0027CALICO_VERSION\u0027, value: artifacts[\"CALICO_VERSION\"]],\n            [$class: \u0027StringParameterValue\u0027, name: \u0027MCP_BRANCH\u0027, value: \u0027mcp\u0027],\n        ]\n    }\n  }\n\nChange-Id: I058537700e0bec06d9e14b422d452e2e7eb45e23\n"
    },
    {
      "commit": "b1aa0ff6d49751d98f41c35ee493619d58100b1b",
      "tree": "930b089887a5e22003240ab2a69023431ef87ca3",
      "parents": [
        "e897d8f3b7e343516fb7a45b7b6a4f6a952405c5"
      ],
      "author": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Mon Jan 23 17:48:44 2017 +0200"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Mon Jan 23 17:48:44 2017 +0200"
      },
      "message": "Fix type if instead of id\n\nChange-Id: I59ef5a2f05d7f9b1fc82e84075e9e18c5e4d3491\n"
    },
    {
      "commit": "e897d8f3b7e343516fb7a45b7b6a4f6a952405c5",
      "tree": "15c19281a2b99d570780aa487eb620ede0d6a7fb",
      "parents": [
        "e9e6faaed041bd3ab1813f6c366f63e6259f390f"
      ],
      "author": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Mon Jan 23 16:44:03 2017 +0200"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Mon Jan 23 15:18:11 2017 +0000"
      },
      "message": "Allow to run code on k8s-slave\n\nRun function on k8s cluster\n\n@param config LinkedHashMap\n   config includes next parameters:\n   - label, pod label\n   - function, code that should be run on k8s cluster\n   - jnlpImg, jnlp slave image\n   - slaveImg, slave image\n\nUsage example:\n def runFunc \u003d new com.mirantis.mcp.Common()\n  runFunc.runOnKubernetes ([\n    function : this.\u0026buildCalicoContainers,\n    slaveImg : \u0027sandbox-docker-dev-local.docker.mirantis.net/skulanov/jenkins-slave-images/calico-slave:1\u0027,\n    jnlpImg: \u0027docker-prod-virtual.docker.mirantis.net/mirantis/jenkins-slave-images/jnlp-slave:latest\u0027\n  ])\n\n //promotion example. In case of promotion we need only jnlp container\n def runFunc \u003d new com.mirantis.mcp.Common()\n runFunc.runOnKubernetes ([\n   jnlpImg: \u0027docker-prod-virtual.docker.mirantis.net/mirantis/jenkins-slave-images/jnlp-slave:latest\u0027,\n   function : this.\u0026promote_artifacts\n ])\n\nChange-Id: I167157a70d732455e5263d0a5e97854e5dc6a248\n"
    },
    {
      "commit": "e9e6faaed041bd3ab1813f6c366f63e6259f390f",
      "tree": "1bef1507c906c62f0cd3b846115d2551124d47a1",
      "parents": [
        "69307daca0723efff45b5a939521e5416f2df37f"
      ],
      "author": {
        "name": "Tatyana Leontovich",
        "email": "tleontovich@mirantis.com",
        "time": "Fri Jan 20 18:50:36 2017 +0200"
      },
      "committer": {
        "name": "Tatyana Leontovich",
        "email": "tleontovich@mirantis.com",
        "time": "Mon Jan 23 17:13:45 2017 +0200"
      },
      "message": "Add function run_e2e tests\n\nChange-Id: I8a84f35d9be4dcb43c96bff10495dc43ac2c3f35\n"
    },
    {
      "commit": "69307daca0723efff45b5a939521e5416f2df37f",
      "tree": "0fbe8a65eb19448cbcaddf69dd65d4f1b8f3d63a",
      "parents": [
        "f36af07eeafeea7e17921485857aa7ed472a5424"
      ],
      "author": {
        "name": "asledzinskiy",
        "email": "asledzinskiy@mirantis.com",
        "time": "Thu Jan 19 16:37:16 2017 +0200"
      },
      "committer": {
        "name": "Mateusz Matuszkowiak",
        "email": "mmatuszkowiak@mirantis.com",
        "time": "Fri Jan 20 12:30:58 2017 +0000"
      },
      "message": "Fix hyphen in package name\n\nChange-Id: Ie69e35996f90f5dad62a8f13df8b83bb009672fd\n"
    },
    {
      "commit": "f36af07eeafeea7e17921485857aa7ed472a5424",
      "tree": "e2c480d74784be1168901725217d4c09e2cfb6a7",
      "parents": [
        "e65f7b061dcc8e951bbeff470df53e0bc032575d"
      ],
      "author": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Fri Jan 20 13:35:57 2017 +0200"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Fri Jan 20 12:10:34 2017 +0000"
      },
      "message": "Re-use already running ssh-agent if any\n\nprepareSshAgentKey() will not start ssh-agent if there is already\nrunning any ssh-agent process, as the result there will be no\n\"config\" file (~/.ssh/ssh-agent.sh) and runSshAgentCommand fails\n\nInstead we need to re-use already running ssh-agent and re-construct\n  * SSH_AUTH_SOCK\n  * SSH_AGENT_PID\n\nE.g:\n  [env-01-configure-system] Running shell script\n   + head -n 1\n   + grep /tmp/ssh-.*/agent.*\n   + find /tmp/ -type s -name agent.*\n   + export SSH_AUTH_SOCK\u003d/tmp/ssh-NQmNvs9SM9wu/agent.5363\n   + echo /tmp/ssh-NQmNvs9SM9wu/agent.5363\n   + cut -d. -f2\n   + export SSH_AGENT_PID\u003d5363\n   + ssh-add /home/jenkins/.ssh/id_rsa_deployments-key\n   Identity added: /home/jenkins/.ssh/id_rsa_deployments-key (/home/jenkins/.ssh/id_rsa_deployments-key)\n\nChange-Id: I1e7126513fa623c83b5fdd3448a4654e24f09e33\n"
    },
    {
      "commit": "e65f7b061dcc8e951bbeff470df53e0bc032575d",
      "tree": "b66d87650b8d9cf3dbd768009a2439148476536c",
      "parents": [
        "e0948fd5ef25d25ca6f603014203d2af53ddc277"
      ],
      "author": {
        "name": "Tomáš Kukrál",
        "email": "tkukral@mirantis.com",
        "time": "Thu Jan 19 13:16:43 2017 +0100"
      },
      "committer": {
        "name": "Tomáš Kukrál",
        "email": "tkukral@mirantis.com",
        "time": "Thu Jan 19 16:04:22 2017 +0100"
      },
      "message": "Update k8s deploy steps\n\nChange deploy steps to comply with updated salt-formula-kubernetes\n\nChange-Id: I4ef1a542d82e4d241828873b40e261934538368a\n"
    },
    {
      "commit": "e0948fd5ef25d25ca6f603014203d2af53ddc277",
      "tree": "7aacf83cf56ac78a449ecd067721a4c4f89bd684",
      "parents": [
        "9fcec461a53ece5f5501c3473b2876ad780a7863"
      ],
      "author": {
        "name": "asledzinskiy",
        "email": "asledzinskiy@mirantis.com",
        "time": "Fri Jan 06 16:23:54 2017 +0200"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Wed Jan 18 11:08:10 2017 +0000"
      },
      "message": "Add common functions to run mcp-qa tests\n\n- Added RunTest package with function to run test\n- Added EnvActions package with functions to manipulate env\n- Added Common package with common functions\n\nChange-Id: I921c75f990e182c1264aeecf29780b2390cfcc9c\n"
    },
    {
      "commit": "9fcec461a53ece5f5501c3473b2876ad780a7863",
      "tree": "b221c8f145f12ed6268631b92a764bc64362ed94",
      "parents": [
        "88054e65efdfa90da645f59313d6dac9804ceda7",
        "d3a9c2b15605d8e10bf1e887e6c7849b8471f45f"
      ],
      "author": {
        "name": "Denis Egorenko",
        "email": "degorenko@mirantis.com",
        "time": "Tue Jan 17 14:55:42 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "gerrit2@9057e92ed064",
        "time": "Tue Jan 17 14:55:43 2017 +0000"
      },
      "message": "Merge \"Add basic codenarc checks\""
    },
    {
      "commit": "d3a9c2b15605d8e10bf1e887e6c7849b8471f45f",
      "tree": "7006135206b9a931c388987ac4e0ec460667c2a1",
      "parents": [
        "e945ec9b39a50c8173f409cd653097023c66bcb9"
      ],
      "author": {
        "name": "Igor Belikov",
        "email": "ibelikov@mirantis.com",
        "time": "Wed Jan 11 16:19:07 2017 +0300"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Tue Jan 17 14:54:29 2017 +0000"
      },
      "message": "Add basic codenarc checks\n\n* Use gradle to run codenarc tests\n* Point jcenter repo address to MCP Artifactory instance\n* Add gradle cache and codenarc build report directories to .gitignore\n\nChange-Id: Id5d23de2d6fde8fd4a583b3b67866e1906de8866\n"
    },
    {
      "commit": "88054e65efdfa90da645f59313d6dac9804ceda7",
      "tree": "f219f9382d146f30e6e97a3138b2dbe665760e31",
      "parents": [
        "e945ec9b39a50c8173f409cd653097023c66bcb9"
      ],
      "author": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Tue Jan 17 16:21:54 2017 +0200"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Tue Jan 17 16:34:04 2017 +0200"
      },
      "message": "Add ability for anonymous gerrit code checkout\n\nChange-Id: I80eb5c651ff8a481b60616cb7f3170125e22387a\n"
    },
    {
      "commit": "e945ec9b39a50c8173f409cd653097023c66bcb9",
      "tree": "e4490dcb3a41bef4ece84541f48e04d1ea1d21fc",
      "parents": [
        "f89a188e398bfb1acbc803e655054df89077f5c8"
      ],
      "author": {
        "name": "Denis Egorenko",
        "email": "degorenko@mirantis.com",
        "time": "Wed Dec 21 19:15:10 2016 +0400"
      },
      "committer": {
        "name": "Denis Egorenko",
        "email": "degorenko@mirantis.com",
        "time": "Fri Jan 13 09:04:28 2017 +0000"
      },
      "message": "Switch *Checkout functions from closure to simple function\n\nBecause of scope visible problems for groovy closure in pipelines\nis better to switch to simple function.\n\nChange-Id: I993b2ba3cf311205e692c31e962f6a92b0a68100\n"
    },
    {
      "commit": "f89a188e398bfb1acbc803e655054df89077f5c8",
      "tree": "f4b117f40c766a5996d895e9246eba75c77a1b10",
      "parents": [
        "6f2bc66a3328d907a4ddaaa13b65caa376fce29d"
      ],
      "author": {
        "name": "Alexander Tivelkov",
        "email": "ativelkov@mirantis.com",
        "time": "Wed Jan 11 13:29:35 2017 +0300"
      },
      "committer": {
        "name": "Alexander Tivelkov",
        "email": "ativelkov@mirantis.com",
        "time": "Wed Jan 11 13:37:43 2017 +0300"
      },
      "message": "Screened credentials printing in openstack env\n\nAdded \"set +x\" / \"set -x\" commands to the generated openstack\nenvironment file to prevent password to be logged when the file is\nsourced during job execution.\n\nChange-Id: Id8622019a648619a5ea6c814fc06e430316af2f3\n"
    },
    {
      "commit": "6f2bc66a3328d907a4ddaaa13b65caa376fce29d",
      "tree": "55974f33e9664b7c9e81431cf55c32bff47c5d0b",
      "parents": [
        "ddb44d08c385c4d0bd4f89233a9fe363c10cac6f"
      ],
      "author": {
        "name": "Ales Komarek",
        "email": "akomarek@mirantis.com",
        "time": "Thu Jan 05 11:52:47 2017 +0100"
      },
      "committer": {
        "name": "Ales Komarek",
        "email": "akomarek@mirantis.com",
        "time": "Thu Jan 05 11:52:47 2017 +0100"
      },
      "message": "Avoid batch runs as we need to handle salt async calls first\n\nChange-Id: I3ac78edd57f18edc1fea5493da0865bb363bebb1\n"
    },
    {
      "commit": "ddb44d08c385c4d0bd4f89233a9fe363c10cac6f",
      "tree": "0d7d139d1e182e912ba2fe5124ed6e4909a20862",
      "parents": [
        "eeed8658c183d990b9df8da23a51285f15b0819c"
      ],
      "author": {
        "name": "Ales Komarek",
        "email": "akomarek@mirantis.com",
        "time": "Wed Jan 04 13:17:04 2017 +0100"
      },
      "committer": {
        "name": "Ales Komarek",
        "email": "akomarek@mirantis.com",
        "time": "Wed Jan 04 14:18:42 2017 +0100"
      },
      "message": "Overhauled Salt workflows to cope with NoCPS issue\n\nChange-Id: Ie5038233ad464e2b07f3e212354f78665e1f9494\n"
    },
    {
      "commit": "eeed8658c183d990b9df8da23a51285f15b0819c",
      "tree": "33544c68ffd79629d3f7f40a16010fe4df8f3987",
      "parents": [
        "bfd10f4804669a3b9db9a8c1d8df824a1eefc587"
      ],
      "author": {
        "name": "Ales Komarek",
        "email": "akomarek@mirantis.com",
        "time": "Tue Jan 03 15:20:21 2017 +0100"
      },
      "committer": {
        "name": "Ales Komarek",
        "email": "akomarek@mirantis.com",
        "time": "Tue Jan 03 15:20:30 2017 +0100"
      },
      "message": "No CSP for saltCommand function to fix hashmap serialization error\n\nChange-Id: I5c637ca3deb61649ae963be0be5b963c4b7025d1\n"
    },
    {
      "commit": "bfd10f4804669a3b9db9a8c1d8df824a1eefc587",
      "tree": "b17f621aca08b0c588d56e143e1588933d96b9b7",
      "parents": [
        "fc65ea7aae475030a4bc704f4f5a972a5e6e5750"
      ],
      "author": {
        "name": "Ales Komarek",
        "email": "akomarek@mirantis.com",
        "time": "Tue Jan 03 13:40:12 2017 +0100"
      },
      "committer": {
        "name": "Ales Komarek",
        "email": "akomarek@mirantis.com",
        "time": "Tue Jan 03 13:40:12 2017 +0100"
      },
      "message": "Fixed ommited http module include\n\nChange-Id: Id0fedc52b6501c9dadb88ba1359a6871aa72e86c\n"
    },
    {
      "commit": "fc65ea7aae475030a4bc704f4f5a972a5e6e5750",
      "tree": "55ff31ea91eda598e09d8ee80e11d8bdb3b66b09",
      "parents": [
        "7ebd00629546905be114e372002a5707f7828e8e"
      ],
      "author": {
        "name": "Ales Komarek",
        "email": "akomarek@mirantis.com",
        "time": "Tue Jan 03 12:13:36 2017 +0100"
      },
      "committer": {
        "name": "Ales Komarek",
        "email": "akomarek@mirantis.com",
        "time": "Tue Jan 03 12:13:36 2017 +0100"
      },
      "message": "Simple echo\n\nChange-Id: Icfc28f6fa08521d274f55762d22f895815850f97\n"
    },
    {
      "commit": "7ebd00629546905be114e372002a5707f7828e8e",
      "tree": "3b8ffad09fcbedd2a1c9fe8d83831c5281b7931d",
      "parents": [
        "eedc222d33857dbd51da9eb297c776fda9e45ee1"
      ],
      "author": {
        "name": "Ales Komarek",
        "email": "akomarek@mirantis.com",
        "time": "Tue Jan 03 10:59:29 2017 +0100"
      },
      "committer": {
        "name": "Ales Komarek",
        "email": "akomarek@mirantis.com",
        "time": "Tue Jan 03 10:59:29 2017 +0100"
      },
      "message": "Hackfix\n\nChange-Id: Ia09d93153ac5e62666db11ec9c895b2074686ada\n"
    },
    {
      "commit": "eedc222d33857dbd51da9eb297c776fda9e45ee1",
      "tree": "5a32f0a63c7c09bd39b7d9856aed45174902a4e8",
      "parents": [
        "dce8b479cba49663035bece7db4bfe3078d87506"
      ],
      "author": {
        "name": "Ales Komarek",
        "email": "akomarek@mirantis.com",
        "time": "Tue Jan 03 10:10:03 2017 +0100"
      },
      "committer": {
        "name": "Ales Komarek",
        "email": "akomarek@mirantis.com",
        "time": "Tue Jan 03 10:10:03 2017 +0100"
      },
      "message": "Debug output\n\nChange-Id: Ia3d3bb51c68529e1b1345f6d90b619e6bbe89d28\n"
    },
    {
      "commit": "dce8b479cba49663035bece7db4bfe3078d87506",
      "tree": "c5b0aae8fb7be6e420fdaa072d5fee356899e6a9",
      "parents": [
        "c6d28dda61d002412f688e36fcef36962f5b5231"
      ],
      "author": {
        "name": "Ales Komarek",
        "email": "akomarek@mirantis.com",
        "time": "Fri Dec 30 16:56:07 2016 +0100"
      },
      "committer": {
        "name": "Ales Komarek",
        "email": "akomarek@mirantis.com",
        "time": "Fri Dec 30 16:56:07 2016 +0100"
      },
      "message": "Fixed status condition\n\nChange-Id: If78b271ecd70efb812e980037952d36563db518a\n"
    },
    {
      "commit": "c6d28dda61d002412f688e36fcef36962f5b5231",
      "tree": "3eed3a16286a66d22f1294b9dff342a4dafe0be9",
      "parents": [
        "e11e87940ec5c1098b398af3217cc94245f99c04"
      ],
      "author": {
        "name": "Ales Komarek",
        "email": "akomarek@mirantis.com",
        "time": "Wed Dec 28 12:59:38 2016 +0100"
      },
      "committer": {
        "name": "Ales Komarek",
        "email": "akomarek@mirantis.com",
        "time": "Wed Dec 28 12:59:38 2016 +0100"
      },
      "message": "No python module prefix\n\nChange-Id: I6e9a6da78eb69bb536087f4d232a0beb23ac48ae\n"
    },
    {
      "commit": "e11e87940ec5c1098b398af3217cc94245f99c04",
      "tree": "c97b6e55376ff5b5d865f75684b16f0bbc0ca526",
      "parents": [
        "6307d34c4ae19260ea45813cdc0fbd5062dff532"
      ],
      "author": {
        "name": "Ales Komarek",
        "email": "akomarek@mirantis.com",
        "time": "Wed Dec 28 09:42:25 2016 +0100"
      },
      "committer": {
        "name": "Ales Komarek",
        "email": "akomarek@mirantis.com",
        "time": "Wed Dec 28 09:42:25 2016 +0100"
      },
      "message": "Fixed abdundant parameter\n\nChange-Id: I54778c982d7958107564119dc4f399bed502cbc3\n"
    },
    {
      "commit": "6307d34c4ae19260ea45813cdc0fbd5062dff532",
      "tree": "63b9ab437255702a649b8ebc780e6f30c26bc17f",
      "parents": [
        "67af6c2a675e1d0640849e5e35d743f70fcc215b"
      ],
      "author": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Tue Dec 27 14:29:31 2016 +0200"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Tue Dec 27 14:29:31 2016 +0200"
      },
      "message": "Supress private key output in jenkins console\n\nChange-Id: I0fa3f48388da50daac16dc4532952cbcde48719a\n"
    },
    {
      "commit": "67af6c2a675e1d0640849e5e35d743f70fcc215b",
      "tree": "4227667d6e1ea4cdc9a1c7e6761d43f4b49b6c10",
      "parents": [
        "d874d480bf2edae5389c6a5642af0a0752b1ece2"
      ],
      "author": {
        "name": "iberezovskiy",
        "email": "iberezovskiy@mirantis.com",
        "time": "Mon Dec 26 18:17:21 2016 +0400"
      },
      "committer": {
        "name": "iberezovskiy",
        "email": "iberezovskiy@mirantis.com",
        "time": "Mon Dec 26 18:18:48 2016 +0400"
      },
      "message": "Fix prepareSshAgentKey method in MK ssl\n\nWe need to include MK common to use\ngetSshCredentials method inside prepareSshAgentKey.\n\nChange-Id: Ia94a9cb6f019bfbc8fadb7d133694fc1d7460f8d\n"
    },
    {
      "commit": "d874d480bf2edae5389c6a5642af0a0752b1ece2",
      "tree": "d9032c7252a14fef2a028b17b3b2c0110b79d198",
      "parents": [
        "c000c150eae946a26d315c71cd15283e678c258a"
      ],
      "author": {
        "name": "Ales Komarek",
        "email": "akomarek@mirantis.com",
        "time": "Mon Dec 26 10:33:29 2016 +0100"
      },
      "committer": {
        "name": "Ales Komarek",
        "email": "akomarek@mirantis.com",
        "time": "Mon Dec 26 10:33:29 2016 +0100"
      },
      "message": "Pip based docutols\n\nChange-Id: I09d51954f01d8dac5e651852b5b164ad1166e7cd\n"
    },
    {
      "commit": "c000c150eae946a26d315c71cd15283e678c258a",
      "tree": "022707416c46f43f72536ab992406daa6345a449",
      "parents": [
        "0e558ee30998e405ddc27669cdc5b1b208a0eeda"
      ],
      "author": {
        "name": "Ales Komarek",
        "email": "akomarek@mirantis.com",
        "time": "Fri Dec 23 15:32:54 2016 +0100"
      },
      "committer": {
        "name": "Ales Komarek",
        "email": "akomarek@mirantis.com",
        "time": "Fri Dec 23 15:36:37 2016 +0100"
      },
      "message": "Escaped new line character and added MCP processes\n\nChange-Id: If537b3b908d7690542282765c5dba37674cfe691\n"
    },
    {
      "commit": "0e558ee30998e405ddc27669cdc5b1b208a0eeda",
      "tree": "ecb0eab29620b6c729adb2cbf53943e828e80dde",
      "parents": [
        "ba20398337517c47040f10774ef1da91afd198c0"
      ],
      "author": {
        "name": "Ales Komarek",
        "email": "akomarek@mirantis.com",
        "time": "Fri Dec 23 13:02:55 2016 +0100"
      },
      "committer": {
        "name": "Ales Komarek",
        "email": "akomarek@mirantis.com",
        "time": "Fri Dec 23 13:03:41 2016 +0100"
      },
      "message": "Fix Keystone RC and parser\n\nChange-Id: I0b4657bcbd46917e355916aa62cbd1578563ee67\n"
    },
    {
      "commit": "ba20398337517c47040f10774ef1da91afd198c0",
      "tree": "4b77810760db3c77042a74a1150d5606bf6e53d1",
      "parents": [
        "a56d231cb26d376f99ee1e222bdb1687a7d29630"
      ],
      "author": {
        "name": "Sergey Kolekonov",
        "email": "skolekonov@mirantis.com",
        "time": "Wed Dec 21 18:32:17 2016 +0400"
      },
      "committer": {
        "name": "Denis Egorenko",
        "email": "degorenko@mirantis.com",
        "time": "Thu Dec 22 09:15:55 2016 +0000"
      },
      "message": "Add mk libraries\n\nChange-Id: I829b299b6329e8f4d4424c89717d432513d1eece\n"
    },
    {
      "commit": "a56d231cb26d376f99ee1e222bdb1687a7d29630",
      "tree": "58eb8af0cc54194d50a7582281fe7b2cfb2839e3",
      "parents": [
        "12cbdf6f1105a0ccd6a5280d28a0155c1c5bbcef",
        "ff32a4ddb1627b8f7d5b927f4752ae4a04c069b3"
      ],
      "author": {
        "name": "Denis Egorenko",
        "email": "degorenko@mirantis.com",
        "time": "Wed Dec 21 14:49:10 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "gerrit2@9057e92ed064",
        "time": "Wed Dec 21 14:49:11 2016 +0000"
      },
      "message": "Merge \"Revert \"Remove redutant vars/ folder\"\""
    },
    {
      "commit": "ff32a4ddb1627b8f7d5b927f4752ae4a04c069b3",
      "tree": "5e41fec8d8135aa55b39060a591900e878c26544",
      "parents": [
        "a78108cfd53931236d3ee2b32c6e48d4d8eb5c88"
      ],
      "author": {
        "name": "Denis Egorenko",
        "email": "degorenko@mirantis.com",
        "time": "Wed Dec 21 14:41:53 2016 +0000"
      },
      "committer": {
        "name": "Denis Egorenko",
        "email": "degorenko@mirantis.com",
        "time": "Wed Dec 21 14:41:53 2016 +0000"
      },
      "message": "Revert \"Remove redutant vars/ folder\"\n\nThis reverts commit a78108cfd53931236d3ee2b32c6e48d4d8eb5c88.\n\nChange-Id: Ibc42fdc12b942b72cb0538cfcef6b933fdaec51a\n"
    },
    {
      "commit": "12cbdf6f1105a0ccd6a5280d28a0155c1c5bbcef",
      "tree": "008b9c52a80db8491c31d1cdb8a649f0134950e0",
      "parents": [
        "bb1f8795e1c4d5dd510931abf1bcb9c6dd1e4582",
        "a78108cfd53931236d3ee2b32c6e48d4d8eb5c88"
      ],
      "author": {
        "name": "Sergey Kolekonov",
        "email": "skolekonov@mirantis.com",
        "time": "Wed Dec 21 14:26:57 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "gerrit2@9057e92ed064",
        "time": "Wed Dec 21 14:26:58 2016 +0000"
      },
      "message": "Merge \"Remove redutant vars/ folder\""
    },
    {
      "commit": "bb1f8795e1c4d5dd510931abf1bcb9c6dd1e4582",
      "tree": "58eb8af0cc54194d50a7582281fe7b2cfb2839e3",
      "parents": [
        "2bc89179c01bf0f5d9befd0f32a3d56f58e2725f"
      ],
      "author": {
        "name": "Denis Egorenko",
        "email": "degorenko@mirantis.com",
        "time": "Wed Dec 21 13:13:24 2016 +0400"
      },
      "committer": {
        "name": "Denis Egorenko",
        "email": "degorenko@mirantis.com",
        "time": "Wed Dec 21 13:41:42 2016 +0000"
      },
      "message": "Allow to wipe workspace before cloning for gitSSHCheckout for Mirantis package\n\nPatch I0a1c8491584b7e50140b738303bad9240fd7f347 missed this change for\nmain lib package, so let\u0027s add it, because basic \u0027vars\u0027 functions will\nbe removed.\n\nChange-Id: Ic1dec6bd48ca82d87a730e85b4730d25cbcafa8f\n"
    },
    {
      "commit": "a78108cfd53931236d3ee2b32c6e48d4d8eb5c88",
      "tree": "23feb2e197f5336529b2d9d826bcd558317a3a5a",
      "parents": [
        "2bc89179c01bf0f5d9befd0f32a3d56f58e2725f"
      ],
      "author": {
        "name": "Denis Egorenko",
        "email": "degorenko@mirantis.com",
        "time": "Wed Dec 21 13:24:08 2016 +0400"
      },
      "committer": {
        "name": "Denis Egorenko",
        "email": "degorenko@mirantis.com",
        "time": "Wed Dec 21 17:33:27 2016 +0400"
      },
      "message": "Remove redutant vars/ folder\n\nSince we should use only Mirantis lib package for using\nall needed functions and tools.\n\nChange-Id: I00b294525ce14d5300092cc7cceecd3d310588f2\n"
    },
    {
      "commit": "2bc89179c01bf0f5d9befd0f32a3d56f58e2725f",
      "tree": "5e41fec8d8135aa55b39060a591900e878c26544",
      "parents": [
        "0327d507ee3c32240bb21c7b9280c8ec4a0cf864"
      ],
      "author": {
        "name": "Denis Egorenko",
        "email": "degorenko@mirantis.com",
        "time": "Wed Dec 21 17:31:19 2016 +0400"
      },
      "committer": {
        "name": "Denis Egorenko",
        "email": "degorenko@mirantis.com",
        "time": "Wed Dec 21 17:33:27 2016 +0400"
      },
      "message": "Add missed definition for Docker function\n\nChange-Id: I7e07ff3d1ad0fb518c1762d77288babeaaeeccc5\n"
    },
    {
      "commit": "0327d507ee3c32240bb21c7b9280c8ec4a0cf864",
      "tree": "6e37dde05657980568c8f5e9b03e1946dc1607e2",
      "parents": [
        "8c60655dc08ab26968359621cba838d6a4f1eddb"
      ],
      "author": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Tue Dec 20 13:10:39 2016 +0200"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Tue Dec 20 13:10:39 2016 +0200"
      },
      "message": "Allow to wipe workspace before cloning\n\nChange-Id: I0a1c8491584b7e50140b738303bad9240fd7f347\n"
    },
    {
      "commit": "8c60655dc08ab26968359621cba838d6a4f1eddb",
      "tree": "a14d3ee0429926f2c218e7197d9df9db0eee54ec",
      "parents": [
        "33043c1cfd630c7f16db7fb358e647168eef2e5a"
      ],
      "author": {
        "name": "Denis Egorenko",
        "email": "degorenko@mirantis.com",
        "time": "Wed Dec 07 14:22:50 2016 +0400"
      },
      "committer": {
        "name": "Denis Egorenko",
        "email": "degorenko@mirantis.com",
        "time": "Mon Dec 12 18:18:40 2016 +0400"
      },
      "message": "Refactor var functions of Pipeline library\n\nMove all named functions under com.mirantis.mcp package\n\nChange-Id: I98002e038173fce2325d069e951b221c61109e69\n"
    },
    {
      "commit": "33043c1cfd630c7f16db7fb358e647168eef2e5a",
      "tree": "15aef3ad627ca9a6662d7f678b76324a221f52d1",
      "parents": [
        "eea4f8d8956e76ed1cc83c43c091849b576abd94"
      ],
      "author": {
        "name": "Denis Egorenko",
        "email": "degorenko@mirantis.com",
        "time": "Wed Dec 07 13:34:59 2016 +0400"
      },
      "committer": {
        "name": "Denis Egorenko",
        "email": "degorenko@mirantis.com",
        "time": "Mon Dec 12 14:19:12 2016 +0400"
      },
      "message": "Do not hardcode upstream artifactory URL in pipeline library\n\nPipeline library should use only local instance of CI elements.\n\nChange-Id: Ie2db28b12846e22a64c8f6ab01aba43a2f46d769\n"
    },
    {
      "commit": "eea4f8d8956e76ed1cc83c43c091849b576abd94",
      "tree": "788155551372f7c6356be8bb24cd77ac6d8e1829",
      "parents": [
        "12b3f1629f66437caf8a56b2a2a31232baf30ad9"
      ],
      "author": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Tue Dec 06 16:04:57 2016 +0200"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Tue Dec 06 16:04:57 2016 +0200"
      },
      "message": "Remove /artifactory from URI for binary-prod-repo\n\nChange-Id: Ifa819d1b5ad37e358931c7a661358c2cb901d532\n"
    },
    {
      "commit": "12b3f1629f66437caf8a56b2a2a31232baf30ad9",
      "tree": "d69f0620af0bc5c47d4e91241bcc54fc5b45819f",
      "parents": [
        "3f117e832fd41368f3f896a2bd880ee54609345c"
      ],
      "author": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Thu Dec 01 11:29:12 2016 +0200"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Thu Dec 01 11:29:12 2016 +0200"
      },
      "message": "Remove ci.mcp.Tools package\n\nInstead one must use packages from com.mirantis.mcp.* namespace\n\nChange-Id: I43808b56642fc84deac933323b33172ce433775c\n"
    },
    {
      "commit": "3f117e832fd41368f3f896a2bd880ee54609345c",
      "tree": "b82f5c1f0d6f204cb035bb48c19698994e85b6a1",
      "parents": [
        "93fa516b032be697ab2edbe072b44bf1d5f504e1"
      ],
      "author": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Wed Nov 30 17:41:23 2016 +0200"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Wed Nov 30 17:41:23 2016 +0200"
      },
      "message": "[calico] Use docker-prod-virtual for pulling any stuff\n\nChange-Id: I7dbf1d21eae683bf1aa5ed844f12ed5a8e86184d\n"
    },
    {
      "commit": "93fa516b032be697ab2edbe072b44bf1d5f504e1",
      "tree": "e5fba27dc04727cdd5e1983cb250786cf3e3371b",
      "parents": [
        "fedaf30edf4d4a304575b3696b6bb932d960918c"
      ],
      "author": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Tue Nov 29 13:28:06 2016 +0200"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Tue Nov 29 13:28:06 2016 +0200"
      },
      "message": "Switch to new publishing schema for calico project\n\nRemove temporary libraries, that were needed during transitional phase\n\nChange-Id: I83ddd8094372b08753a930213f07a7d38cf3f4dd\n"
    },
    {
      "commit": "fedaf30edf4d4a304575b3696b6bb932d960918c",
      "tree": "e71aa87789d1ce8d2c27b7c15e05633f60f211a9",
      "parents": [
        "4add50cbcd63bd8acaf3c7b83aed67740bfe1da1"
      ],
      "author": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Tue Nov 29 12:29:47 2016 +0200"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Tue Nov 29 12:29:47 2016 +0200"
      },
      "message": "Pull latest calico/build container\n\nChange-Id: Id121b9516c27e647fdbecfaa3a9d0f1afa663573\n"
    },
    {
      "commit": "4add50cbcd63bd8acaf3c7b83aed67740bfe1da1",
      "tree": "6f264f2e71cc62a66df9ec9a9033706f708466de",
      "parents": [
        "74910b64aac9f26f3b24fde319f76f61da6e87d2"
      ],
      "author": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Tue Nov 29 11:20:42 2016 +0200"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Tue Nov 29 11:22:06 2016 +0200"
      },
      "message": "Switch confd artifact to new location\n\nconfd binary artifact now located in correct place, so let\u0027s update\npath\n\nChange-Id: Icb134e33bd8a717f023d63bfb0f1051f8d83c5c2\n"
    },
    {
      "commit": "74910b64aac9f26f3b24fde319f76f61da6e87d2",
      "tree": "cd68e6b4e98421a6a268e3e8d6cb683e763667a7",
      "parents": [
        "1f30861b145c501aea4b332d863bd5451eaf463f"
      ],
      "author": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Mon Nov 28 18:00:17 2016 +0200"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Mon Nov 28 18:00:17 2016 +0200"
      },
      "message": "Switch bird artifacts to new location\n\nbird binary artifacts now located in correct place, so let\u0027s update\npath\n\nChange-Id: If9c7702673e68514fc13e7018a5d911f41fee849\n"
    },
    {
      "commit": "1f30861b145c501aea4b332d863bd5451eaf463f",
      "tree": "ea652d7d0f41bec4cf3b1e856d6802a9ab42aee7",
      "parents": [
        "6d9a4f887adbc2d0982bf45d9864c2141088c4d8"
      ],
      "author": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Mon Nov 28 16:50:22 2016 +0200"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Mon Nov 28 16:50:22 2016 +0200"
      },
      "message": "Correctly return calico names to system-test\n\n* CALICO_NODE_IMAGE_REPO\n* CALICOCTL_IMAGE_REPO\n\nChange-Id: Ia937bd9f6a6c13ffba4bce0beaabc215ad99fe07\n"
    },
    {
      "commit": "6d9a4f887adbc2d0982bf45d9864c2141088c4d8",
      "tree": "9a9723400e38073d4aa98c45caa6c671bd7fabb9",
      "parents": [
        "63b78985f86a1958651b03cb380d86ce57cc844f"
      ],
      "author": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Mon Nov 28 16:37:27 2016 +0200"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Mon Nov 28 16:37:27 2016 +0200"
      },
      "message": "Use docker-dev-virtual for new calico flow\n\nChange-Id: I25a4612122cad17f92b77fffc584849e91491937\n"
    },
    {
      "commit": "63b78985f86a1958651b03cb380d86ce57cc844f",
      "tree": "bd05f3d10b9ee050b5c33d8933cdbc376108ac5c",
      "parents": [
        "faae38607eb9ccd088a9447d13ea472189ceb12b"
      ],
      "author": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Mon Nov 28 16:24:27 2016 +0200"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Mon Nov 28 16:24:27 2016 +0200"
      },
      "message": "Use docker-dev-virtual for building images\n\nChange-Id: I65c3bd4b109bb3a2bf7210acd9acb924a49f789f\n"
    },
    {
      "commit": "faae38607eb9ccd088a9447d13ea472189ceb12b",
      "tree": "3fa405dcedd16fd5ecbd089afe4e0b4cd311e639",
      "parents": [
        "3a939c178dcf4484bf6d69c9d705f1536c714bf9"
      ],
      "author": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Mon Nov 28 13:27:36 2016 +0200"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Mon Nov 28 16:09:11 2016 +0200"
      },
      "message": "Align library to calico pipeline changes\n\nUse buildCalicoContainersNew step in order not to have\nimpact on current jobs\n\nChange-Id: Ida5a71806073a2b6a4669f330f14e37c1cdc482e\n"
    },
    {
      "commit": "3a939c178dcf4484bf6d69c9d705f1536c714bf9",
      "tree": "883c53d3a2690a01dd4c12dcaccfa733a554ef45",
      "parents": [
        "f29c958f1c73a1d8d32d8ebcdad8cd467077cf12"
      ],
      "author": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Mon Nov 28 11:54:35 2016 +0200"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Mon Nov 28 11:55:47 2016 +0200"
      },
      "message": "Calico jobs should use old publishing schema\n\nWe need to use old calico publishing schema to Unblock CI\nand start testing new workflow\n\nChange-Id: I4bb704485e8e31f510cf8b417dbad3b13330fda9\n"
    },
    {
      "commit": "f29c958f1c73a1d8d32d8ebcdad8cd467077cf12",
      "tree": "f7e31d32d241935c86ecebed57a719b31b3ce451",
      "parents": [
        "faa993a4faa75a5bddeea124f8b9f7a06b7d384f"
      ],
      "author": {
        "name": "Vitaly Parakhin",
        "email": "vparakhin@mirantis.com",
        "time": "Thu Nov 24 19:27:58 2016 +0200"
      },
      "committer": {
        "name": "Vitaly Parakhin",
        "email": "vparakhin@mirantis.com",
        "time": "Fri Nov 25 17:00:49 2016 +0200"
      },
      "message": "Switch port-based MCP Docker registries to subdomain\n\nChange-Id: I0f2adda5c5a7d02135b6e9fda89dc7d35f0b9db8\n"
    },
    {
      "commit": "faa993a4faa75a5bddeea124f8b9f7a06b7d384f",
      "tree": "0e43e18e7a9abda605579f2b08bfc5c1d7a8f8e5",
      "parents": [
        "4d3951c56113d0a970e7f497bb79633466b18681"
      ],
      "author": {
        "name": "Artur Kaszuba",
        "email": "akaszuba@mirantis.com",
        "time": "Thu Nov 24 17:50:20 2016 +0100"
      },
      "committer": {
        "name": "Artur Kaszuba",
        "email": "akaszuba@mirantis.com",
        "time": "Thu Nov 24 17:50:57 2016 +0100"
      },
      "message": "Update .gitreview\n\nChange-Id: I9916320395ae0c169da14e8d3133683ca958a75a\n"
    },
    {
      "commit": "4d3951c56113d0a970e7f497bb79633466b18681",
      "tree": "5db08c8fe4d7cbc05c62538dadba0646640fe01f",
      "parents": [
        "1c15df01827e560293863531abf9a8631c564473"
      ],
      "author": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Thu Nov 24 13:58:15 2016 +0200"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Thu Nov 24 13:58:15 2016 +0200"
      },
      "message": "Add com.mirantis.targetImg property to docker image property\n\ncom.mirantis.targetImg property allows to search docker\nartifacts by image name, for example\n\n  def properties \u003d [\n    \u0027com.mirantis.gerritChangeId\u0027: \"${env.GERRIT_CHANGE_ID}\",\n    \u0027com.mirantis.gerritPatchsetNumber\u0027: \"${env.GERRIT_PATCHSET_NUMBER}\",\n    \u0027com.mirantis.gerritChangeNumber\u0027 : \"${env.GERRIT_CHANGE_NUMBER}\",\n    \u0027com.mirantis.targetImg\u0027: \"${projectNamespace}/calico/node\"\n  ]\n\nChange-Id: I8f6cdb0b90edb263e2d24e987eee8b8be2e54df3\n"
    },
    {
      "commit": "1c15df01827e560293863531abf9a8631c564473",
      "tree": "36ff57b186077c213ad165a5521ae0eab390c3e5",
      "parents": [
        "8cd6d22a439db05e6edb5fab35d53671e8c6ea20"
      ],
      "author": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Mon Nov 21 16:59:59 2016 +0200"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Mon Nov 21 16:59:59 2016 +0200"
      },
      "message": "[calico-containers] Align to upstream\n\ns/BUILD_CONTAINER_NAME/PYTHON_BUILD_CONTAINER_NAME\n\n[1]. https://github.com/projectcalico/calico-containers/commit/7a4afcbc7ae1d7d0dd02129cbe079346af9681c3\n\nChange-Id: I42bea7d6c7ac3d32141ba8d63c85cb46a43af219\n"
    },
    {
      "commit": "8cd6d22a439db05e6edb5fab35d53671e8c6ea20",
      "tree": "a6c18e092a3b23af78631bfeca0353c44ce4405b",
      "parents": [
        "8567272fbc1f2df7e1faafb00ab05e8b5a700c8b"
      ],
      "author": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Thu Nov 17 13:42:47 2016 +0200"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Thu Nov 17 13:42:47 2016 +0200"
      },
      "message": "Extend uploadImageToArtifactory function\n\nWe need to publish BuildInfo object as well (as for binary) for\ndocker images.\n1. Replace:\n    String artifactoryURL\n   by\n    ArtifactoryServer server\n2. If buildInfo is defined, let\u0027s publish it to artifactory\n\nChange-Id: Iadb724307b81a8f40cf1852b909bbb25208dc143\n"
    },
    {
      "commit": "8567272fbc1f2df7e1faafb00ab05e8b5a700c8b",
      "tree": "84ffbf23fb44772df36b0bd7db1db6b98f5d5392",
      "parents": [
        "c70f1c21c8e9ebd7776ed4c065fd1aa05115ba3c"
      ],
      "author": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Wed Nov 16 17:46:58 2016 +0200"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Wed Nov 16 19:05:22 2016 +0200"
      },
      "message": "Update getGitDescribe function\n\nParametrize getGitDescribe(Boolean useShort \u003d false):\n  useShort Boolean, returns String in format:\n       false (Default): {gitTag}-{numCommits}-g{gitsha}\n       true:            {gitTag}-{numCommits}\n\nChange-Id: Ibf2e90f2fdef0611c3622b817d5f4e174fa90200\n"
    },
    {
      "commit": "c70f1c21c8e9ebd7776ed4c065fd1aa05115ba3c",
      "tree": "661410ac8d0e544c6d19e6284b96531557662a3b",
      "parents": [
        "edba5a547578272921ae33929424e36173f68ca1"
      ],
      "author": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Wed Nov 16 13:05:20 2016 +0200"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Wed Nov 16 13:05:20 2016 +0200"
      },
      "message": "Artifactory refactoring\n\n* Define new mandatory properties in artifactory:\n  \u0027com.mirantis.buildName\u0027:\"${env.JOB_NAME}\"\n  \u0027com.mirantis.buildNumber\u0027: \"${env.BUILD_NUMBER}\"\n\n* All mandatory properties MUST be the same both for binary\n  and docker images\n\n* Remove overloaded uriByProperties() with String as second\n  paramter, it\u0027s better to use the original one with LinkedHashMap\n\nChange-Id: I2c6ea7e4fd035a1b68122ee4bc00562c0f4d8814\n"
    },
    {
      "commit": "edba5a547578272921ae33929424e36173f68ca1",
      "tree": "3c5a6babe9cb57de0de25600d1ef632a6a1e37f2",
      "parents": [
        "91d8def7ed5c57ea5d4cadf375ecb7e8a9fb6105"
      ],
      "author": {
        "name": "Denis Egorenko",
        "email": "degorenko@mirantis.com",
        "time": "Tue Nov 15 19:55:56 2016 +0300"
      },
      "committer": {
        "name": "Denis Egorenko",
        "email": "degorenko@mirantis.com",
        "time": "Tue Nov 15 19:58:00 2016 +0300"
      },
      "message": "Update MCPArtifactory package according to actual code in Tools\n\nMinor update of uploadImageToArtifactory function:\n- explicity set type of function parameters;\n- remove external ENV var;\n- add reminder what should be improved;\n\nChange-Id: I116294a317dcf610f9fb4043c48593ea96212b04\n"
    },
    {
      "commit": "91d8def7ed5c57ea5d4cadf375ecb7e8a9fb6105",
      "tree": "e5d080c530b30b16e61a5c38a66938a1c9fa79f3",
      "parents": [
        "90d4e679b3ced71175587ba95dba99635ace4df5"
      ],
      "author": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Tue Nov 15 13:53:17 2016 +0200"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Tue Nov 15 15:42:12 2016 +0200"
      },
      "message": "Fix uploadBinariesToArtifactory function\n\nChange-Id: I51eac8b39d772dc84a6166f5d66c7e8f316afe41\n"
    },
    {
      "commit": "90d4e679b3ced71175587ba95dba99635ace4df5",
      "tree": "9575beb9488f81e5bf5746e5a5fa986cfac126fc",
      "parents": [
        "b28156cd51cef8f316f4fe339f77c1b0fc230b46"
      ],
      "author": {
        "name": "Ruslan Kamaldinov",
        "email": "rkamaldinov@mirantis.com",
        "time": "Fri Nov 11 18:31:00 2016 +0300"
      },
      "committer": {
        "name": "Ruslan Kamaldinov",
        "email": "rkamaldinov@mirantis.com",
        "time": "Mon Nov 14 18:55:27 2016 +0300"
      },
      "message": "Refactor structure of Pipeline library\n\n* Moved everything under com.mirantis.mcp package\n* Functions are grouped under different files, each with specific\n  functionality (e.g Artifactory, Docker, Git, etc)\n* Tools.groovy remains as is to avoid breaking existing jobs that\n  use it\n\nNext steps:\n* Modify existing pipelines to use functions from new package\n* Gradually get rid of Tools.groovy\n\nChange-Id: I56386f994666baa1c6db51b27beef4de4284ecb8\n"
    },
    {
      "commit": "b28156cd51cef8f316f4fe339f77c1b0fc230b46",
      "tree": "ef7adf29ba8360321a3508069b0c9ed76d8780f3",
      "parents": [
        "4932b17cb762e5c02d8f76ef5ec2b08e07d781ad"
      ],
      "author": {
        "name": "Alexander Saprykin",
        "email": "asaprykin@mirantis.com",
        "time": "Wed Nov 09 11:09:48 2016 +0100"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Thu Nov 10 15:42:12 2016 +0000"
      },
      "message": "Add function getGitDescribe\n\nFunction getGitCommitDescribe describes commit based on\nrecent git tag\n\nChange-Id: I2e83923fcfb0800a4a1b5d7b5fc67942d02ed051\n"
    },
    {
      "commit": "4932b17cb762e5c02d8f76ef5ec2b08e07d781ad",
      "tree": "17943e2e26924ce5466be33e35956cb6fe27f14b",
      "parents": [
        "d4e31281bfea4a36052aad5e656a12c80e824328"
      ],
      "author": {
        "name": "Artem Panchenko",
        "email": "apanchenko@mirantis.com",
        "time": "Tue Nov 08 19:06:03 2016 +0200"
      },
      "committer": {
        "name": "Artem Panchenko",
        "email": "apanchenko@mirantis.com",
        "time": "Thu Nov 10 14:45:33 2016 +0000"
      },
      "message": "Update default Calico version\n\nSet current released version (upstream) as default.\n\nChange-Id: I957475bc451e857dc6d8427d962f45c16f4c20a1\n"
    },
    {
      "commit": "d4e31281bfea4a36052aad5e656a12c80e824328",
      "tree": "6c73519aff368b16fbcc4b3f55fb860909590e74",
      "parents": [
        "9cef9255475b22624f9da80fc964661940a2c5cf"
      ],
      "author": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Tue Nov 08 17:39:19 2016 +0200"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Tue Nov 08 17:43:45 2016 +0200"
      },
      "message": "Add uriByProperties() with String as second parameter\n\nAdd overloaded function uriByProperties() which allows to pass\nproperties for search in format\n   prop1\u003dval1\u0026prop2\u003dval2\u0026prop3\u003dval3\n\nExample:\n  // return prop1\u003dval1;prop2;val2\n  def properties \u003d tools.getBinaryBuildProperties().replaceAll(\";\", \"\u0026\")\n  // Search for an artifact with required properties\n  def artifactURI \u003d tools.uriByProperties(env.ARTIFACTORY_URL, properties)\n\nChange-Id: I112e85309d92a37963b9bb35aa07f0c8cb897b2f\n"
    },
    {
      "commit": "9cef9255475b22624f9da80fc964661940a2c5cf",
      "tree": "57bdd31e649ec20dfdf3722a169d9526ccec15a0",
      "parents": [
        "d7ea0fef42840e8405515d946cd88a864338c065"
      ],
      "author": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Mon Nov 07 11:27:50 2016 +0000"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Mon Nov 07 11:27:53 2016 +0000"
      },
      "message": "Revert \"Switch calico projects to use libcalico from downstream\"\n\nThis reverts commit 00a84f6cbf22ca214aaa78f47dd880f3090cbdb6.\n\nChange-Id: Ied69f382c273eee07a2d7950766bab4cf37f81f0\n"
    },
    {
      "commit": "d7ea0fef42840e8405515d946cd88a864338c065",
      "tree": "859fbe18a2a977e3e4f3db405a29d95ab6fc380b",
      "parents": [
        "165f3d599a3494fcf732823bc87a8f6477738e5a"
      ],
      "author": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Sat Nov 05 14:00:20 2016 +0200"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Sat Nov 05 14:02:04 2016 +0200"
      },
      "message": "Align build targets to upstream for calico-containers\n\nBuild targets in upstream were changed, so we need to fix it in\ndownstream\n\nChange-Id: Ib188972b763fecb44f159effe6740fad57204448\n"
    },
    {
      "commit": "165f3d599a3494fcf732823bc87a8f6477738e5a",
      "tree": "7aecf6bd7c7e5fdfadc0826d089000cdddf68efd",
      "parents": [
        "20c8b1307b841582a5f3d1e89c8ed3209c739a6c"
      ],
      "author": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Thu Nov 03 16:19:33 2016 +0200"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Thu Nov 03 16:19:33 2016 +0200"
      },
      "message": "Fix node_image target\n\nFor now node_image target is broken in upstream, let\u0027s\nuse workaround which works both for upstream and downstream\n\n[1]. https://github.com/projectcalico/calico-containers/pull/1250\n\nChange-Id: Ie501b10ead1199c6a47a271790d701aefdc86c33\n"
    },
    {
      "commit": "20c8b1307b841582a5f3d1e89c8ed3209c739a6c",
      "tree": "fa020644b9c06d3f642457a8a27953bb428e22ae",
      "parents": [
        "00a84f6cbf22ca214aaa78f47dd880f3090cbdb6"
      ],
      "author": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Wed Nov 02 13:24:32 2016 +0200"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Wed Nov 02 13:58:12 2016 +0200"
      },
      "message": "Add setDockerLabels method\n\n* Add mandatory LABEL to the end of the Dockerfile\n* User can also add some custom properties\n\n1. Simple usage, which adds mandatory properties to Dockerfile which\nis located in current directory\n   tools.setDockerfileLabels()\n\n2. Extended usage, add Labels to calico ctl and node images\n   def properties \u003d [\n     \"CALICO_NODE_IMAGE_REPO\u003d${calicoNodeImageRepo}\",\n     \"CALICOCTL_IMAGE_REPO\u003d${calicoCtlImageRepo}\",\n     \"CALICO_VERSION\u003d${calicoVersion}\"\n   ]\n   tools.setDockerfileLabels(\"./calicoctl/Dockerfile\", properties)\n   tools.setDockerfileLabels(\"./calico_node/Dockerfile\", properties)\n\nChange-Id: I0f9e6b83d4ffe5fe6a5ff02da50658b9eded5824\n"
    },
    {
      "commit": "00a84f6cbf22ca214aaa78f47dd880f3090cbdb6",
      "tree": "da85bb58c50beaf656d870fd7284ba246f593809",
      "parents": [
        "bd766a4190bba7de66faf37a23498d553f3c7919"
      ],
      "author": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Mon Oct 31 14:36:18 2016 +0200"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Mon Oct 31 14:36:18 2016 +0200"
      },
      "message": "Switch calico projects to use libcalico from downstream\n\n* calico-containers should use libcalico repo from downstream branch\n  mcp\n\n* libcalico code should be already checkouted to the related path\n  in calico-containers repo:\n\n   ${CALICO_CONTAINERS_ROOT}/calico_node/node_share/libcalico\n\n   was already done in I06fab53da73a2694483b806d26bd55594f809307\n\nChange-Id: I507d92abf6f96f7ef6e57d98ca9c8446ddc4ec37\n"
    },
    {
      "commit": "bd766a4190bba7de66faf37a23498d553f3c7919",
      "tree": "5be347dcde2ad236332966de0027a2e0a8c679c1",
      "parents": [
        "4f2fbcbaf8d498722e0549911be91142b23b5c33"
      ],
      "author": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Fri Oct 28 17:03:55 2016 +0300"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Fri Oct 28 17:15:53 2016 +0300"
      },
      "message": "Add withMerge flag for gitSSHCheckout step\n\nRather than merge the changes to be built into a branch which\ntracks the remote I want to push to, it checks out one rev and\nmerges the others on, resulting in a detached HEAD.\n\nSome tools expects to be run on a specific branch, and it\nfails because the repo isn\u0027t in that state.\n\n[1]. https://issues.jenkins-ci.org/browse/JENKINS-6856\n\nChange-Id: I9d6e2caf639d1aba651ae5f709c6369ea2848546\n"
    },
    {
      "commit": "4f2fbcbaf8d498722e0549911be91142b23b5c33",
      "tree": "5febf769d0714c66b34055a0dafcec31cd59b770",
      "parents": [
        "e3552687466f62578ff7384f7061b903b71d3741"
      ],
      "author": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Fri Oct 28 14:25:20 2016 +0300"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Fri Oct 28 15:22:49 2016 +0300"
      },
      "message": "Add timestamp generator\n\nCan be used for artifacts versioning\n\nChange-Id: I3b80b711740f0c9da7400e91a72caee87c0d5464\n"
    },
    {
      "commit": "e3552687466f62578ff7384f7061b903b71d3741",
      "tree": "31675943296f74d9d5d903c17d320bc76202301b",
      "parents": [
        "00d743445c9306e4c8c56300ec1cc41bb54a7b0c"
      ],
      "author": {
        "name": "Denis Egorenko",
        "email": "degorenko@mirantis.com",
        "time": "Tue Oct 18 13:29:29 2016 +0300"
      },
      "committer": {
        "name": "Denis Egorenko",
        "email": "degorenko@mirantis.com",
        "time": "Fri Oct 28 10:30:21 2016 +0000"
      },
      "message": "Extend pipeline library for Artifactory usage\n\nThis patch extends pipeline library with functions for working\nwith Artifactory repos and artifacts.\n\nAlso adds examples of usage.\n\nChange-Id: I641d00a69028b67f35f8455c7ad235591ef27496\n"
    },
    {
      "commit": "00d743445c9306e4c8c56300ec1cc41bb54a7b0c",
      "tree": "7b421ddce14e033a9277182d7845ac6075f61470",
      "parents": [
        "1835afe0e26087df344e523d7ca7bcc7fd8e4c72"
      ],
      "author": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Mon Oct 24 15:22:11 2016 +0300"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Mon Oct 24 12:25:06 2016 +0000"
      },
      "message": "Do not use WORKSPACE variable in buildCalicoContainers\n\nWe can checkout calico-containers to any directory, so we shouldn\u0027t\nrely on WORKSPACE variable, instead build step should run in the\ndirectory where calico-containers code was check-outed\n\nChange-Id: I3f5f22f48dcbd49e0305663b5b5684db4bbaee91"
    },
    {
      "commit": "1835afe0e26087df344e523d7ca7bcc7fd8e4c72",
      "tree": "eb1f894f68a0a216b2088f51ef7ca204e6c8a286",
      "parents": [
        "2202ad28229f020bab263a8a43288a7db6a2d37e"
      ],
      "author": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Wed Oct 19 16:53:14 2016 +0300"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Wed Oct 19 16:53:14 2016 +0300"
      },
      "message": "Parse HEAD of current directory and return commit hash\n\nChange-Id: If8d5eae45dc8e60708f93b6e259ae6694b69ba64\n"
    },
    {
      "commit": "2202ad28229f020bab263a8a43288a7db6a2d37e",
      "tree": "d6cee6a7f289151573ee7912e2c9f56b9bbb81b9",
      "parents": [
        "64bc88a761ba9acdd8aae8940ae8e17f921f823c"
      ],
      "author": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Tue Oct 18 17:14:12 2016 +0300"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Tue Oct 18 17:58:24 2016 +0300"
      },
      "message": "Remove publishing stage from calico-containers build step\n\ncalico-containers build step should only produce artifacts and\nstore them localy. All the Artifactory stuff should be done on\nglobal pipeline.\n\nChange-Id: Ic5de0089b35e4e9f3172e8403603f099c735d655\n"
    },
    {
      "commit": "64bc88a761ba9acdd8aae8940ae8e17f921f823c",
      "tree": "f6415b104ffc4b30d9e8d6e2b420be678ff6d4db",
      "parents": [
        "247c4e733e3f1035b59b9844de4a4b3acc605c78"
      ],
      "author": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Tue Oct 18 16:26:34 2016 +0300"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Tue Oct 18 16:26:34 2016 +0300"
      },
      "message": "Rename property gitSha to gerritPatchsetRevision\n\nBinary property gitSha should not confuse, so we must to rename\nit to gerritPatchsetRevision since it comes from variable\nGERRIT_PATCHSET_REVISION\n\nChange-Id: Ieb388fe3162019e8ac3fb4b88756fe183bfa3ec7\n"
    },
    {
      "commit": "247c4e733e3f1035b59b9844de4a4b3acc605c78",
      "tree": "1f9b5ae2b143aec9af2372b170d4d45bff2ea609",
      "parents": [
        "56d0d05728a4cb04aeceae006b2999c0d0dd9e5e"
      ],
      "author": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Mon Oct 17 16:43:29 2016 +0300"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Mon Oct 17 17:11:01 2016 +0300"
      },
      "message": "Add build calico-containers as a separate step\n\nWe have a lot of places which comsume the same code - build\ncalico images. So we need to have some common step in our library\nwhich can be configured by passing different parameters\n\nChange-Id: I34752fe6ff5d382883108797f5a98faba25c3eca\n"
    },
    {
      "commit": "56d0d05728a4cb04aeceae006b2999c0d0dd9e5e",
      "tree": "21866efbfc86d669b897ee47d5fd38c66b7fc759",
      "parents": [
        "0a7c17c7ee4b1a092e0e1f68bff08fc3067c8fbc"
      ],
      "author": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Thu Oct 13 15:48:56 2016 +0300"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Mon Oct 17 12:14:09 2016 +0300"
      },
      "message": "Implement getBinaryBuildProperties method\n\n1. getBinaryBuildProperties() should be used to define mandatory\nproperties for binary artifact, which are:\n\n    \"gerritProject\u003d${env.GERRIT_PROJECT}\",\n    \"gerritChangeNumber\u003d${env.GERRIT_CHANGE_NUMBER}\",\n    \"gerritPatchsetNumber\u003d${env.GERRIT_PATCHSET_NUMBER}\",\n    \"gerritChangeId\u003d${env.GERRIT_CHANGE_ID}\",\n    \"gitSha\u003d${env.GERRIT_PATCHSET_REVISION}\"\n\n2. User can add some custom properties, e.g:\n\ndef properties \u003d tools.getBinaryBuildProperties(\n   [\"test\u003d123\",\n    \"prop1\u003dval1\",\n     prop2\u003dval2\"\n   ])\n\n3. The resulting values will be the string in props format with\nnamespace com.mirantis, e.g:\n\n  gerritProject\u003dasd;gerritChangeNumber\u003d123;gerritChangeId\u003dddd\n\n4. How to use:\n\n    def tools \u003d new ci.mcp.Tools()\n    ...\n    def buildInfo \u003d Artifactory.newBuildInfo()\n    ...\n    def properties \u003d tools.getBinaryBuildProperties()\n    ...\n    // Create the upload spec.\n    def uploadSpec \u003d \"\"\"{\n        \"files\": [\n                {\n                    \"pattern\": \"**\",\n                    \"target\": \"some/target\",\n                    \"props\": \"${properties}\"\n                }\n            ]\n        }\"\"\"\n    server.upload(uploadSpec, buildInfo)\n    server.publishBuildInfo buildInfo\n\nChange-Id: I6dcc879c10b7fccf6dfcd8cb3ce86f52311c1a5a\n"
    },
    {
      "commit": "0a7c17c7ee4b1a092e0e1f68bff08fc3067c8fbc",
      "tree": "1cf4064675ae4ab3dc092cfda7b5becac84d9704",
      "parents": [
        "6a0686a055a7961d40a366b0635d72a3db2a6c78"
      ],
      "author": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Fri Sep 30 17:47:22 2016 +0300"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Fri Sep 30 17:47:22 2016 +0300"
      },
      "message": "Remove stages from steps\n\nStages for steps should be defined in pipelines\n\nChange-Id: I0b5e9162deaf3d147329a882d3716f80668d6c86\n"
    },
    {
      "commit": "6a0686a055a7961d40a366b0635d72a3db2a6c78",
      "tree": "6c58bffa6a76da0fa2cb695af7fb40d2fbf9cc6a",
      "parents": [
        "4dc96cd90ae152fec459a970e918ef51cfc59f4a"
      ],
      "author": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Fri Sep 30 14:53:18 2016 +0300"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Fri Sep 30 17:36:59 2016 +0300"
      },
      "message": "Add two non-mandatory options to gerritPatchsetCheckout\n\nIn some cases we need to be able to wipe before checkout\nand merge checkouted code before starting build. This\npatch introduces such changes.\n\nMerge feature is used together with pip install from git\nrepo, since everything should be merged in branch before\nrunning:\n  pip git+https://path_to_repo@branch\n\nexample:\n  // Usage example with merging to checkouted branch\n  node {\n    gerritPatchsetCheckout{\n      credentialsId \u003d \"credentials-id-string\"\n      withMerge \u003d true\n    }\n  }\n\nChange-Id: Ic35725db554c4e5d9e70c338999cf14eb29c1559\n"
    },
    {
      "commit": "4dc96cd90ae152fec459a970e918ef51cfc59f4a",
      "tree": "c969a8f74a6121a13724e389794ed9c717372903",
      "parents": [
        "1bbd3610f04603b77eff7b999c0d157db214ffb6"
      ],
      "author": {
        "name": "Igor Belikov",
        "email": "ibelikov@mirantis.com",
        "time": "Fri Sep 30 12:26:18 2016 +0300"
      },
      "committer": {
        "name": "Igor Belikov",
        "email": "ibelikov@mirantis.com",
        "time": "Fri Sep 30 12:26:18 2016 +0300"
      },
      "message": "Fix targetDir variable naming\n\nChange-Id: Ie73b29e03c17f13fb6a773c184f4907d165608c8\n"
    },
    {
      "commit": "1bbd3610f04603b77eff7b999c0d157db214ffb6",
      "tree": "44343861e77f1a969cd1ec70a554dee0a7e2ca4c",
      "parents": [
        "72f763e29d878108b67cfde70214e3f2a02fc594"
      ],
      "author": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Fri Sep 30 11:40:11 2016 +0300"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Fri Sep 30 11:40:11 2016 +0300"
      },
      "message": "Add getCommandBuilder command\n\nWe need to have an ability to build command line options for\ndocker command, e.g:\n  docker build --build-arg CALICO_REPO\u003drepo \\\n               --build-arg CALICO_VER\u003dmcp-0.1 \\\n               --build-arg LIBCALICO_REPO\u003drepo \\\n               --build-arg LIBCALICO_VER\u003dmcp-0.1\n               ...\n\nThis can be easily done by groovy and works in jenkins\n   [\"opt1\", \"opt2\", \"opt3\"].collect{ \"--build-arg \" + it }.join(\" \")\n\nbut doesn\u0027t for pipelines because of [1], so we need to\nhave our own bicycle - the first one, but not the last\n\n[1]. https://issues.jenkins-ci.org/browse/JENKINS-26481\n\nChange-Id: I5e06b305fc7e3d0c26c847779ec8a1ad81850e51\n"
    },
    {
      "commit": "72f763e29d878108b67cfde70214e3f2a02fc594",
      "tree": "2196c64b634eb5bf205f13139f2fadcafad65525",
      "parents": [
        "9021bbe21a0f05d2bc042da5eac3aaab93c3a6fa"
      ],
      "author": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Thu Sep 29 17:08:44 2016 +0300"
      },
      "committer": {
        "name": "Sergey Kulanov",
        "email": "skulanov@mirantis.com",
        "time": "Fri Sep 30 11:12:07 2016 +0300"
      },
      "message": "Add git clone over ssh protocol\n\nWe need to have some short-hand for clonning over ssh:// protocol\nthis patch implements such functionality.\n  Usage example:\n\n   node {\n     gitSSHCheckout {\n       credentialsId \u003d \"mcp-ci-gerrit\"\n       branch \u003d \"mcp-0.1\"\n       host \u003d \"ci.mcp-ci.local\"\n       project \u003d \"projectcalico/calico-containers\"\n     }\n   }\n\nChange-Id: I5f8390cdbbd3df06cffa703190534fe10ecfd1ca\n"
    }
  ],
  "next": "9021bbe21a0f05d2bc042da5eac3aaab93c3a6fa"
}
