{
    "componentChunkName": "component---src-templates-module-js",
    "path": "/courses/devops/ci-cd/",
    "result": {"data":{"module":{"frontmatter":{"duration":"3 hours","slug":"/courses/devops/ci-cd/","title":"Continuous Integration & Continuous Delivery (CI/CD)"},"course":{"frontmatter":{"title":"DevOps","slug":"/courses/devops/"}},"slides":[{"frontmatter":{"slug":"/courses/devops/ci-cd/slides/0/","title":"Simple deployment"}},{"frontmatter":{"slug":"/courses/devops/ci-cd/slides/1/","title":"What is it?"}},{"frontmatter":{"slug":"/courses/devops/ci-cd/slides/2/","title":"Benefits"}},{"frontmatter":{"slug":"/courses/devops/ci-cd/slides/3/","title":"CI/CD Fundamentals"}},{"frontmatter":{"slug":"/courses/devops/ci-cd/slides/4/","title":"What is the CI/CD Pipeline?"}},{"frontmatter":{"slug":"/courses/devops/ci-cd/slides/5/","title":"CI/CD pipeline"}},{"frontmatter":{"slug":"/courses/devops/ci-cd/slides/6/","title":"CI/CD pipeline"}},{"frontmatter":{"slug":"/courses/devops/ci-cd/slides/7/","title":"CI/CD tools"}},{"frontmatter":{"slug":"/courses/devops/ci-cd/slides/8/","title":"Delivery to Registries"}},{"frontmatter":{"slug":"/courses/devops/ci-cd/slides/9/","title":"References"}}],"parent":{"body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"duration\": \"3 hours\"\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"CI/CD brings automation into the DevOps life cycle. With less manual work, DevOps teams work more efficiently and with greater speed. An automated workflow also reduces the chance of human error and improves handoffs, which improves overall operational efficiency. Organizations that implement CI/CD make better use of their resources and will have a competitive edge over those that don't use CI/CD.\"), mdx(\"h2\", null, \"Simple deployment\"), mdx(\"p\", null, mdx(\"span\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"650px\"\n    }\n  }, \"\\n      \", mdx(\"a\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-link\",\n    \"href\": \"/static/e506b1573ec597bd3227a4855960daf0/644c5/simple-deployment.jpg\",\n    \"style\": {\n      \"display\": \"block\"\n    },\n    \"target\": \"_blank\",\n    \"rel\": \"noopener\"\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"58.89570552147239%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAMABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAECBf/EABUBAQEAAAAAAAAAAAAAAAAAAAEC/9oADAMBAAIQAxAAAAHsSitIH//EABYQAQEBAAAAAAAAAAAAAAAAABEAIP/aAAgBAQABBQJknH//xAAVEQEBAAAAAAAAAAAAAAAAAAAQEf/aAAgBAwEBPwGH/8QAFREBAQAAAAAAAAAAAAAAAAAAEBH/2gAIAQIBAT8Bp//EABQQAQAAAAAAAAAAAAAAAAAAACD/2gAIAQEABj8CX//EABsQAAMAAgMAAAAAAAAAAAAAAAABERAhMUFR/9oACAEBAAE/IW7c6K4Ir0m6S4//2gAMAwEAAgADAAAAENMP/8QAFxEBAAMAAAAAAAAAAAAAAAAAAAERQf/aAAgBAwEBPxDSof/EABYRAQEBAAAAAAAAAAAAAAAAAAARQf/aAAgBAgEBPxDCv//EABoQAQACAwEAAAAAAAAAAAAAAAEAERAhQYH/2gAIAQEAAT8QuvaN6iNSF9hXFL9RFL5j/9k=')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"Simple deployment\",\n    \"title\": \"Simple deployment\",\n    \"src\": \"/static/e506b1573ec597bd3227a4855960daf0/6aca1/simple-deployment.jpg\",\n    \"srcSet\": [\"/static/e506b1573ec597bd3227a4855960daf0/d2f63/simple-deployment.jpg 163w\", \"/static/e506b1573ec597bd3227a4855960daf0/c989d/simple-deployment.jpg 325w\", \"/static/e506b1573ec597bd3227a4855960daf0/6aca1/simple-deployment.jpg 650w\", \"/static/e506b1573ec597bd3227a4855960daf0/7c09c/simple-deployment.jpg 975w\", \"/static/e506b1573ec597bd3227a4855960daf0/01ab0/simple-deployment.jpg 1300w\", \"/static/e506b1573ec597bd3227a4855960daf0/644c5/simple-deployment.jpg 1440w\"],\n    \"sizes\": \"(max-width: 650px) 100vw, 650px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\",\n    \"decoding\": \"async\"\n  }), \"\\n  \"), \"\\n    \")), mdx(\"h2\", null, \"What is it?\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Continuous Integration (CI)\"), \" - a practice in which members of a team integrate their work frequently.\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Continuous Delivery (CD)\"), \" - a discipline where software is built in a manner that allows \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"deploying\"), \" to customers at any time.\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Continuous Deployment (CD)\"), \" - this \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"extends Continuous Delivery\"), \" by automating the deployment process so that code is automatically deployed to production after it passes automated testing.\"), mdx(\"h2\", null, \"Benefits\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"More time for innovation\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Better retention rates\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"More revenue\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Business efficiency\")), mdx(\"h2\", null, \"CI/CD Fundamentals\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"A single source repository\"), mdx(\"br\", {\n    parentName: \"li\"\n  }), \"Source code management (SCM) that houses all necessary files and scripts to create builds.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Automated builds\"), mdx(\"br\", {\n    parentName: \"li\"\n  }), \"Scripts should include everything you need to build from a single command.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Builds should be self-testing\"), mdx(\"br\", {\n    parentName: \"li\"\n  }), \"Testing scripts should ensure that the failure of a test should result in a failed build.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Frequent iterations\"), mdx(\"br\", {\n    parentName: \"li\"\n  }), \"Multiple commits to the repository mean there are fewer places for conflicts to hide.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Stable testing environments\"), mdx(\"br\", {\n    parentName: \"li\"\n  }), \"Code should be tested in a cloned version of the production environment.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Maximum visibility\"), mdx(\"br\", {\n    parentName: \"li\"\n  }), \"Every developer should be able to access the latest executables and see any changes made to the repository.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"Automated deployments\"), mdx(\"br\", {\n    parentName: \"li\"\n  }), \"Code should be able to deploy into multiple environments easily.\")), mdx(\"h2\", null, \"What is the CI/CD Pipeline?\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"CI/CD pipeline\"), \" - an automated sequence of events that is initiated after you update the code.\"), mdx(\"p\", null, \"Takes care of the work (that you would otherwise need to perform manually):\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"previewing an in-development site\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"testing a new code\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"deploying it to a production server\")), mdx(\"h2\", null, \"CI/CD pipeline\"), mdx(\"p\", null, mdx(\"span\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"650px\"\n    }\n  }, \"\\n      \", mdx(\"a\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-link\",\n    \"href\": \"/static/43fd5d3fc814ecf2fa070861e03d355a/72e01/cicd-pipeline.jpg\",\n    \"style\": {\n      \"display\": \"block\"\n    },\n    \"target\": \"_blank\",\n    \"rel\": \"noopener\"\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"34.96932515337423%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAHABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAEF/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEAMQAAAB3QUH/8QAFhAAAwAAAAAAAAAAAAAAAAAAABAh/9oACAEBAAEFAir/xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/AT//xAAUEAEAAAAAAAAAAAAAAAAAAAAQ/9oACAEBAAY/An//xAAZEAADAAMAAAAAAAAAAAAAAAAAARFBUXH/2gAIAQEAAT8hj2dCuT//2gAMAwEAAgADAAAAEIPP/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPxA//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPxA//8QAGxAAAgIDAQAAAAAAAAAAAAAAEVEAASExkdH/2gAIAQEAAT8QrqUAuFS9m4jmf//Z')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"CI/CD pipeline\",\n    \"title\": \"CI/CD pipeline\",\n    \"src\": \"/static/43fd5d3fc814ecf2fa070861e03d355a/6aca1/cicd-pipeline.jpg\",\n    \"srcSet\": [\"/static/43fd5d3fc814ecf2fa070861e03d355a/d2f63/cicd-pipeline.jpg 163w\", \"/static/43fd5d3fc814ecf2fa070861e03d355a/c989d/cicd-pipeline.jpg 325w\", \"/static/43fd5d3fc814ecf2fa070861e03d355a/6aca1/cicd-pipeline.jpg 650w\", \"/static/43fd5d3fc814ecf2fa070861e03d355a/7c09c/cicd-pipeline.jpg 975w\", \"/static/43fd5d3fc814ecf2fa070861e03d355a/72e01/cicd-pipeline.jpg 1024w\"],\n    \"sizes\": \"(max-width: 650px) 100vw, 650px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\",\n    \"decoding\": \"async\"\n  }), \"\\n  \"), \"\\n    \")), mdx(\"h2\", null, \"CI/CD pipeline\"), mdx(\"p\", null, mdx(\"span\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"650px\"\n    }\n  }, \"\\n      \", mdx(\"a\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-link\",\n    \"href\": \"/static/bdbf2e1f1f194a707fd907da10665978/644c5/cicd-pipeline-1.jpg\",\n    \"style\": {\n      \"display\": \"block\"\n    },\n    \"target\": \"_blank\",\n    \"rel\": \"noopener\"\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"58.89570552147239%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAMABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAIBBf/EABcBAAMBAAAAAAAAAAAAAAAAAAABAgP/2gAMAwEAAhADEAAAAezlCJC0/8QAGBAAAgMAAAAAAAAAAAAAAAAAABIBESD/2gAIAQEAAQUCYsacf//EABcRAQADAAAAAAAAAAAAAAAAAAABETH/2gAIAQMBAT8BjVP/xAAVEQEBAAAAAAAAAAAAAAAAAAAAEf/aAAgBAgEBPwFX/8QAFBABAAAAAAAAAAAAAAAAAAAAIP/aAAgBAQAGPwJf/8QAGBABAQEBAQAAAAAAAAAAAAAAAQARIUH/2gAIAQEAAT8hEjxtCgZCesHJIL//2gAMAwEAAgADAAAAELw//8QAGBEAAgMAAAAAAAAAAAAAAAAAAAERIVH/2gAIAQMBAT8QahPT/8QAFxEBAQEBAAAAAAAAAAAAAAAAAQARUf/aAAgBAgEBPxBSxy//xAAcEAACAwEAAwAAAAAAAAAAAAABEQAhMUFR0fD/2gAIAQEAAT8QL2ZSA9zlk3sZcCvqgyt2dgAHbyBXm5//2Q==')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"CI/CD pipeline\",\n    \"title\": \"CI/CD pipeline\",\n    \"src\": \"/static/bdbf2e1f1f194a707fd907da10665978/6aca1/cicd-pipeline-1.jpg\",\n    \"srcSet\": [\"/static/bdbf2e1f1f194a707fd907da10665978/d2f63/cicd-pipeline-1.jpg 163w\", \"/static/bdbf2e1f1f194a707fd907da10665978/c989d/cicd-pipeline-1.jpg 325w\", \"/static/bdbf2e1f1f194a707fd907da10665978/6aca1/cicd-pipeline-1.jpg 650w\", \"/static/bdbf2e1f1f194a707fd907da10665978/7c09c/cicd-pipeline-1.jpg 975w\", \"/static/bdbf2e1f1f194a707fd907da10665978/01ab0/cicd-pipeline-1.jpg 1300w\", \"/static/bdbf2e1f1f194a707fd907da10665978/644c5/cicd-pipeline-1.jpg 1440w\"],\n    \"sizes\": \"(max-width: 650px) 100vw, 650px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\",\n    \"decoding\": \"async\"\n  }), \"\\n  \"), \"\\n    \")), mdx(\"h2\", null, \"CI/CD tools\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Travis CI\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"GitLab CI\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Jenkins\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"...\")), mdx(\"h2\", null, \"Delivery to Registries\"), mdx(\"p\", null, \"We can \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"deliver\"), \" new releases of the software to registries.\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Registry\"), \" - is a software package hosting service, that allows you to host your packages and code in one place.\"), mdx(\"p\", null, \"Registry types:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"public\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"private\")), mdx(\"h3\", null, \"Example public package registries\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://www.npmjs.com/\"\n  }, \"NPM for JavaScript (NodeJS)\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://mvnrepository.com/\"\n  }, \"MVN Repository for Java\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://pypi.org/\"\n  }, \"Python Package Index for Python\"))), mdx(\"p\", null, \"Examples of installing packages from a registry for using them in a project:\"), mdx(\"div\", {\n    \"className\": \"gatsby-highlight\",\n    \"data-language\": \"bash\"\n  }, mdx(\"pre\", {\n    parentName: \"div\",\n    \"className\": \"language-bash\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-bash\"\n  }, mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token comment\"\n  }, \"# For NodeJS\"), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"npm\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"install\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"<\"), \"PACKAGE_NAME\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \">\"), \"\\n\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token comment\"\n  }, \"# For Java\"), \"\\nmvn \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"install\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"<\"), \"PACKAGE_NAME\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \">\"), \"\\n\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token comment\"\n  }, \"# For Python\"), \"\\npip \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"install\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"<\"), \"PACKAGE_NAME\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \">\"), \"\\npip3 \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token function\"\n  }, \"install\"), \" \", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \"<\"), \"PACKAGE_NAME\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"token operator\"\n  }, \">\")))), mdx(\"h3\", null, \"Example public Image registry\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://hub.docker.com/\"\n  }, \"Docker Hub\"))), mdx(\"h3\", null, \"Example box registry for virtual machines\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://app.vagrantup.com/boxes/search\"\n  }, \"Vagrant Cloud\"))), mdx(\"h2\", null, \"References\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://www.atlassian.com/continuous-delivery/principles/continuous-integration-vs-delivery-vs-deployment\"\n  }, \"Continuous integration vs. continuous delivery vs. continuous deployment\"))));\n}\n;\nMDXContent.isMDXComponent = true;"}}},"pageContext":{}},
    "staticQueryHashes": []}