{"id":197,"date":"2021-10-27T08:19:25","date_gmt":"2021-10-27T08:19:25","guid":{"rendered":"http:\/\/18.141.20.153\/?p=197"},"modified":"2025-08-22T08:11:41","modified_gmt":"2025-08-22T08:11:41","slug":"how-to-build-a-ros-ci-pipeline-using-aws-robomaker-and-codepipeline","status":"publish","type":"post","link":"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-ros-ci-pipeline-using-aws-robomaker-and-codepipeline\/","title":{"rendered":"How to build a ROS CI Pipeline using AWS Robomaker and CodePipeline?"},"content":{"rendered":"<span class=\"rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Reading Time: <\/span> <span class=\"rt-time\">10<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span>\n<p><img src=\"https:\/\/lh4.googleusercontent.com\/iaRcU6aBgnSaQYiDxbNhzeCMI1Cw18QyD9_8BrxtVMAy683xD_MAUV3dzpMeUzsH6sLKARzOG_zwhnH3CBjb8wewSXJsxBVBeTi03JxDFFUeJ2Ax4pFscLgYSLB2otzzhDQPJACv\" style=\"width: 1600px;\"><\/p>\n\n\n\n<p class=\"has-text-align-justify\">AWS RoboMaker is the most complete cloud solution for robotic developers to simulate, test, and securely deploy robotic applications at scale. RoboMaker&#8217;s managed ROS and Gazebo software stacks free up engineering resources and enable you to start building quickly. In this blog, we will navigate through the AWS Robomaker service and see how we can build a ROS CI Pipeline using AWS Robomaker and <a href=\"https:\/\/www.workfall.com\/learning\/blog\/how-to-set-up-a-continuous-deployment-pipeline-to-deploy-versions-of-an-application-on-aws-elastic-beanstalk-using-aws-codepipeline-part-1\/\">CodePipeline<\/a>. We will see how to create a development environment, structure the code base, execute commands, create an S3 bucket, build a pipeline and finally add a new action group to the pipeline to integrate AWS Robomaker with CodePipeline to build a fully configured ROS CI Pipeline. <a href=\"https:\/\/www.workfall.com\/learning\/blog\/how-to-build-a-ros-ci-pipeline-using-aws-robomaker-and-codepipelinepart-1\/\">Refer to part 1 of the blog here<\/a>.<\/p>\n\n\n\n<h2><strong>Hands-on<\/strong><\/h2>\n\n\n\n<p class=\"has-text-align-justify\">AWS RoboMaker is the most complete cloud solution for robotic developers to simulate, test, and securely deploy robotic applications at scale. With AWS RoboMaker, it is easy to enable a robot running ROS to navigate, communicate, comprehend, stream data, and learn. Tasks that once could either not be done or took months can now be done in hours or days. In this blog, we will see how we can make use of the AWS Robomaker service to create a ROS CI pipeline. We will have a look at how we can create a new development environment. Cloning the code files, we will then execute a set of commands. After the command execution, we will create multiple scenarios in a JSON file, create a new S3 bucket, configure the simulation launcher and create a builspec.yml file for the configuration. Finally, we will create a CodePipeline and add a simulation trigger as an action group to link AWS Robomaker with CodePipeline.<\/p>\n\n\n\n<p><strong>To implement this, we will do the following:<\/strong><\/p>\n\n\n\n<ul><li>Log in to the AWS account and navigate to the dashboard.<\/li><li>Navigate to the AWS Robomaker service dashboard.<\/li><li>Explore the service and its various offerings.<\/li><li>Create a development environment in the service dashboard.<\/li><li>Clone the repository for the code files.<\/li><li>Explore the various code files.<\/li><li>Create a new JSON file and define scenarios for the same.<\/li><li>Clone simulation launcher code files.<\/li><li>Install brew and update AWS CLI.<\/li><li>Follow the execution of commands.<\/li><li>Navigate to the S3 bucket dashboard and create a new bucket.<\/li><li>Follow the execution of the next set of commands.<\/li><li>Create a buildspec.yml file for your configuration.<\/li><li>Navigate to the CodePipeline dashboard and create a new pipeline.<\/li><li>Follow the configuration steps, create a new connection and connect to your GitHub account.<\/li><li>Create a build project in the CodePipeline.<\/li><li>Once the pipeline is created, edit the pipeline stages and add a new action group.<\/li><li>Following all the steps, you&#8217;ll have a complete processing ROS CI pipeline configured.<\/li><\/ul>\n\n\n\n<p>Login to your AWS console and navigate to the Dashboard.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh5.googleusercontent.com\/S9NmGhzVt-Sxb-TLUZVrkavimKXQoQbH8GZC02IQJd9PZi9gpgjZTzcioNw1zkHDIRerGK9jnheTHdOoFKYXAT80-lf3Bui5PXD9tmjgWG_SijcJYJxBBLYbnjSclnm2IJK38xoH\" alt=\"\"\/><\/figure>\n\n\n\n<p>Search for the AWS RoboMaker service and click on it.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh3.googleusercontent.com\/ky9KrsiRPtUxGHNPJk__EyCnDNxFUP_AjK_mpz_P6raIVbEB0qkODgd-8G6_1DlYMgA6BF_xdSlAilXCRBFwnX1xQHwZq67VDUdoA8z3rBTqZzC6_U5MYXDGwdEglcVBM_rHoOgk\" alt=\"\"\/><\/figure>\n\n\n\n<p>You will be navigated to the AWS RoboMaker dashboard as shown in the image below.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh3.googleusercontent.com\/5DWSaVgqvfv2EsKyw0EYft0qeKBNGhUFyP3Qm8VCOrK_NWOICXKy-0QFxb39BwRUjdlfSIlxLNM1TmVJpWtSXlb_KkgDFxQVzbvmksXr8IyhpJk3kxjJkRWFr1n7TlC7TnH2C3mT\" alt=\"How to build a ROS CI Pipeline using AWS Robomaker and CodePipeline?\"\/><\/figure>\n\n\n\n<p>Expand the left navigation pane and click on Development environments.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh4.googleusercontent.com\/Ep4BFx_F2AQiLCEOCxw2wKg3EXzKMcyWueWYHNmyai28gdHiVtNWKfQb2RCTk4hFuloJz8IcF17c3pxPqNzRmu6hMLTNmmbXTBWl7yCHMSnt24QjehGMDIehHCX7QUVdm6Hhm0ab\" alt=\"\"\/><\/figure>\n\n\n\n<p>On the homepage of the development environment, click on Create development environment.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh3.googleusercontent.com\/qLNGEsEh07cFbOKngbzPVp9eWzFQgxY8O5bgvpE4YmNos85caei3yDRIzqYafZdlKydtNAap5iMdvd9mNZERDKYS-fC63GGFZ91In1NgW04uzkHIuWt2KPHNtXuLJY-oxzpYDGDL\" alt=\"How to build a ROS CI Pipeline using AWS Robomaker and CodePipeline?\"\/><\/figure>\n\n\n\n<p>You need to fill in the details to create a new development environment.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh6.googleusercontent.com\/RfHUnkOFftXxmwQja8XRmTyc00CYyXtqXK8dVaZW63RvqaiZ3v7ArrDGyM60VHjVIqHmzxxs30f_z0BE14i7YAeESEjfvbwzzLkM_JF3xe0Q-ScKOmCDiJiADB4cIIUY_N3tlj_j\" alt=\"\"\/><\/figure>\n\n\n\n<p>Enter a name for the environment and select the details as shown in the image below.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh5.googleusercontent.com\/xHmfaZa3MBcbscqKAPZcL_kfEqsIr0ro7NfZeEE8luyNcZvVbNL9QetsKynyN7mNBSDtancBMMGRF39oJ66ORPX_73RtQwJxpe1qfzeA0hJZpAiIClbI7nNc5a-l6RReknIH6qCu\" alt=\"How to build a ROS CI Pipeline using AWS Robomaker and CodePipeline?\"\/><\/figure>\n\n\n\n<p>Scroll to the bottom and click on Create.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh5.googleusercontent.com\/ZeLvUGOosbT3SJJmJ-hWkAQAYwJMHnCRz_MH-nOu1Q5sm8WGsfbVRFXOUedcvX5QqzLsiDjAPSFaHq_VB54Ibmpgju965h6xwu9JywBaOhIsY46eTmx60qNvx6c4GaIgn6r4FWwS\" alt=\"How to build a ROS CI Pipeline using AWS Robomaker and CodePipeline?\"\/><\/figure>\n\n\n\n<p>The environment creation might take some time to be configured.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh4.googleusercontent.com\/MvKtmewRNFvpkMmzKURnjqGeqcxZI_MqHy-uU7DlfGfwRD3cEdHeOCGznpOm9cBVeWqvKKHnbwt1ZVOWpXoInj3IqkvnwbQ0Ye6ut6b6DxcEvM23kG1ZBQj0CiC8STxEHysvGIwJ\" alt=\"\"\/><\/figure>\n\n\n\n<p>Once done, you will be navigated to the home page on the console.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh3.googleusercontent.com\/5FGX6jBYN7bVFAT_vHRAJMy7T0vADVCI2ycbmDO8ZgY9TqRzJLll-sTeymIwhgdkOpBtoSIWeoxbb4A5PGZOREn63aIAHjbfHSLWo99ZufOr2gNEqCdTdY7QMHnTMEeDk1ifhjOK\" alt=\"How to build a ROS CI Pipeline using AWS Robomaker and CodePipeline?\"\/><\/figure>\n\n\n\n<p class=\"has-text-align-justify\">Use git clone <a href=\"https:\/\/github.com\/workfall\/aws-robomaker.git\">https:\/\/github.com\/workfall\/aws-robomaker.git<\/a> to clone the repository for this walkthrough.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh6.googleusercontent.com\/dgTJQfq0K4vimmJ8aNg5lK_LJdBjXRyE9M5pHdMf2nGhksVbfwODb-2XfCz2DYO8S4zjEuO94auW7viwwid97UtGS7aSGMS1aRV0e0jj3j_0wdZrh7dRPEIZpEieGLfeFu7o6jE4\" alt=\"\"\/><\/figure>\n\n\n\n<p>Navigate to the project directory of the cloned application using:&nbsp;<\/p>\n\n\n\n<p><code>cd aws-robomaker-sample-application-cloudwatch\/<\/code><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh5.googleusercontent.com\/MqkTCPywNIEi51vN3wROS5sx4_ma3RTv69i9x_kEG-1QowvruUhdUuLVvGb1W1rpxAt0q_rOiXIG_0OmhmzE8JZIDj81OWwkBnm_kfi14Im8UlNTuv9WK_2yA4_eX7v_4YdVr2vY\" alt=\"How to build a ROS CI Pipeline using AWS Robomaker and CodePipeline?\"\/><\/figure>\n\n\n\n<p>Now, use:&nbsp;<\/p>\n\n\n\n<p><code>git checkout -b aws-robomaker<\/code><\/p>\n\n\n\n<p>To create a new branch.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh6.googleusercontent.com\/8bvsRHjV-2mLvPXeg8SCpjAyCy0AMDMN7glgo1WPDvj8BnKVuwAdz2v-1wle0NYj1kL_xXPl4V8NAqZgDN2h4YcQk2ech9FCgR_s2_d1msIjtWHYNHase07FbJ7QvczBtaW538CZ\" alt=\"\"\/><\/figure>\n\n\n\n<p class=\"has-text-align-justify\">The test node below monitors the status of the navigations and can be configured to assert success or failure in one or more navigations as well as accommodate short and long lived tests. The Gazebo world is parameterized in the launch file allowing us to run the test in many different worlds. In this example, we\u2019ll run our tests in the AWS RoboMaker Small House World and the AWS RoboMaker Bookstore World. Finally, it includes two utility methods that will cancel the running RoboMaker simulation job as well as tag it.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh5.googleusercontent.com\/MQDgGWXR7Wd6xDEJ0J915NYYwyzW7Cf4FDDgBjDVf7Y-ZvzN04SuHZA8WivR0bub9kJFPdT-muZky1oGUWGCLEoYiY6_8lXFt7LuRdzbpMD8E6LLUHxs0ZLdvTKOx-nsMEwxvUJz\" alt=\"How to build a ROS CI Pipeline using AWS Robomaker and CodePipeline?\"\/><\/figure>\n\n\n\n<p>In the Launch folder, you will find all the launch files for your application.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh3.googleusercontent.com\/z6Q8aAGpF1fStTb8W6Je56-peQJC1asKM7EJBlcmX9Q6hun9BL5AUXsZEiO56y90GKbNmwgQ6mRUqBLMvTyChEHQ_N9yNGbIPyOvF-X9em-3cFu2ZDAyjy4P1hhN_s_uauQLDSmK\" alt=\"\"\/><\/figure>\n\n\n\n<p class=\"has-text-align-justify\">In this case, we are using multi-layered launch files to run the simulation test. The highest order launch file is worlds.launch. Here, we use the SIMULATION_WORLD environment variable to include the correct launch file for the world defined in this variable.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh4.googleusercontent.com\/6U42_jcGsB32tpLofeWANiEyzgePEp7_TPlpVm_oFattMA1-W4ip3dkpqknb8DyEpGlxV0q8xIO2v3d3P_gJkJO7qDRGn95FBtmI2OWbN0s6-F2R5U0oNYvnfi_g-XJEMGcnm2kX\" alt=\"How to build a ROS CI Pipeline using AWS Robomaker and CodePipeline?\"\/><\/figure>\n\n\n\n<p class=\"has-text-align-justify\">For example, if the environment variable is set as a bookstore, then it will include the launch file below. The test node will be included in this second launch file.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh6.googleusercontent.com\/VxyylAJkiM4JYEPVNwLJbi6IOLVbpf8qKy8C7BEefjMQBtpDOmgXB-l8ZEPPrp8H0IZuL4K8LvTXHFZkyxUj62agDHI5-GQcnqy7m8I5ABX0h0BqvZBsd2zZJULKy_n-vTeihARz\" alt=\"How to build a ROS CI Pipeline using AWS Robomaker and CodePipeline?\"\/><\/figure>\n\n\n\n<p class=\"has-text-align-justify\">First, we will create a JSON document to define the scenarios that will be launched in AWS RoboMaker Simulation. We will use this document in our CI pipeline to create an array of simulation job requests.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh5.googleusercontent.com\/-HI_Sq_KVvtimdw5maJtfCkN7AVdBg-Omy2nfYnDTj0FihKrC-NwW_g6GcU1Us3Hnb3Vk7sV8T4r1_ElaV_xdpoAaGraSRzgyHfAeDYQGjx-93lAK-nNnRoEIziETcF0Q_1Oun0y\" alt=\"\"\/><\/figure>\n\n\n\n<p>Right click on the project folder and click on New file.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh4.googleusercontent.com\/Lkq9e2xvG9e-hEgOB-Ens38KHifF-rvH-9ZVtDXztK5mE-4TpTz6e8k9zkVn64TjnRwioiwTHPo_K8tgB-WHj7nfExOXXSf0Zd201qvFxw1d61CyXSve_X91kQ_KvWcUpuJqjrQ7\" alt=\"How to build a ROS CI Pipeline using AWS Robomaker and CodePipeline?\"\/><\/figure>\n\n\n\n<p>Enter the name of the file as \u2018scenarios.json\u2019 and save the file.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh3.googleusercontent.com\/XqC2DHPGRVXehNT2Bb4hMy0gZAUKGV_rWI3hG79G55nVeysESsbuQYNQMfAqNan3xgIfsuUadreF_BjbYf5Eh2IAVGAlvFh5A7Db1REbiYvvKA4lcw62C6sp0T3dWMKw__ymAu5p\" alt=\"\"\/><\/figure>\n\n\n\n<p>Add the below snippets in the scenarios.json file that you created above.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh4.googleusercontent.com\/H_TYApErDq3cVJkiYBQ_uE-ncTCtSPbJCmvmy6YzbicnL7lsXR067cJh1-ln0Oy9M7COFvMJxh4vA-9REcwzVGNGh4-HUi3A5qASbUw3groAXaohDwNjb2nQOMU_PhwBJnTFtgm-\" alt=\"How to build a ROS CI Pipeline using AWS Robomaker and CodePipeline?\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh6.googleusercontent.com\/b0kO7rPX8VtSxjO4E5KSXa3GXOLzJMNiB2qpyAYgMXDwpLkqVpUiD71HBh_MVy6xkZFRJeedUhR9d9-bEDZtfmCH7L3tE4Ll_ViDy8NoBu6B7gcd_rozPS1ak_YPhmq9BzNGZk5i\" alt=\"\"\/><\/figure>\n\n\n\n<p>Make sure you save the file once the changes are configured.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh4.googleusercontent.com\/obA8yx3bso98hwoi3_zr4-T852ocYGdK8k8FvAvbjTOt7HWH2rTNiBJltH_lJi7Mjsjym5_yM2ZsCM_-0vgK5m-G7gLEbxhE4fzH5BINfuTU1Gzkc0EmuJ8510DiofAeI29QHgxm\" alt=\"How to build a ROS CI Pipeline using AWS Robomaker and CodePipeline?\"\/><\/figure>\n\n\n\n<p>Now, in the terminal, use the command:<\/p>\n\n\n\n<p><code>git clone https:\/\/github.com\/aws-samples\/aws-robomaker-simulation-launcher<\/code><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh3.googleusercontent.com\/c7vK7JMMNRh7qiHO1IfEXlsGvSPS41WHXT4TIxlus5vRFlCX16qT1Hd7lP0Zi_idOlz35BKYDwrKM6JMJINyzsiZrVqGuenqSwTT6Z50HWdPPJu3rPS0ndX2Uw_X7AmfgTzx_pLW\" alt=\"\"\/><\/figure>\n\n\n\n<p>You will see the cloned folder in the folder structure.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh3.googleusercontent.com\/VboRJ0cnuNpKVS8LYTdGsY3X5ZvSKgV-aZSKyyH_kuEghWXnXHzJWNZkHskcuMhF66NAOEFab3qgCZj5wbTssBwhw-IhVZpIonjJvXE3ouIQE3LM_0rPHVF9XwwjD0N87lEGrdCD\" alt=\"How to build a ROS CI Pipeline using AWS Robomaker and CodePipeline?\"\/><\/figure>\n\n\n\n<p>Navigate into the newly cloned directory using the command:<\/p>\n\n\n\n<p><code>cd aws-robomaker-simulation-launcher<\/code><\/p>\n\n\n\n<p>Then run:<\/p>\n\n\n\n<p><code>sam build --use-container -m .\/requirements.txt<\/code><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh6.googleusercontent.com\/9ojNwPSCzUwKo9kgJsxhddER15eePb6dDGvhhqfcJ32WJQvrgzWrjWiM_3mtmEGOj8_biWs1WQjT2G_491KyfPbytzzWnyniku9dDWFttyTl47avA3BTY0GVjGpaB9laHW7kVYRM\" alt=\"How to build a ROS CI Pipeline using AWS Robomaker and CodePipeline?\"\/><\/figure>\n\n\n\n<p>If it gives you an error as shown in the image above, run the command:<\/p>\n\n\n\n<p><code>sh -c \"$(curl -fsSL https:\/\/raw.githubusercontent.com\/Linuxbrew\/install\/master\/install.sh)\"<\/code><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh4.googleusercontent.com\/-gBOxRfVLDBvS1AO4uzcaAtD8G-zHfxuHQgyAeM74iuVmMGCt8krHuNP-Vr-KHGit_wwG0Tg_i0ibO5SlW04x4RysTP1cpayqT_tqjwOf7l5LIRpar1Gd7r4MnNw7mE68r2zX4pZ\" alt=\"How to build a ROS CI Pipeline using AWS Robomaker and CodePipeline?\"\/><\/figure>\n\n\n\n<p>On success, you will see the message as shown in the image below.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh3.googleusercontent.com\/uXiWsc02_UqvpZbLSFhFgmdESI1hnGa0qBzDilkkn2QRenIKmPHlfesY2d_pgm395kwbSparExILnj5ufLdKDMuB-ujO_dAkBDCRwmaFDLMgcj_L_i8hp1GbFbCwjZEMutwHTj_A\" alt=\"How to build a ROS CI Pipeline using AWS Robomaker and CodePipeline?\"\/><\/figure>\n\n\n\n<p>Now, copy paste these 4 commands in the terminal:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\ntest -d ~\/.linuxbrew &amp;&amp; eval $(~\/.linuxbrew\/bin\/brew shellenv)\ntest -d \/home\/linuxbrew\/.linuxbrew &amp;&amp; eval $(\/home\/linuxbrew\/.linuxbrew\/bin\/brew shellenv)\ntest -r ~\/.bash_profile &amp;&amp; echo &quot;eval \\$($(brew --prefix)\/bin\/brew shellenv)&quot; &gt;&gt;~\/.bash_profile\necho &quot;eval \\$($(brew --prefix)\/bin\/brew shellenv)&quot; &gt;&gt;~\/.profile\n<\/pre><\/div>\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh6.googleusercontent.com\/2RgdVG8DESGoxOZ7UwaAEhy_VXBKntkcZIcEyA8MK-QROuyrHxUJ9kAp1vY_siD7g59Mp7G7koHpFnIn0ffioHZDzdV5bQUYKC5TBu_UwpXxZeeFz4TeMEwjFjKcNx2G5VuM-9SX\" alt=\"\"\/><\/figure>\n\n\n\n<p class=\"has-text-align-justify\">Execute, npm uninstall -g aws-sam-local to uninstall and then we will install the latest version.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh4.googleusercontent.com\/_ofistCwn3vIW-3cDDfwdRQVxuJFmpMIf-SkPvzGa0nlYXkWk6AIF44CPWfQSkl6AUkUsG06__PzDSsyAdh5Y-YmVWlyqvKU9CManMj5mSWhWlPgZbaldyXuckmsWcY8n2CpWMmP\" alt=\"How to build a ROS CI Pipeline using AWS Robomaker and CodePipeline?\"\/><\/figure>\n\n\n\n<p>Run the command:<\/p>\n\n\n\n<p><code>pip uninstall aws-sam-cli&nbsp;<\/code><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh3.googleusercontent.com\/YjFtPeL7eIFgZ-V_TlydI1S81duDDxirEQ5nBM9CnvDxWzgw8FtviaGKzYjuex0wAUs0I2acdpjqXQts7RI3g42iDIEJH2gDUn6j4FsGwGF4IUM_74ou1jTcEHiOg7NI7pI0NreD\" alt=\"How to build a ROS CI Pipeline using AWS Robomaker and CodePipeline?\"\/><\/figure>\n\n\n\n<p>Finally, execute the command:<\/p>\n\n\n\n<p><code>rm -rf $(which sam)<\/code><\/p>\n\n\n\n<p>In the terminal.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh6.googleusercontent.com\/oDe9x0SbosbQdy7Ai5wdO_YLd3GmZKudTMNwZeYyws16dcy4A94nza8oslfa67ylBjeDhaiPgHIWqgRzIYP3O0UiloNH1uIUeh07FF2xw-MSOuj4k4qAKT36W6UJU73Jt30Wgczb\" alt=\"How to build a ROS CI Pipeline using AWS Robomaker and CodePipeline?\"\/><\/figure>\n\n\n\n<p>Now, to install brew, run the command:<\/p>\n\n\n\n<p><code>brew tap aws\/tap<\/code><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh5.googleusercontent.com\/_sLMpMd_iZBR0Y8lZ94dWuLGZHO8LSO-xgCn-GToEaBahNQcDEYmlCyShE8Ek1pYOs3s41lIBNxvQjx0ATWArQv1VTtaqka0iJ1CzBj9731mn6pne4jrajhxNs5xzW6M5KWcCivl\" alt=\"How to build a ROS CI Pipeline using AWS Robomaker and CodePipeline?\"\/><\/figure>\n\n\n\n<p>Install the latest version of sam cli using the command:&nbsp;<\/p>\n\n\n\n<p><code>brew install aws-sam-cli<\/code><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh5.googleusercontent.com\/qG9Qxx-wctuuECfVh_DbhaOBOQVJOu0wGeK-Xla7JvuQXO1qvy30Tzz88Q-UtTSvmcpWEMSjHX0bI638M0GEyCgMH2aSDu2i82aUtTwMQ_ZFU6lYa3nLcN87eMhwSn9xTYJh6fIc\" alt=\"How to build a ROS CI Pipeline using AWS Robomaker and CodePipeline?\"\/><\/figure>\n\n\n\n<p>Then execute the command:<\/p>\n\n\n\n<p><code>sam build --use-container -m .\/requirements.txt<\/code><\/p>\n\n\n\n<p class=\"has-text-align-justify\">In the terminal. Once done, navigate to the S3 dashboard. Click on Create bucket.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh5.googleusercontent.com\/-g8uhASlpBJKk74jN5YdSTffsu2NNxWUtH7MGmluF0kS1KJPs5CCPg2D_crPlM7jSj3gOhZPBZBUDF6qQbPeJCyV0hZsKOf10MoAXoO_CLQsbCQgH-pSVFEBXiBCTXs1CTuDRrUY\" alt=\"\"\/><\/figure>\n\n\n\n<p>Enter a name for the bucket.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh4.googleusercontent.com\/yWM6Zg8wjMTFekTO7smyuOE3s_tHMuxp0zPD-UzcFZmpTEx_ywmhDxr2hVsU7EdO79rYMKt5UtMlqEVvo3i2jchD52wGVTHdF2UwmKn-EINjoy5ubbA0yQsYTeAUfEmmUTOW8ZeY\" alt=\"\"\/><\/figure>\n\n\n\n<p>Scroll to the bottom and click on Create Bucket.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh3.googleusercontent.com\/vrb906HJIzH7B3vPQl_09pgWHnP1PVE2n36bcE50fLR_Xi74pJzvWWz34w9_nR1cASebpw3bXSSYuTDCOnT5w_qP37dC3P9K71nhZMQDkrAIddwL5vy2TvCzusGFQsh2cdH7iPEh\" alt=\"How to build a ROS CI Pipeline using AWS Robomaker and CodePipeline?\"\/><\/figure>\n\n\n\n<p>Now, open the newly created bucket. Click on the Properties tab.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh6.googleusercontent.com\/G5TUmPneU7owmobg0SxcdbAsi27n-B85zPrjJBWq7HWQzyEwTkXDySnFeb4-WvGVeVlM9pr1i36_alt0UAwDtlLedAkrJZSmcZrao_gJzQuwCvqZrD6l19ATNGxMZOlr2M-7_gkG\" alt=\"How to build a ROS CI Pipeline using AWS Robomaker and CodePipeline?\"\/><\/figure>\n\n\n\n<p>Copy the arn for the newly created bucket.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh5.googleusercontent.com\/6BoiUAIKo4t56w98fR1NALvyZdRG5SGS__IDYubancc9ScSjyHTDH-GpsEhNIIRcSMawH1zVTy1HUZ_5Cew4ozIGKnhpZI0D1o3afW2dFdiSmbm_IGYfXMc5GzJh-DuQq4Ql7GFU\" alt=\"How to build a ROS CI Pipeline using AWS Robomaker and CodePipeline?\"\/><\/figure>\n\n\n\n<p class=\"has-text-align-justify\">Now, navigate to the development environment and run the below commands. Make sure to replace <code>&lt;YOUR_S3_BUCKET&gt;<\/code> with the arn that you copied above.<\/p>\n\n\n\n<p><code>sam package --output-template-file package.yml --s3-bucket &lt;YOUR_S3_BUCKET&gt;<\/code><\/p>\n\n\n\n<p><code>sam deploy --template-file package.yml --stack-name cicd --capabilities CAPABILITY_NAMED_IAM --s3-bucket &lt;YOUR_S3_BUCKET&gt;<\/code><\/p>\n\n\n\n<p class=\"has-text-align-justify\">Once done, create a new file in the project directory with the name buildspec.yml and paste the below code in the file.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh4.googleusercontent.com\/XwwZl_M0KHbXyU3T1vddsXQse9BY0uA2cnr-CdgkQT7RDPS3RqRu6ey9xQqAle9ZginwodCjNHV9MVTdR1NbQSbl2mqf8jeyx4RyCGxBcQB5QkeXdRq1siiMIg7n3n4iK6dWi0Es\" alt=\"How to build a ROS CI Pipeline using AWS Robomaker and CodePipeline?\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh6.googleusercontent.com\/tEruNEybNvb2333k4a5rpbQ84K7P-_ldXmBgAguyAb1FB84fEacaV2ZObeV-GzNJ1-wZULfF9IHGEKM1lo2KJBhY9V4f0Gk6twSaVcyut4rxzmbnP_dVArixAQ3P_c7ubSrDUEVb\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh4.googleusercontent.com\/74Ic0tqDANZG4St3lrSqIaL2n7Ny-goP9esZjKikzOxVWILjAXWPx9F29UM6H11rqDTC8K74o1QIk5fyaFkdLz1Lk8h_8CrHa88B04hYwHwkM8y85LlkX8Fj0tTZeXoSzVhHRNX1\" alt=\"\"\/><\/figure>\n\n\n\n<p>Now, navigate to the CodePipeline dashboard to create a new pipeline.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh3.googleusercontent.com\/NCt7IljdXpssHlGJH-bKyYEwM4Z_fR5qlZU94iYG7GSq62pdTH4s21yjnp_guzawgPIvfPdA4eOSD-Aqvj921q2gN5Lot0tG-PLf3fusvuKeCGGP-8Gf8wFLbNTZyxFQXEC8Cq1o\" alt=\"How to build a ROS CI Pipeline using AWS Robomaker and CodePipeline?\"\/><\/figure>\n\n\n\n<p>Click on Create pipeline.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh4.googleusercontent.com\/cZC7hDCRMD-IWVMlSfxZafU-53Ynpwdr5dKvybIpo1A2lS-dFd8fHW3kJpBwwn5Dc4boiv0FI56snIpqM2KS86B4Xpt7erVwVE9aMNwKI63OjdYuma18cJJgKNZUkWlugUkfFIru\" alt=\"\"\/><\/figure>\n\n\n\n<p class=\"has-text-align-justify\">Set a name for the pipeline, select the Create a New Service Role radio button and click the checkbox that allows the role to be used with the pipeline. Keep the Advanced Settings as default. Press Next.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh6.googleusercontent.com\/V_tpf6iXbR4pWujLzmtV4H4NLHkVmSF3WmjuGIwrYo4PUWWhycT--S90QCXj0sHQ-U7S66MZSpf_cFHY19V7qS_oLu3kJ3ruekTNCzlU00PlGwQfsWWJak9SIICrFWExEzhLiojq\" alt=\"\"\/><\/figure>\n\n\n\n<p class=\"has-text-align-justify\">In the next step, click on Connect to connect to your GitHub account. Enter a connection name and click on Connect to GitHub.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh4.googleusercontent.com\/2WtagBNIjeQTEZ0tK_erFe_wwbScVS7jhs_7QVc--fiB3jnXQ0Bf1kAaHo55RXbqROyKx-QJ2CJ_OdQ3EoYBI1EEJWR-JJ9ukaGk6315zoCIzfDFkil6eeaOqMyfJYCvKCymzrHz\" alt=\"\"\/><\/figure>\n\n\n\n<p>Click on Install a new app to install and then click on Connect.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh6.googleusercontent.com\/UBx-boBl8QsEvkwruZl4iH4u6UqbWddpE-jh6hd4T1-jSNCK9AeONP2W5H86f3oHoocr9l6qAFr9kY6eg-gfpnm4yVJmXBDJCxZLIcRXigUSM41zpxci2evW4UFxBLm99Ncc5YYT\" alt=\"How to build a ROS CI Pipeline using AWS Robomaker and CodePipeline?\"\/><\/figure>\n\n\n\n<p>Select the source as GitHub(version 1).<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh6.googleusercontent.com\/jQcZAgCTIwBa1gof195FqxyUg2tDCESOqDIS6_FHFseYEgWD9ok4FEGANY447L9RN-xGWI6k0ISeRW9BYr8Nq8TXv3xEbhrdfwmEXk96wfP4vOD9a9L_2CuHUcthsIc80YLyBC4u\" alt=\"\"\/><\/figure>\n\n\n\n<p class=\"has-text-align-justify\">Select the repository and the branch that contains the code files. Select the template as GitHub webhooks and click on Next.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh5.googleusercontent.com\/rYK2wWWn11DsOjWfNK7t50bVtGCb9y7iXGseHDpcyIa7U7I8i7U-Ph1YLqdbQvP-A7DM8IdDYcYqRqs5QXI6PrKDXHE9p8KUp4HbutoA_4g9r8iw4izatWJ15vBNFlTlpxBAKEgx\" alt=\"\"\/><\/figure>\n\n\n\n<p class=\"has-text-align-justify\">Select AWS CodeBuild as the build provider. Select the region that you are using and press Create project. A pop-up will open with CodeBuild configuration settings.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh3.googleusercontent.com\/kM38T8Bbr3HdtmSyD5vWGnEaUzLfTZQ9aXWSQWjrBox5EGOk6-1OgSZ3qqqeamV8NiTrjw6PZOjEnonbKZXhYlCfK13ye4GWFu6BJ-ockuuO4X8c5j__Ffug743wvmw3fcYu3Tqm\" alt=\"\"\/><\/figure>\n\n\n\n<p>In the pop-up, type in a name for the build project.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh5.googleusercontent.com\/FlDAd6OoWgQOh8rjk5TfmVxsmcmpkxzQ1cyPhpW97LvFKZ0UuGr0IYh1fuoyIAhOSduJM3jkrNkPXoOYkC37ZZimt1zbyC5r4CiGnQU5lFWhpR0uG27Zmk9ANq0fBYvZc6gCERie\" alt=\"How to build a ROS CI Pipeline using AWS Robomaker and CodePipeline?\"\/><\/figure>\n\n\n\n<p class=\"has-text-align-justify\">In the Environment section, select Custom Image. Set the Environment type to Linux and the Image Registry to Other Registry. Type in docker.io\/ros:kinetic in the external registry URL. In this case, we are using ROS Kinetic.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh6.googleusercontent.com\/z4gOZB7-GauAEonFmjal1g60m0lsgqsnDWbVBDsPLhPlCNZbQju2djkNwq9csOT2aQxT3-tnlvOUK-K8neq5S7mYOiYNei1-YPI0L4C8h2i0v5-kCEU5HbI1ADTNnwYr-4MUHoPs\" alt=\"\"\/><\/figure>\n\n\n\n<p class=\"has-text-align-justify\">Press Continue to CodePipeline. This will close the pop-up and inject the CodeBuild project into the AWS CodePipeline wizard. Press Next.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh6.googleusercontent.com\/4242w1VzMY_jj04uNaZ9YsspaqxBytU_fFYGorcDMSk0_HSi4WZxLdWylcw69mhN7Lr06ueJkIIWOJeHhGOL3ZyFClvHH7Ei9-VLxv9nKG2kuX2P9lzAlrZwDCmHHT9G4fecCPJe\" alt=\"\"\/><\/figure>\n\n\n\n<p class=\"has-text-align-justify\">Press Skip the deploy stage. Then Skip.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh5.googleusercontent.com\/XNMIpB7fRSDMXpEoWFst502aSLC9hzoOkJuZlDGKE7YODNQ7laV0r8gBdMPKAuV8kvqWWob_A3Q91n-FWmKPrVpclL0vffhwwPt6DIOB3wta0sAkBMg-gUGNoh41oSFdpU53_VtH\" alt=\"How to build a ROS CI Pipeline using AWS Robomaker and CodePipeline?\"\/><\/figure>\n\n\n\n<p>Review the CodePipeline configuration and press Create Pipeline.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh6.googleusercontent.com\/Y-dxp0xZqO3_-aZpbozF1a-X7ZvrSxMzDgpP1iEp24xD0zlYfUQLbvROzce1CfKtJ-TdzYnDHqXv6WTU3uSNVBRqJQDvmjegGfXZyOMMWbzyJzG51BiPFaOzSRPtEx_CfoyifYgq\" alt=\"\"\/><\/figure>\n\n\n\n<p>Return to the AWS CodePipeline console and open your newly created pipeline.<\/p>\n\n\n\n<p>Press Edit in the CodePipeline console page.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh5.googleusercontent.com\/KuOyNfONmy05CMaBGmVWmagL1-lh-fTF6ukuP9fgNAxgEAlxwFZUjLLRAd4oze2xEBmbqiv8Qrf9VrpLcO3K2o8tofZqXFmLYafhkTGnb1369pBx1LVXesOTRpCuImqTGrH6pzHQ\" alt=\"How to build a ROS CI Pipeline using AWS Robomaker and CodePipeline?\"\/><\/figure>\n\n\n\n<p>After the Build Stage, press + Add stage.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh5.googleusercontent.com\/LvDWXBmHpd8EpuXjSDnVOrpcBmpWNpcX93VzykADAG4H9OLcgxN5Y0D7LVvQk9-_XClhm3b3T_tPnPnmC3WphWnWF5FhOwDiZd16jh3MTa-kJUlOzfo01ZZ3bueNrSo_LV3XvGVZ\" alt=\"\"\/><\/figure>\n\n\n\n<p>Type Simulate as the name for the new stage.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh6.googleusercontent.com\/jb3i0EM85gXu8lzOlTt9liPvb6KjZVQ_1CXcbhOU_YhoMvMdA_iuhiLJGzfOpxRMtCGadSrpOS8otp9D1AKtcxaTl1Kl979IqdLzc9qQQ__EhjMFj_8qe9EpYexZYfoWDKVpZZng\" alt=\"\"\/><\/figure>\n\n\n\n<p class=\"has-text-align-justify\">Press Add action group. Type in SimulationTrigger as the Action Name. In the action provider dropdown, select AWS Lambda. In the input provider dropdown, select Source Artifact. Select the Lambda function and then scroll down and click Done.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh4.googleusercontent.com\/0U6VUzsBnVR3ZFxwwP1r_kWIMjlhyddKZCE7ddQoPKLSHjYXPlzKE3eumY3YtugNqP_YsNbFBTeHTdfyAJev5T_OCemeg5-QLgy5JQxWoC5DCJeOGRKRt2ETBLCmouNYc5boDgOm\" alt=\"\"\/><\/figure>\n\n\n\n<p>Verify the changes as shown in the image below. Scroll up to the top.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh4.googleusercontent.com\/cmon3_m6z1Ts2e0nGQqkZkS6C9ND4Lb9GyHwjLrw2XAoNrUd8WrgUT-meLVq6eoSmI65Z-QP2L6CYzycvKMO6gRraUXcsT3EvWpfoFjD0SPK4Fu_lSQucPVPisR_Y-O6KbV25xZ5\" alt=\"\"\/><\/figure>\n\n\n\n<p>Then, press Save on the top right corner. Click on Save.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh6.googleusercontent.com\/Li2jU0LzHaKAD2iMWOvYMXUaXU5HJXJkxUOGwmlnlHAPOFU3EH3Ei-yD6MY9yehZIQBbyq-7dHGK69kpd-K4c8sq5gOYTeKKr-I_dnm_NKxydxocmQqUfrNGnRndEHmdZ02dR1U6\" alt=\"\"\/><\/figure>\n\n\n\n<p>You now have a fully configured ROS CI Pipeline.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/lh6.googleusercontent.com\/Ns7Ik2y4vYTKq21Hd8qPt9Pte-ZnKdt8mC6g-2zAieN6O7WOjNoqoGkGfrKs6gAQy-MWzkQBLTgqpz9Bp_0uRov0iKi3rKEZGgTCMZE_RBidJ7BNKBtvIm9_xs5CL6Za9vgvIia6\" alt=\"How to build a ROS CI Pipeline using AWS Robomaker and CodePipeline?\"\/><\/figure>\n\n\n\n<h2><strong>Conclusion:<\/strong><\/h2>\n\n\n\n<p class=\"has-text-align-justify\">In this blog, we saw how we can make use of the AWS Robomaker service to create a ROS CI pipeline. We had a look at how we can create a new development environment. Cloning the code files, we then executed a set of commands. After the command execution, we created multiple scenarios in a JSON file, created a new S3 bucket, configured the simulation launcher, and created a builspec.yml file for the configuration. Finally, we created a CodePipeline and added a simulation trigger as an action group to link AWS Robomaker with CodePipeline. We will discuss more use cases of AWS Robomaker and its integration with other services in our upcoming blogs. Stay tuned to keep getting all updates about our upcoming new blogs on AWS and relevant technologies.<\/p>\n\n\n\n<p>Meanwhile \u2026<\/p>\n\n\n\n<p><strong>Keep Exploring -&gt; Keep Learning -&gt; Keep Mastering<\/strong><\/p>\n\n\n\n<p class=\"has-text-align-justify\">This blog is part of our effort towards building a knowledgeable and kick-ass tech community. At <a href=\"https:\/\/www.workfall.com\/\">Workfall<\/a>, we strive to provide the best tech and pay opportunities to AWS-certified talents. If you\u2019re looking to work with global clients, build kick-ass products while making big bucks doing so, give it a shot at<a href=\"https:\/\/www.workfall.com\/partner\/\"> workfall.com\/partner<\/a> today.<\/p>\n","protected":false},"excerpt":{"rendered":"<p><span class=\"rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Reading Time: <\/span> <span class=\"rt-time\">10<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span> AWS RoboMaker is the most complete cloud solution for robotic developers to simulate, test, and securely deploy robotic applications at scale. RoboMaker&#8217;s managed ROS and Gazebo software stacks free up engineering resources and enable you to start building quickly. In this blog, we will navigate through the AWS Robomaker service and see how we can [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":199,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"spay_email":""},"categories":[2],"tags":[3,31,29,28,32,30,6],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How to build a ROS CI Pipeline using AWS Robomaker and CodePipeline? - The Workfall Blog<\/title>\n<meta name=\"description\" content=\"AWS RoboMaker is the most complete cloud solution for robotic developers to simulate, test, &amp; securely deploy robotic applications at scale.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-ros-ci-pipeline-using-aws-robomaker-and-codepipeline\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to build a ROS CI Pipeline using AWS Robomaker and CodePipeline? - The Workfall Blog\" \/>\n<meta property=\"og:description\" content=\"AWS RoboMaker is the most complete cloud solution for robotic developers to simulate, test, &amp; securely deploy robotic applications at scale.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-ros-ci-pipeline-using-aws-robomaker-and-codepipeline\/\" \/>\n<meta property=\"og:site_name\" content=\"The Workfall Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/facebook.com\/workfall\" \/>\n<meta property=\"article:published_time\" content=\"2021-10-27T08:19:25+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-22T08:11:41+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/learning.workfall.com\/learning\/blog\/wp-content\/uploads\/2021\/10\/RoboMaker-1200-x-628-px.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@workfall\" \/>\n<meta name=\"twitter:site\" content=\"@workfall\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Workfall\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"20 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https:\/\/learning.workfall.com\/learning\/blog\/#organization\",\"name\":\"Workfall - Hire #Kickass Coders On Demand\",\"url\":\"https:\/\/learning.workfall.com\/learning\/blog\/\",\"sameAs\":[\"https:\/\/www.instagram.com\/workfall\/\",\"https:\/\/www.linkedin.com\/company\/workfall\/\",\"https:\/\/facebook.com\/workfall\",\"https:\/\/twitter.com\/workfall\"],\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/learning.workfall.com\/learning\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/i1.wp.com\/18.141.20.153\/learning\/blog\/wp-content\/uploads\/2021\/10\/cropped-WF_logo.png?fit=400%2C400\",\"contentUrl\":\"https:\/\/i1.wp.com\/18.141.20.153\/learning\/blog\/wp-content\/uploads\/2021\/10\/cropped-WF_logo.png?fit=400%2C400\",\"width\":400,\"height\":400,\"caption\":\"Workfall - Hire #Kickass Coders On Demand\"},\"image\":{\"@id\":\"https:\/\/learning.workfall.com\/learning\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/learning.workfall.com\/learning\/blog\/#website\",\"url\":\"https:\/\/learning.workfall.com\/learning\/blog\/\",\"name\":\"The Workfall Blog\",\"description\":\"#Tech #Remote #Jobs\",\"publisher\":{\"@id\":\"https:\/\/learning.workfall.com\/learning\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/learning.workfall.com\/learning\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-ros-ci-pipeline-using-aws-robomaker-and-codepipeline\/#primaryimage\",\"url\":\"https:\/\/learning.workfall.com\/learning\/blog\/wp-content\/uploads\/2021\/10\/RoboMaker-1200-x-628-px.png\",\"contentUrl\":\"https:\/\/learning.workfall.com\/learning\/blog\/wp-content\/uploads\/2021\/10\/RoboMaker-1200-x-628-px.png\",\"width\":1200,\"height\":628,\"caption\":\"AWS RoboMaker - Workfall\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-ros-ci-pipeline-using-aws-robomaker-and-codepipeline\/#webpage\",\"url\":\"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-ros-ci-pipeline-using-aws-robomaker-and-codepipeline\/\",\"name\":\"How to build a ROS CI Pipeline using AWS Robomaker and CodePipeline? - The Workfall Blog\",\"isPartOf\":{\"@id\":\"https:\/\/learning.workfall.com\/learning\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-ros-ci-pipeline-using-aws-robomaker-and-codepipeline\/#primaryimage\"},\"datePublished\":\"2021-10-27T08:19:25+00:00\",\"dateModified\":\"2025-08-22T08:11:41+00:00\",\"description\":\"AWS RoboMaker is the most complete cloud solution for robotic developers to simulate, test, & securely deploy robotic applications at scale.\",\"breadcrumb\":{\"@id\":\"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-ros-ci-pipeline-using-aws-robomaker-and-codepipeline\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-ros-ci-pipeline-using-aws-robomaker-and-codepipeline\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-ros-ci-pipeline-using-aws-robomaker-and-codepipeline\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/learning.workfall.com\/learning\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to build a ROS CI Pipeline using AWS Robomaker and CodePipeline?\"}]},{\"@type\":\"Article\",\"@id\":\"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-ros-ci-pipeline-using-aws-robomaker-and-codepipeline\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-ros-ci-pipeline-using-aws-robomaker-and-codepipeline\/#webpage\"},\"author\":{\"@id\":\"https:\/\/learning.workfall.com\/learning\/blog\/#\/schema\/person\/cab8236044692bc5b27606b13167794a\"},\"headline\":\"How to build a ROS CI Pipeline using AWS Robomaker and CodePipeline?\",\"datePublished\":\"2021-10-27T08:19:25+00:00\",\"dateModified\":\"2025-08-22T08:11:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-ros-ci-pipeline-using-aws-robomaker-and-codepipeline\/#webpage\"},\"wordCount\":1611,\"publisher\":{\"@id\":\"https:\/\/learning.workfall.com\/learning\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-ros-ci-pipeline-using-aws-robomaker-and-codepipeline\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/learning.workfall.com\/learning\/blog\/wp-content\/uploads\/2021\/10\/RoboMaker-1200-x-628-px.png\",\"keywords\":[\"AWS\",\"CICD\",\"codepipeline\",\"robomaker\",\"robots\",\"ROS\",\"workfall\"],\"articleSection\":[\"AWS Cloud Computing\"],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/learning.workfall.com\/learning\/blog\/#\/schema\/person\/cab8236044692bc5b27606b13167794a\",\"name\":\"Workfall\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/learning.workfall.com\/learning\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/learning.workfall.com\/learning\/blog\/wp-content\/uploads\/2023\/09\/avatar_user_1_1693914404-96x96.png\",\"contentUrl\":\"https:\/\/learning.workfall.com\/learning\/blog\/wp-content\/uploads\/2023\/09\/avatar_user_1_1693914404-96x96.png\",\"caption\":\"Workfall\"},\"sameAs\":[\"https:\/\/www.workfall.com\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to build a ROS CI Pipeline using AWS Robomaker and CodePipeline? - The Workfall Blog","description":"AWS RoboMaker is the most complete cloud solution for robotic developers to simulate, test, & securely deploy robotic applications at scale.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-ros-ci-pipeline-using-aws-robomaker-and-codepipeline\/","og_locale":"en_US","og_type":"article","og_title":"How to build a ROS CI Pipeline using AWS Robomaker and CodePipeline? - The Workfall Blog","og_description":"AWS RoboMaker is the most complete cloud solution for robotic developers to simulate, test, & securely deploy robotic applications at scale.","og_url":"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-ros-ci-pipeline-using-aws-robomaker-and-codepipeline\/","og_site_name":"The Workfall Blog","article_publisher":"https:\/\/facebook.com\/workfall","article_published_time":"2021-10-27T08:19:25+00:00","article_modified_time":"2025-08-22T08:11:41+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/learning.workfall.com\/learning\/blog\/wp-content\/uploads\/2021\/10\/RoboMaker-1200-x-628-px.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_creator":"@workfall","twitter_site":"@workfall","twitter_misc":{"Written by":"Workfall","Est. reading time":"20 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Organization","@id":"https:\/\/learning.workfall.com\/learning\/blog\/#organization","name":"Workfall - Hire #Kickass Coders On Demand","url":"https:\/\/learning.workfall.com\/learning\/blog\/","sameAs":["https:\/\/www.instagram.com\/workfall\/","https:\/\/www.linkedin.com\/company\/workfall\/","https:\/\/facebook.com\/workfall","https:\/\/twitter.com\/workfall"],"logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/learning.workfall.com\/learning\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/i1.wp.com\/18.141.20.153\/learning\/blog\/wp-content\/uploads\/2021\/10\/cropped-WF_logo.png?fit=400%2C400","contentUrl":"https:\/\/i1.wp.com\/18.141.20.153\/learning\/blog\/wp-content\/uploads\/2021\/10\/cropped-WF_logo.png?fit=400%2C400","width":400,"height":400,"caption":"Workfall - Hire #Kickass Coders On Demand"},"image":{"@id":"https:\/\/learning.workfall.com\/learning\/blog\/#\/schema\/logo\/image\/"}},{"@type":"WebSite","@id":"https:\/\/learning.workfall.com\/learning\/blog\/#website","url":"https:\/\/learning.workfall.com\/learning\/blog\/","name":"The Workfall Blog","description":"#Tech #Remote #Jobs","publisher":{"@id":"https:\/\/learning.workfall.com\/learning\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/learning.workfall.com\/learning\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-ros-ci-pipeline-using-aws-robomaker-and-codepipeline\/#primaryimage","url":"https:\/\/learning.workfall.com\/learning\/blog\/wp-content\/uploads\/2021\/10\/RoboMaker-1200-x-628-px.png","contentUrl":"https:\/\/learning.workfall.com\/learning\/blog\/wp-content\/uploads\/2021\/10\/RoboMaker-1200-x-628-px.png","width":1200,"height":628,"caption":"AWS RoboMaker - Workfall"},{"@type":"WebPage","@id":"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-ros-ci-pipeline-using-aws-robomaker-and-codepipeline\/#webpage","url":"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-ros-ci-pipeline-using-aws-robomaker-and-codepipeline\/","name":"How to build a ROS CI Pipeline using AWS Robomaker and CodePipeline? - The Workfall Blog","isPartOf":{"@id":"https:\/\/learning.workfall.com\/learning\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-ros-ci-pipeline-using-aws-robomaker-and-codepipeline\/#primaryimage"},"datePublished":"2021-10-27T08:19:25+00:00","dateModified":"2025-08-22T08:11:41+00:00","description":"AWS RoboMaker is the most complete cloud solution for robotic developers to simulate, test, & securely deploy robotic applications at scale.","breadcrumb":{"@id":"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-ros-ci-pipeline-using-aws-robomaker-and-codepipeline\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-ros-ci-pipeline-using-aws-robomaker-and-codepipeline\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-ros-ci-pipeline-using-aws-robomaker-and-codepipeline\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/learning.workfall.com\/learning\/blog\/"},{"@type":"ListItem","position":2,"name":"How to build a ROS CI Pipeline using AWS Robomaker and CodePipeline?"}]},{"@type":"Article","@id":"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-ros-ci-pipeline-using-aws-robomaker-and-codepipeline\/#article","isPartOf":{"@id":"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-ros-ci-pipeline-using-aws-robomaker-and-codepipeline\/#webpage"},"author":{"@id":"https:\/\/learning.workfall.com\/learning\/blog\/#\/schema\/person\/cab8236044692bc5b27606b13167794a"},"headline":"How to build a ROS CI Pipeline using AWS Robomaker and CodePipeline?","datePublished":"2021-10-27T08:19:25+00:00","dateModified":"2025-08-22T08:11:41+00:00","mainEntityOfPage":{"@id":"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-ros-ci-pipeline-using-aws-robomaker-and-codepipeline\/#webpage"},"wordCount":1611,"publisher":{"@id":"https:\/\/learning.workfall.com\/learning\/blog\/#organization"},"image":{"@id":"https:\/\/learning.workfall.com\/learning\/blog\/how-to-build-a-ros-ci-pipeline-using-aws-robomaker-and-codepipeline\/#primaryimage"},"thumbnailUrl":"https:\/\/learning.workfall.com\/learning\/blog\/wp-content\/uploads\/2021\/10\/RoboMaker-1200-x-628-px.png","keywords":["AWS","CICD","codepipeline","robomaker","robots","ROS","workfall"],"articleSection":["AWS Cloud Computing"],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/learning.workfall.com\/learning\/blog\/#\/schema\/person\/cab8236044692bc5b27606b13167794a","name":"Workfall","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/learning.workfall.com\/learning\/blog\/#\/schema\/person\/image\/","url":"https:\/\/learning.workfall.com\/learning\/blog\/wp-content\/uploads\/2023\/09\/avatar_user_1_1693914404-96x96.png","contentUrl":"https:\/\/learning.workfall.com\/learning\/blog\/wp-content\/uploads\/2023\/09\/avatar_user_1_1693914404-96x96.png","caption":"Workfall"},"sameAs":["https:\/\/www.workfall.com"]}]}},"jetpack_featured_media_url":"https:\/\/learning.workfall.com\/learning\/blog\/wp-content\/uploads\/2021\/10\/RoboMaker-1200-x-628-px.png","jetpack-related-posts":[{"id":639,"url":"https:\/\/learning.workfall.com\/learning\/blog\/ros-ci-pipeline-using-aws-robomaker-and-codepipelinepart-1\/","url_meta":{"origin":197,"position":0},"title":"How to build a ROS CI Pipeline using AWS RoboMaker and CodePipeline(Part 1)?","date":"November 11, 2021","format":false,"excerpt":"Robots are being used more widely in society for increasingly sophisticated functions like picking and packing, last-mile delivery, complex assembly, search and rescue, environmental monitoring, and assisted surgery. Robots are utilized for commercial logistics and consumer cleaning, distribution, and companionship in the autonomous mobile robot (AMR) and autonomous ground vehicle\u2026","rel":"","context":"In &quot;AWS Cloud Computing&quot;","img":{"alt_text":"AWS RoboMaker - Workfall","src":"https:\/\/i2.wp.com\/learning.workfall.com\/learning\/blog\/wp-content\/uploads\/2021\/11\/RoboMaker1.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":679,"url":"https:\/\/learning.workfall.com\/learning\/blog\/how-to-set-up-a-continuous-deployment-pipeline-to-deploy-versions-of-an-application-on-aws-elastic-beanstalk-using-aws-codepipeline-part-2\/","url_meta":{"origin":197,"position":1},"title":"How to set up a continuous deployment pipeline to deploy versions of an application on AWS Elastic Beanstalk using AWS CodePipeline (Part 2)?","date":"November 26, 2021","format":false,"excerpt":"AWS Elastic Beanstalk allows us to quickly deploy and manage applications without having to worry about the underlying infrastructure. One of its major benefits is that it reduces the complexity of management of the infrastructure without any restrictions thereby making it easy for developers to focus on just building the\u2026","rel":"","context":"In &quot;AWS Cloud Computing&quot;","img":{"alt_text":"Application on AWS Elastic Beanstalk","src":"https:\/\/i2.wp.com\/learning.workfall.com\/learning\/blog\/wp-content\/uploads\/2021\/11\/CoverImages_1200x628px-7.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":361,"url":"https:\/\/learning.workfall.com\/learning\/blog\/how-to-create-ci-cd-workflow-using-aws-codestar\/","url_meta":{"origin":197,"position":2},"title":"How to create CI\/CD workflow using AWS CodeStar?","date":"November 3, 2021","format":false,"excerpt":"DevOps and CI\/CD are the future of software development. AWS CodeStar makes building a full CI\/CD workflow easier and helps us to create a CI\/CD toolchain using AWS developer tools - CodeCommit, CodeBuild, and CodePipeline In this blog we will demonstrate how to create CI\/CD workflow using AWS CodeStar. Before\u2026","rel":"","context":"In &quot;AWS Cloud Computing&quot;","img":{"alt_text":"Create CI\/CD workflow using AWS CodeStar","src":"https:\/\/i2.wp.com\/learning.workfall.com\/learning\/blog\/wp-content\/uploads\/2021\/11\/CodeStar.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":675,"url":"https:\/\/learning.workfall.com\/learning\/blog\/how-to-set-up-a-continuous-deployment-pipeline-to-deploy-versions-of-an-application-on-aws-elastic-beanstalk-using-aws-codepipeline-part-1\/","url_meta":{"origin":197,"position":3},"title":"How to set up a continuous deployment pipeline to deploy versions of an application on AWS Elastic Beanstalk using AWS CodePipeline (Part 1)?","date":"November 24, 2021","format":false,"excerpt":"Do you have concerns about managing and deploying web applications? With AWS Elastic Beanstalk, you can launch your full web application in just a few minutes by simply uploading the code. Starting with capacity provisioning, load balancing, auto-scaling, and application health monitoring, this service will take care of the whole\u2026","rel":"","context":"In &quot;AWS Cloud Computing&quot;","img":{"alt_text":"AWS Elastic Beanstalk - Workfall","src":"https:\/\/i2.wp.com\/learning.workfall.com\/learning\/blog\/wp-content\/uploads\/2021\/11\/CoverImages_1200x628px-6.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":607,"url":"https:\/\/learning.workfall.com\/learning\/blog\/aws-developer-tools-to-build-ci-cd-pipeline\/","url_meta":{"origin":197,"position":4},"title":"AWS developer tools to build CI\/CD pipeline","date":"November 11, 2021","format":false,"excerpt":"Building software with consistent quality and being able to deliver new functionality quickly isn\u2019t easy! \u00a0But by using DevOps as an agile development process and the right development tools, you can make it super easy!! In this blog, we will discuss AWS Developer tools which are playing a key role\u2026","rel":"","context":"In &quot;AWS Cloud Computing&quot;","img":{"alt_text":"AWS developer tools to build CI\/CD pipeline","src":"https:\/\/i1.wp.com\/learning.workfall.com\/learning\/blog\/wp-content\/uploads\/2021\/11\/CI_CD.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":492,"url":"https:\/\/learning.workfall.com\/learning\/blog\/how-to-set-up-aws-copilot-to-build-release-and-operate-containerized-applications-on-ecs-and-fargate-using-a-cli-2\/","url_meta":{"origin":197,"position":5},"title":"How to set up AWS Copilot to build, release and operate containerized applications on ECS and Fargate using a CLI?","date":"November 10, 2021","format":false,"excerpt":"Are you completely drained by worrying about your infrastructure over architecture? Well, AWS Copilot supercharges your application by allowing you to set up infrastructure, build your application with many microservices, set up a pipeline to automate release and monitor the stack and application's status, and add-ons all from a single\u2026","rel":"","context":"In &quot;AWS Cloud Computing&quot;","img":{"alt_text":"AWS Copilot - Workfall","src":"https:\/\/i1.wp.com\/learning.workfall.com\/learning\/blog\/wp-content\/uploads\/2021\/11\/copilot1.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]}],"_links":{"self":[{"href":"https:\/\/learning.workfall.com\/learning\/blog\/wp-json\/wp\/v2\/posts\/197"}],"collection":[{"href":"https:\/\/learning.workfall.com\/learning\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/learning.workfall.com\/learning\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/learning.workfall.com\/learning\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/learning.workfall.com\/learning\/blog\/wp-json\/wp\/v2\/comments?post=197"}],"version-history":[{"count":5,"href":"https:\/\/learning.workfall.com\/learning\/blog\/wp-json\/wp\/v2\/posts\/197\/revisions"}],"predecessor-version":[{"id":2251,"href":"https:\/\/learning.workfall.com\/learning\/blog\/wp-json\/wp\/v2\/posts\/197\/revisions\/2251"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/learning.workfall.com\/learning\/blog\/wp-json\/wp\/v2\/media\/199"}],"wp:attachment":[{"href":"https:\/\/learning.workfall.com\/learning\/blog\/wp-json\/wp\/v2\/media?parent=197"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/learning.workfall.com\/learning\/blog\/wp-json\/wp\/v2\/categories?post=197"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/learning.workfall.com\/learning\/blog\/wp-json\/wp\/v2\/tags?post=197"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}