{"id":48,"date":"2016-06-17T12:08:49","date_gmt":"2016-06-17T12:08:49","guid":{"rendered":"http:\/\/67bricks.com\/blog\/?p=48"},"modified":"2016-06-23T12:19:18","modified_gmt":"2016-06-23T12:19:18","slug":"developer-meeting-gitlab","status":"publish","type":"post","link":"https:\/\/blog.67bricks.com\/?p=48","title":{"rendered":"Developer meeting &#8211; Gitlab"},"content":{"rendered":"<p>This week we talked about Gitlab, and our migration from using Sourcerepo for Git hosting to using our own self-hosted Gitlab on Amazon EC2.<\/p>\n<p>We&#8217;re switching to Gitlab because it has a better UI, has a REST API\u00a0for creating and managing projects, and has some nice features like protected branches and snippets.<\/p>\n<p>Our migration process was to write\u00a0some Scala code that used Selenium to scrape our existing list of projects from Sourcerepo, and\u00a0then used the Gitlab\u00a0API to create new projects in Gitlab. It also\u00a0migrated users and transferred issues from\u00a0our Trac issue management system into the Gitlab issue management.<\/p>\n<p>We discussed using the Gitlab &#8220;merge request&#8221; process\u00a0in\u00a0place of our existing Git Flow approach to code review. We didn&#8217;t reach any firm conclusions, but we&#8217;re likely to discuss this again in a future developer meeting.<\/p>\n<p>We discussed other uses for the API:<\/p>\n<ul>\n<li>It potentially allows for better integration with our Jenkins continuous integration server. We would need to write code for this. There is existing Jenkins code that will scan a GitHub\u00a0account, and create a Jenkins build for every project it finds containing a &#8220;Jenkinsfile&#8221;\u00a0pipeline configuration &#8211; we could use this as a basis. This would mean that we didn&#8217;t need to configure\u00a0Jenkins projects explicitly, just create a new repo based on our standard project template and the Jenkins project would be created automatically.<\/li>\n<li>In addition to the normal Gitlab backup process, we can\u00a0use the API to maintain a\u00a0local copy of all the Git repositories on the server. The API allows us to enumerate all of the repositories and create directories for them, then we can use a script to check out the latest contents of each on a schedule.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>This week we talked about Gitlab, and our migration from using Sourcerepo for Git hosting to using our own self-hosted Gitlab on Amazon EC2. We&#8217;re switching to Gitlab because it has a better UI, has a REST API\u00a0for creating and managing projects, and has some nice features like protected branches and snippets. Our migration process &hellip; <a href=\"https:\/\/blog.67bricks.com\/?p=48\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Developer meeting &#8211; Gitlab&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-48","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/blog.67bricks.com\/index.php?rest_route=\/wp\/v2\/posts\/48","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.67bricks.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.67bricks.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.67bricks.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.67bricks.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=48"}],"version-history":[{"count":1,"href":"https:\/\/blog.67bricks.com\/index.php?rest_route=\/wp\/v2\/posts\/48\/revisions"}],"predecessor-version":[{"id":49,"href":"https:\/\/blog.67bricks.com\/index.php?rest_route=\/wp\/v2\/posts\/48\/revisions\/49"}],"wp:attachment":[{"href":"https:\/\/blog.67bricks.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=48"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.67bricks.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=48"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.67bricks.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=48"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}