{"id":12903,"date":"2023-02-14T12:20:29","date_gmt":"2023-02-14T06:50:29","guid":{"rendered":"https:\/\/opstree.com\/blog\/\/?p=12903"},"modified":"2023-02-14T12:20:29","modified_gmt":"2023-02-14T06:50:29","slug":"self-hosted-gitlab-migration-part-1","status":"publish","type":"post","link":"https:\/\/opstree.com\/blog\/2023\/02\/14\/self-hosted-gitlab-migration-part-1\/","title":{"rendered":"Self-Hosted GitLab Migration &#8211; Part 1"},"content":{"rendered":"\n<p class=\"has-text-align-justify\">In the IT industry, the need for migration can raise several questions in your mind. Like what will be migrated and what measures should be taken to perform the particular migration. And the major concern is whether there are any chances of losing data. Losing even a tiny fraction of the data in transition can impact the performance of the application. So, in that scenario there are several measures that need to be kept in our mind while performing any sort of migration is taking a backup of the data, software configuration, and if any plugin is required for the software so that should also be checked. Apart from that migration should always take place when the least traffic comes on the application. <\/p>\n\n\n\n<p class=\"has-text-align-justify\">So, recently we got a requirement where we had to upgrade a self-managed Gitlab Community Edition(CE) from <strong>11.11<\/strong> to the latest version i.e., <strong>15.4<\/strong>. \u00a0<\/p>\n\n\n\n<p class=\"has-text-align-justify\">While upgrading Gitlab to any other version you might face many problems related to incompatible versions. So, for a successful upgrade, we\u2019ll discuss the GitLab requirements for the upgradation and will also share the analyses that we found while following through this blog post.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/02\/gitlabdig-2.png?w=771\" alt=\"\" class=\"wp-image-12942\" width=\"457\" height=\"184\" \/><\/figure><\/div>\n\n\n<!--more-->\n\n\n\n<p class=\"has-text-align-justify\">As the requirement was to upgrade Gitlab to the recent version, you might wonder <em>what&#8217;s the big deal in it<\/em>!<\/p>\n\n\n\n<p class=\"has-text-align-justify\">But hold on!! It is not as easy as it is looking as you can&#8217;t upgrade a version from 11.11 to the latest released version directly with no downtime. So, after doing groundwork on it, we analyzed several strategies for achieving it.<\/p>\n\n\n\n<p class=\"has-text-align-justify\">The first way is upgrading it by accepting downtime which means we have to go through a major version upgrade though it is less complex, downtime is what we can&#8217;t afford.<\/p>\n\n\n\n<p class=\"has-text-align-justify\">The other way comes with zero downtime, upgrading to a newer major, minor, or patch version of GitLab without taking your GitLab instance down. It can be achieved if one minor release at a time is upgraded for example from 13.1 to 13.2, not to 13.3&nbsp;and also releases can&#8217;t be skipped as database modifications may be run in the wrong sequence and will leave the database schema broken so, keeping all these points in mind database migration should also be taken care of.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"334\" height=\"328\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/02\/image-1.png?w=334\" alt=\"\" class=\"wp-image-12909\" \/><\/figure><\/div>\n\n\n<p><\/p>\n\n\n\n<p class=\"has-text-align-justify\">And as this is a very tedious job with plenty of pros and cons for the same and also it will be a time-consuming task, this is not a cup of our tea, so we\u2019ll have to go back to the drawing board.<\/p>\n\n\n\n<p class=\"has-text-align-justify\">We thought of drilling down into this further, and so we came up with the thought of only migrating repository, users, groups, and other meta info via API.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"480\" height=\"271\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/02\/giphy-2.gif?w=480\" alt=\"\" class=\"wp-image-12906\" \/><\/figure><\/div>\n\n\n<p class=\"has-text-align-justify\">Migration of Gitlab resources. Did I hear it right?<\/p>\n\n\n\n<p>YES, you heard it right!<\/p>\n\n\n\n<p class=\"has-text-align-justify\">Let\u2019s suppose an organization is running a self-managed GitLab version of <strong>11.11<\/strong> and is having major resources that you can&#8217;t afford to lose such as users, repositories, groups, etc. So in that case we\u2019ll be setting up a newer self-managed GitLab of version <strong>15.4<\/strong> and will be migrating all the GitLab resources from the older version to a newer one.\u00a0<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/02\/gitlab-2.gif?w=864\" alt=\"\" class=\"wp-image-12959\" width=\"800\" \/><\/figure><\/div>\n\n\n<p>Sounds good right !!! <\/p>\n\n\n\n<p class=\"has-text-align-justify\">But now you might be thinking how is it possible? Does gitlab provide any functionality like this? Or anything else. So, calm down, it&#8217;s a long journey and just a click of a task but we&#8217;ll look into this in the next blog.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">CONCLUSION<\/h2>\n\n\n\n<p>In this blog we have covered the different strategies of GitLab migration on the basis of requirements and now will see you in the next blog with how will we be achieving it. <\/p>\n\n\n\n<p>Please let us know in the comment section if you have any other suggestions or strategies about the approach. Thanks for reading. <\/p>\n\n\n\n<p><em>\u00c0 bient\u00f4t!!<\/em><\/p>\n\n\n\n<p><strong>Blog Pundits: <a href=\"https:\/\/opstree.com\/blog\/\/author\/deepakgupta97\/\" target=\"_blank\" rel=\"noreferrer noopener\">Deepak Gupta<\/a><\/strong> and <strong><a rel=\"noreferrer noopener\" href=\"https:\/\/opstree.com\/blog\/\/author\/sandeep7c51ad81ba\/\" target=\"_blank\">Sandeep Rawat<\/a><\/strong><\/p>\n\n\n\n<p><strong><a href=\"https:\/\/opstree.com\/contact-us\/?utm_source=WordPress&amp;utm_medium=Blog&amp;utm_campaign=Self-Hosted_GitLab_Migration-Part_1\" target=\"_blank\" rel=\"noreferrer noopener\">Opstree<\/a><\/strong>\u00a0is an End to End DevOps solution provider.<\/p>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/opstree.com\/contact-us\/?utm_source=WordPress&amp;utm_medium=Blog&amp;utm_campaign=Self-Hosted_GitLab_Migration-Part_1\" target=\"_blank\" rel=\"noreferrer noopener\">CONTACT US<\/a><\/div>\n<\/div>\n\n\n\n<p class=\"has-text-align-center\"><strong>Connect with Us<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-social-links aligncenter is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-1 wp-block-social-links-is-layout-flex\"><li class=\"wp-social-link wp-social-link-linkedin  wp-block-social-link\"><a href=\"https:\/\/www.linkedin.com\/company\/opstree-solutions\" class=\"wp-block-social-link-anchor\" target=\"_blank\" rel=\"noopener\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">LinkedIn<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-youtube  wp-block-social-link\"><a href=\"https:\/\/www.youtube.com\/channel\/UCeLma6SpNYH7jjYKSBNSexw\" class=\"wp-block-social-link-anchor\" target=\"_blank\" rel=\"noopener\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">YouTube<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-github  wp-block-social-link\"><a href=\"https:\/\/github.com\/OpsTree\" class=\"wp-block-social-link-anchor\" target=\"_blank\" rel=\"noopener\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">GitHub<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-facebook  wp-block-social-link\"><a href=\"https:\/\/www.facebook.com\/opstree\" class=\"wp-block-social-link-anchor\" target=\"_blank\" rel=\"noopener\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Facebook<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-medium  wp-block-social-link\"><a href=\"https:\/\/medium.com\/buildpiper\" class=\"wp-block-social-link-anchor\" target=\"_blank\" rel=\"noopener\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M20.962,7.257l-5.457,8.867l-3.923-6.375l3.126-5.08c0.112-0.182,0.319-0.286,0.527-0.286c0.05,0,0.1,0.008,0.149,0.02 c0.039,0.01,0.078,0.023,0.114,0.041l5.43,2.715l0.006,0.003c0.004,0.002,0.007,0.006,0.011,0.008 C20.971,7.191,20.98,7.227,20.962,7.257z M9.86,8.592v5.783l5.14,2.57L9.86,8.592z M15.772,17.331l4.231,2.115 C20.554,19.721,21,19.529,21,19.016V8.835L15.772,17.331z M8.968,7.178L3.665,4.527C3.569,4.479,3.478,4.456,3.395,4.456 C3.163,4.456,3,4.636,3,4.938v11.45c0,0.306,0.224,0.669,0.498,0.806l4.671,2.335c0.12,0.06,0.234,0.088,0.337,0.088 c0.29,0,0.494-0.225,0.494-0.602V7.231C9,7.208,8.988,7.188,8.968,7.178z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Medium<\/span><\/a><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>In the IT industry, the need for migration can raise several questions in your mind. Like what will be migrated and what measures should be taken to perform the particular migration. And the major concern is whether there are any chances of losing data. Losing even a tiny fraction of the data in transition can &hellip; <a href=\"https:\/\/opstree.com\/blog\/2023\/02\/14\/self-hosted-gitlab-migration-part-1\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Self-Hosted GitLab Migration &#8211; Part 1&#8221;<\/span><\/a><\/p>\n","protected":false},"author":223952166,"featured_media":29900,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[28070474],"tags":[460,768739308,676319247,77180337,4996032],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/11\/DevSecOps-1.jpg","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pfDBOm-3m7","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/12903"}],"collection":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/users\/223952166"}],"replies":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/comments?post=12903"}],"version-history":[{"count":23,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/12903\/revisions"}],"predecessor-version":[{"id":12974,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/12903\/revisions\/12974"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/media\/29900"}],"wp:attachment":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/media?parent=12903"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/categories?post=12903"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/tags?post=12903"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}