<?xml version='1.0' encoding='utf-8' ?>
<feed xmlns='http://www.w3.org/2005/Atom'>
<title>GitLab</title>
<id>https://about.gitlab.com/blog/</id>
<link href='https://about.gitlab.com/blog/' />
<updated>2017-06-02T00:00:00+00:00</updated>
<author>
<name>The GitLab Team</name>
</author>
<entry>
<title>“Pick Your Brain” Interview with CEO Sid Sijbrandij</title>
<link href='https://about.gitlab.com/2017/06/02/pick-your-brain-interview-brandon-foo/' rel='alternate' />
<id>https://about.gitlab.com/2017/06/02/pick-your-brain-interview-brandon-foo/</id>
<published>2017-06-02T00:00:00+00:00</published>
<updated>2017-06-02T00:00:00+00:00</updated>
<author>
<name>Brandon Foo</name>
</author>
<content type='html'>&lt;p&gt;I sat down for a “&lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;handbook&#x2F;people-operations&#x2F;ceo-preferences&#x2F;#pick-your-brain-meetings&quot;&gt;pick your brain&lt;&#x2F;a&gt;” meeting with GitLab’s CEO and Co-founder, &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;team&#x2F;#sytses&quot;&gt;Sid Sijbrandij&lt;&#x2F;a&gt;, to learn about his approach towards different aspects of building a successful startup. Here are some highlights of the conversation.&lt;&#x2F;p&gt;



&lt;p&gt;&lt;strong&gt;Brandon: When you were an earlier company around your seed stage, what were your most effective growth strategies?&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;

&lt;p&gt;&lt;strong&gt;Sid:&lt;&#x2F;strong&gt; GitLab got started as a &lt;a href=&quot;https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=4428278&quot;&gt;Show HN of GitLab.com&lt;&#x2F;a&gt;. We’ve always tried to see where our users were and talk with them there.&lt;&#x2F;p&gt;

&lt;p&gt;When you find people who have a need for your product, you start by trying to bring it to their attention. Then you enter a phase where they care about your product, and they start asking you for more — that’s easy, that’s the honeymoon phase. Now we’re getting to the phase where people think of GitLab as a given, and that it should be perfect, so they tell you the things that could be better.&lt;&#x2F;p&gt;

&lt;p&gt;&lt;strong&gt;Brandon: How do you think about product strategy with respect to building new features versus improving or increasing adoption of existing features?&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;

&lt;p&gt;&lt;strong&gt;Sid:&lt;&#x2F;strong&gt; It’s kind of a pendulum that swings back and forth. We focused a lot on new features for a while to accomplish our &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=PoBaY_rqeKA&quot;&gt;idea to production vision&lt;&#x2F;a&gt;, and now this quarter &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;direction&#x2F;&quot;&gt;we’re focusing&lt;&#x2F;a&gt; on increasing adoption of existing features. Mostly this is necessary for newer features, but that’s not the same as increasing the features’ scope, it’s more a question of how we can increase adoption for the features we already have, and seeing which functions are missing. When we release features and have the suspicion few people are using them, we evaluate to make sure those features are things that people can really use. Most recently in &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;2017&#x2F;05&#x2F;22&#x2F;gitlab-9-2-released&#x2F;&quot;&gt;9.2&lt;&#x2F;a&gt; we added the framework to translate GitLab into any language, and allowed users to specify multiple assignees to better track shared ownership of an issue. &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;direction&#x2F;#2017-goals&quot;&gt;In 2017&lt;&#x2F;a&gt;, we’ll continue to ship features tailored for enterprise development teams, and make it easier to build, deploy, and monitor applications within GitLab.&lt;&#x2F;p&gt;

&lt;figure class=&quot;video_container&quot;&gt;
  &lt;iframe src=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;embed&#x2F;WBf_DA0FF9k&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt; &lt;&#x2F;iframe&gt;
&lt;&#x2F;figure&gt;

&lt;p&gt;&lt;strong&gt;Brandon: How do you balance building visionary features that people aren’t necessarily asking for vs. building in direct response to customer requests?&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;

&lt;p&gt;&lt;strong&gt;Sid:&lt;&#x2F;strong&gt; We do both. We started off doing just version control and code review, and now GitLab delivers the entire DevOps pipeline, everything from chatting about an idea and planning it, to getting it out in production and monitoring. We envision enabling everyone to collaborate on digital content, so they can work together and achieve better results. No one asked for that — it’s something we did, it’s the future of the company now. We’d have been in a bad spot if we hadn’t done that.&lt;&#x2F;p&gt;

&lt;p&gt;At the same time, don’t lose track of what your customers are asking for. Balancing that is the hard part. The natural result is too little visionary stuff; if you build the right company, then everyone will be listening to your customers and screaming, “Let’s build the things customers want!” So the leadership’s task is focusing on what we need to do in order to be a better company in five years.&lt;&#x2F;p&gt;

&lt;p&gt;&lt;strong&gt;Brandon: Since you bootstrapped for some time, how did you decide when it was the right time to raise institutional funding?&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;

&lt;p&gt;&lt;strong&gt;Sid:&lt;&#x2F;strong&gt; One big reason is the talent we wanted to attract. While we were in YC, we tried to hire a good sales leader, but everyone we approached wanted stock in the company. We hadn’t raised any outside money so stock was all mine and my co-founder &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;team&#x2F;#dzaporozhets&quot;&gt;Dmitriy’s&lt;&#x2F;a&gt; — he started GitLab and I started GitLab.com.&lt;&#x2F;p&gt;

&lt;p&gt;This made clear that if we were unable to give out stock, we were not going to hire the best people; if we’re not getting the best people, we’re going to lose in the marketplace. If you give people stock while not taking outside money, you’ll still grow but very slowly, which is not the kind of deal these executives were expecting. They expect that after 6-7 years the stock is worth something and they can get liquid. The only way to get there is to attract external capital.&lt;&#x2F;p&gt;

&lt;p&gt;&lt;strong&gt;Brandon: Is there anything that you would change in retrospect that you think might improve the outcome of where GitLab is today?&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;

&lt;p&gt;&lt;strong&gt;Sid:&lt;&#x2F;strong&gt; In hindsight, I’d rather have started GitLab.com a bit later. We’ve grown so fast since then that we’ve been behind in making a great experience for our users.&lt;&#x2F;p&gt;

&lt;p&gt;I would focus on people running GitLab self-hosted, and start GitLab.com when we were ready for it. I’d rather have people not use our product than using the product and not being absolutely happy about it. It’s not about users, it’s about happy users.&lt;&#x2F;p&gt;

&lt;p&gt;If not 100% of the users are happy, we’re not doing a good enough job.&lt;&#x2F;p&gt;

&lt;h2 id=&quot;about-the-guest-author&quot;&gt;About the Guest Author&lt;&#x2F;h2&gt;

&lt;p&gt;Brandon Foo is the Co-founder and CEO of &lt;a href=&quot;https:&#x2F;&#x2F;polymail.io&#x2F;&quot;&gt;Polymail&lt;&#x2F;a&gt;, an email productivity platform designed for modern teams and companies.&lt;&#x2F;p&gt;

&lt;img src=&#x27;https:&#x2F;&#x2F;about.gitlab.com&#x2F;images&#x2F;blogimages&#x2F;pick-your-brain-interview.jpg&#x27; class=&#x27;webfeedsFeaturedVisual&#x27; style=&#x27;display: none;&#x27; &#x2F;&gt;</content>
</entry>
<entry>
<title>GitLab's Functional Group Updates - May 16th - May 26th</title>
<link href='https://about.gitlab.com/2017/05/31/functional-group-updates/' rel='alternate' />
<id>https://about.gitlab.com/2017/05/31/functional-group-updates/</id>
<published>2017-05-31T00:00:00+00:00</published>
<updated>2017-05-31T00:00:00+00:00</updated>
<author>
<name>Chloe Whitestone</name>
</author>
<content type='html'>&lt;!-- beginning of the intro - leave it as is --&gt;

&lt;p&gt;Every day from Monday to Thursday, right before our &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;handbook&#x2F;#team-call&quot;&gt;GitLab Team call&lt;&#x2F;a&gt;, a different Functional Group gives an &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;handbook&#x2F;people-operations&#x2F;functional-group-updates&#x2F;&quot;&gt;update&lt;&#x2F;a&gt; to our team.&lt;&#x2F;p&gt;

&lt;p&gt;The format of these calls is simple and short where they can either give a presentation or quickly walk the team through their agenda.&lt;&#x2F;p&gt;



&lt;h2 id=&quot;recordings&quot;&gt;Recordings&lt;&#x2F;h2&gt;

&lt;p&gt;All of the updates are recorded using &lt;a href=&quot;https:&#x2F;&#x2F;zoom.us&quot;&gt;Zoom&lt;&#x2F;a&gt; at the time of the call. All the recordings will be uploaded to our YouTube account and made public, with the exception of the Sales and Finance updates.&lt;&#x2F;p&gt;

&lt;!-- end of the intro --&gt;

&lt;!-- beginning of the FG block - repeat as many times as necessary (copy and paste the entire block) --&gt;

&lt;hr &#x2F;&gt;

&lt;h3 id=&quot;product-team&quot;&gt;Product Team&lt;&#x2F;h3&gt;

&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.slideshare.net&#x2F;JobvanderVoort&#x2F;gitlab-product-update-may-16&quot;&gt;Presentation slides&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;

&lt;figure class=&quot;video_container&quot;&gt;
  &lt;iframe src=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;embed&#x2F;TdoGXMxdejg&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt; &lt;&#x2F;iframe&gt;
&lt;&#x2F;figure&gt;

&lt;!-- end of the FG block --&gt;

&lt;!-- beginning of the FG block - repeat as many times as necessary (copy and paste the entire block) --&gt;

&lt;hr &#x2F;&gt;

&lt;h3 id=&quot;backend-team&quot;&gt;Backend Team&lt;&#x2F;h3&gt;

&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;docs.google.com&#x2F;presentation&#x2F;d&#x2F;1kWZxBMROnyHG5yx7ag_Ub3gOttw3EwVAM4W8iEnteoE&#x2F;edit&quot;&gt;Presentation slides&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;

&lt;figure class=&quot;video_container&quot;&gt;
  &lt;iframe src=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;embed&#x2F;hqogQzvufhU&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt; &lt;&#x2F;iframe&gt;
&lt;&#x2F;figure&gt;

&lt;!-- end of the FG block --&gt;

&lt;hr &#x2F;&gt;

&lt;h3 id=&quot;general-team&quot;&gt;General Team&lt;&#x2F;h3&gt;

&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;docs.google.com&#x2F;presentation&#x2F;d&#x2F;1qq1Pnz9991WhGT6lm6mgytbua5q5Gv3g8Vm7bW83T4o&#x2F;edit#slide=id.g1c74eaa825_1_0&quot;&gt;Presentation slides&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;

&lt;figure class=&quot;video_container&quot;&gt;
  &lt;iframe src=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;embed&#x2F;sHoShguNKdg&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt; &lt;&#x2F;iframe&gt;
&lt;&#x2F;figure&gt;

&lt;!-- end of the FG block --&gt;

&lt;hr &#x2F;&gt;

&lt;h3 id=&quot;people-ops-team&quot;&gt;People Ops Team&lt;&#x2F;h3&gt;

&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;docs.google.com&#x2F;presentation&#x2F;d&#x2F;1BpNIktAAsLNuN5NibEsw554z1ICfh8GRct4MdUZoVXE&#x2F;edit#slide=id.g153a2ed090_0_63&quot;&gt;Presentation slides&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;

&lt;figure class=&quot;video_container&quot;&gt;
  &lt;iframe src=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;embed&#x2F;qK5g33yt6E4&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt; &lt;&#x2F;iframe&gt;
&lt;&#x2F;figure&gt;

&lt;!-- end of the FG block --&gt;

&lt;hr &#x2F;&gt;

&lt;p&gt;Questions? Leave a comment below or tweet &lt;a href=&quot;https:&#x2F;&#x2F;twitter.com&#x2F;gitlab&quot;&gt;@GitLab&lt;&#x2F;a&gt;! Would you like to join us? Check out our &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;jobs&#x2F;&quot;&gt;job openings&lt;&#x2F;a&gt;!&lt;&#x2F;p&gt;
&lt;img src=&#x27;https:&#x2F;&#x2F;about.gitlab.com&#x2F;images&#x2F;default-blog-image.png&#x27; class=&#x27;webfeedsFeaturedVisual&#x27; style=&#x27;display: none;&#x27; &#x2F;&gt;</content>
</entry>
<entry>
<title>GitLab Patch Release: 9.2.2</title>
<link href='https://about.gitlab.com/2017/05/25/gitlab-9-dot-2-dot-2-released/' rel='alternate' />
<id>https://about.gitlab.com/2017/05/25/gitlab-9-dot-2-dot-2-released/</id>
<published>2017-05-25T00:00:00+00:00</published>
<updated>2017-05-25T00:00:00+00:00</updated>
<author>
<name>Timothy Andrew</name>
</author>
<content type='html'>&lt;p&gt;Today we&#x27;re releasing version 9.2.2 for GitLab Community Edition (CE) and
Enterprise Edition (EE).&lt;&#x2F;p&gt;

&lt;p&gt;This version resolves a number of regressions and bugs in &lt;a href=&quot;&#x2F;2017&#x2F;05&#x2F;22&#x2F;gitlab-9-2-released&quot;&gt;this month&#x27;s 9.2 release&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;

&lt;p&gt;Please read on for more details.&lt;&#x2F;p&gt;



&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;CE&#x2F;EE:&lt;&#x2F;strong&gt; Improve merge request widget state calculation (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;merge_requests&#x2F;11668&quot;&gt;!11668&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;CE&#x2F;EE:&lt;&#x2F;strong&gt; Fix right-sidebar gap on mobile (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;merge_requests&#x2F;11625&quot;&gt;!11625&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;CE&#x2F;EE:&lt;&#x2F;strong&gt; Fix pipeline ETag (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;merge_requests&#x2F;11615&quot;&gt;!11615&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;CE&#x2F;EE:&lt;&#x2F;strong&gt; Prevent errors from non-functional notify_post_receive endpoint (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;merge_requests&#x2F;11509&quot;&gt;!11509&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;CE&#x2F;EE:&lt;&#x2F;strong&gt; Read HEAD commit and use it as sentry &quot;releases&quot; value (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;merge_requests&#x2F;11565&quot;&gt;!11565&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;CE&#x2F;EE:&lt;&#x2F;strong&gt; Use refresh icon for retried jobs (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;merge_requests&#x2F;11667&quot;&gt;!11667&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;CE&#x2F;EE:&lt;&#x2F;strong&gt; Make all notes use equal padding (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;merge_requests&#x2F;11616&quot;&gt;!11616&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;CE&#x2F;EE:&lt;&#x2F;strong&gt; Fix ambiguous routing issues by teaching router about reserved words (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;merge_requests&#x2F;11570&quot;&gt;!11570&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;CE&#x2F;EE:&lt;&#x2F;strong&gt; Show loading indicator while waiting for assignees first fetch (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;merge_requests&#x2F;11434&quot;&gt;!11434&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;EE:&lt;&#x2F;strong&gt; Fix return value when Geo nodes are not in sync (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ee&#x2F;merge_requests&#x2F;1969&quot;&gt;!1969&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;EE:&lt;&#x2F;strong&gt; Fixed positioning of milestone dropdown in create board dropdown (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ee&#x2F;merge_requests&#x2F;1972&quot;&gt;!1972&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;Omnibus:&lt;&#x2F;strong&gt; Fix cron worker being set to &quot;&quot; when no value was provided (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;omnibus-gitlab&#x2F;merge_requests&#x2F;1580&quot;&gt;!1580&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;

&lt;h2 id=&quot;upgrade-barometer&quot;&gt;Upgrade barometer&lt;&#x2F;h2&gt;

&lt;p&gt;This version contains no migrations and should not require any downtime.&lt;&#x2F;p&gt;

&lt;p&gt;Please be aware that by default the Omnibus packages will stop, run migrations,
and start again, no matter how “big” or “small” the upgrade is. This behavior
can be changed by adding a &lt;a href=&quot;http:&#x2F;&#x2F;doc.gitlab.com&#x2F;omnibus&#x2F;update&#x2F;README.html&quot;&gt;&lt;code&gt;&#x2F;etc&#x2F;gitlab&#x2F;skip-auto-migrations&lt;&#x2F;code&gt;
file&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;

&lt;h2 id=&quot;updating&quot;&gt;Updating&lt;&#x2F;h2&gt;

&lt;p&gt;To update, check out our &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;update&#x2F;&quot;&gt;update page&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;

&lt;h2 id=&quot;enterprise-edition&quot;&gt;Enterprise Edition&lt;&#x2F;h2&gt;

&lt;p&gt;Interested in GitLab Enterprise Edition? Check out the &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;gitlab-ee&#x2F;&quot;&gt;features exclusive to
EE&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;

&lt;p&gt;Access to GitLab Enterprise Edition is granted by a &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;products&#x2F;&quot;&gt;subscription&lt;&#x2F;a&gt;.
No time to upgrade GitLab yourself? Subscribers receive upgrade and installation
services.&lt;&#x2F;p&gt;
&lt;img src=&#x27;https:&#x2F;&#x2F;about.gitlab.com&#x2F;images&#x2F;default-blog-image.png&#x27; class=&#x27;webfeedsFeaturedVisual&#x27; style=&#x27;display: none;&#x27; &#x2F;&gt;</content>
</entry>
<entry>
<title>9 Attributes of Successful Development Teams</title>
<link href='https://about.gitlab.com/2017/05/23/attributes-of-successful-development-teams/' rel='alternate' />
<id>https://about.gitlab.com/2017/05/23/attributes-of-successful-development-teams/</id>
<published>2017-05-23T00:00:00+00:00</published>
<updated>2017-05-23T00:00:00+00:00</updated>
<author>
<name>Rebecca Dodd</name>
</author>
<content type='html'>&lt;p&gt;Not all development teams work the same way, but there are some values, processes and attitudes that all successful teams share.&lt;&#x2F;p&gt;



&lt;h2 id=&quot;1-they-automate-everything&quot;&gt;1. They Automate Everything&lt;&#x2F;h2&gt;

&lt;p&gt;There’s no substitute for the work of the human brain, but by automating some of the more time-consuming (and sometimes tedious) aspects of a developer’s job, you not only free up time that could be spent on other, more creative tasks, but you ensure that your software development process is easily repeatable, and consistent every release cycle. “We have a big release every month,” says GitLab Platform Backend Lead, &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;team&#x2F;#DouweM&quot;&gt;Douwe Maan&lt;&#x2F;a&gt;, “but we have numerous patch releases. We have tons of scripts in our release tools repository that automate that so that we don’t miss little bits and so that it’s identical and reproducible every time.” Automation also means doing things like leveraging continuous integration to run scripts, so a portion of your code review is taken over, offloading work that would otherwise be done manually.&lt;&#x2F;p&gt;

&lt;h2 id=&quot;2-theyre-meticulous-about-documentation&quot;&gt;2. They’re Meticulous about Documentation&lt;&#x2F;h2&gt;

&lt;p&gt;“Documentation of processes and guidelines is a way of kind of scripting or automating your team’s behavior,” explains Douwe. Because we’re a distributed team, it’s important that if a question comes up often, that there’s somewhere people can find what they need without having to wait for team members in other time zones to come online and answer a question – this saves time not just for the person with the question, but for others who are spared answering the same questions over and over. “If people on my team have a certain question or things that are blocking them repeatedly, that probably means it’s something we should either document better or invent a process around,” says Douwe.&lt;&#x2F;p&gt;

&lt;p&gt;“As a consequence of that, for example, we have the process around getting merge requests and issues into a patch release when it’s a regression or security issue and so on. At one point we had so few people that we could just say, ‘Hey that needs to go into the patch release,’ but of course as the team grows, that doesn’t scale anymore, because you’d have 20 people asking one person. To address that we invented the process around labels, where we use labels and milestones very heavily in GitLab to signal to people what has to happen with an issue.”&lt;&#x2F;p&gt;

&lt;h2 id=&quot;3-they-use-collaboration-tools&quot;&gt;3. They Use Collaboration Tools&lt;&#x2F;h2&gt;

&lt;p&gt;Having space for comments, questions or suggestions at each stage of the cycle is critical for fostering collaboration and making sure that everyone can follow the latest progress of a project. “For us, the single source of truth is always the &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;features&#x2F;issueboard&#x2F;&quot;&gt;issue&lt;&#x2F;a&gt;. Tools like labels, milestones, assigning to people, these all make sure that the right person knows when it’s their turn to do something, and the handoff happens through issue comments,” explains Douwe. This is another area in which we’ve had to become disciplined about documenting the latest update on an issue, because as a distributed team we can’t just walk over to a colleague’s desk to check something. “We don’t have the problem where after two days people will be like, ‘Hmm, what did we decide again?’” says Douwe. Discussion takes place right in the same environment where we’re working – whether it’s a comment on an issue or a merge request or an inline question on the code itself – so it’s easy for everyone to see the context for it and to refer back to it later.&lt;&#x2F;p&gt;

&lt;h2 id=&quot;4-they-use-integrated-platforms&quot;&gt;4. They Use Integrated Platforms&lt;&#x2F;h2&gt;

&lt;p&gt;Having all your software development tools in one environment reduces context-switching, tiresome maintenance when APIs change, and administrative complexity. It also makes the development process smoother, as an integrated tool often offers shortcuts within the UI that would not exist if you were using two separate products.&lt;&#x2F;p&gt;

&lt;p&gt;Douwe explains: “For a long time GitLab CI used to be a separately deployed web application: the UIs were not integrated in any way and they felt like separate products, as if they were not even made by the same company. At one point we decided to integrate it, and literally within one or two weeks we started seeing new possibilities of interlinking these applications. We’d think, ‘Hey, wouldn’t it be neat if we added a button to the latest status of this page?’ which previously is something we never would have thought about, because we really thought of the two as separate products that need to talk over an established channel, instead of just putting a link in everywhere where it would useful to have a link to CI. So with a built-in solution, the integration you get is not just tighter, it’s integrated in ways which other, separate products being developed by siloed development teams would never think of. We’re not just approaching it as an issue tracker, a code review tool or a CI tool, we’re seeing it as a development environment.”&lt;&#x2F;p&gt;

&lt;h2 id=&quot;5-they-version-control-everything&quot;&gt;5. They Version Control Everything&lt;&#x2F;h2&gt;

&lt;p&gt;Using version control for source code is widely accepted as a good idea, but it’s useful for a number of other purposes too. Take documentation, for example: if you use a wiki, there is no concept of a merge request. “There’s no way of suggesting an improvement without immediately making it,” says Douwe, “so what that means is that in a lot of places that use a wiki, changing it is kind of scary.” This creates a feeling that suggesting updates or improvements is for senior team members only, and discourages participation and collaboration on the documentation. &quot;Using source control here means that even the most junior person who’s like, ‘Hmm, I spotted a typo here,’ or ‘Hey, this wasn’t super clear, let’s do it like this,’ won’t be hesitant to bring up that suggestion.&quot; Having time to write a merge request that clearly outlines the advantages of what they&#x27;re proposing makes it less intimidating to suggest a change. &quot;It really makes the documentation, similar to the source code, an open source and living document that everyone can contribute to.&quot; The same principle applies to things like your CI&#x2F;CD configuration, tests, and infrastructure code.&lt;&#x2F;p&gt;

&lt;p&gt;Improved collaboration and learning opportunities aren’t the only benefits of using version control for things beyond your source code: the ability to roll back in the event of something breaking, and to pinpoint where a bug was introduced are advantages both in that it’s easier to fix something, but also in that team members feel freer to experiment without the fear of causing irreparable damage if something breaks.&lt;&#x2F;p&gt;

&lt;h2 id=&quot;6-they-make-it-easy-for-everyone-to-contribute&quot;&gt;6. They Make it Easy for Everyone to Contribute&lt;&#x2F;h2&gt;

&lt;p&gt;By opening up your development platform, other team members can discover, contribute to and learn from other team members’ work. “If you hide your CI configuration in an area that can only be accessed by the masters of the project, that means that very few developers on the team and especially very few developers on other teams will ever see that config,” says Douwe. “You really shouldn’t see your code as just a product of your team, you should also see it as a resource for everyone else in the company. If you ask a developer how they learned to code, most of them will not mention university or this book that they read, most of them will mention ‘code I read that was written by people who have more experience than me.’ So by giving them access to as much code as you can, that will actually make them better coders than if you have them work in a silo.”&lt;&#x2F;p&gt;

&lt;blockquote&gt;
  &lt;p&gt;If you ask a developer how they learned to code, most of them will not mention university or this book that they read, most of them will mention &quot;code I read that was written by people who have more experience than me.&quot;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;

&lt;p&gt;This isn’t just about less experienced developers learning from more experienced developers. Sometimes a fresh perspective from someone who isn’t as close to a project can spark solutions that aren’t apparent when you’ve been deep inside the code for a week. “Like if someone reads code and they ask a question like ‘Hey, what’s the reasoning behind this? I just found your code and I was wondering…’ it enables a conversation.” Douwe explains. “It helps us avoid &lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Not_invented_here&quot;&gt;Not Invented Here syndrome&lt;&#x2F;a&gt;.” Someone from another team might have already done work you require on a previous project of theirs – why not use it on your team? “It’s working together to make all of our code better, because if we use a shared library – even if it’s just a company internal one, like innersourcing – if one person improves it or fixes a bug or increases the functionality of that application, that’s work by one person that will immediately affect all the different teams.”&lt;&#x2F;p&gt;

&lt;h2 id=&quot;7-they-spend-time-on-side-projects&quot;&gt;7. They Spend Time on Side Projects&lt;&#x2F;h2&gt;

&lt;p&gt;“We don’t have explicit &lt;a href=&quot;https:&#x2F;&#x2F;googleblog.blogspot.co.uk&#x2F;2006&#x2F;05&#x2F;googles-20-percent-time-in-action.html&quot;&gt;20 percent time&lt;&#x2F;a&gt;,” says Douwe, “but at GitLab, as we are working on improving the same platform we use to do all our work, our job is to make our own job easier. Which means that even if something is not scheduled for this release, if it’s something that you think you can get done in couple hours, and it would save you more than a couple hours in the future, just do it.”&lt;&#x2F;p&gt;

&lt;p&gt;Sometimes going through the formal process for approving time to work on a new feature just isn’t necessary. “Unless you have something urgent you should be working on, it really helps to ask developers to feel responsible for the product, and also own the product in the sense that they can also suggest new features, and even spearhead the development of them without going through product management for example,” says Douwe.&lt;&#x2F;p&gt;

&lt;h2 id=&quot;8-they-make-code-review-collaborative&quot;&gt;8. They Make Code Review Collaborative&lt;&#x2F;h2&gt;

&lt;p&gt;Having your work reviewed can feel like a personal judgement on whether you’re good enough or not. When code review is about “This is wrong, change it to this,” it can be really demotivating. Douwe explains: “A much better way, even if it seems like something is obviously wrong, would be to ask, ‘What do you think about changing to this&#x2F;Did you consider X, Y, Z&#x2F;I suggest changing it to this, if you think that makes sense.’ The communication there really helps and it also means that people don’t feel review is the time where they as person are being told if their work is good enough, if they are good enough, it’s really just talking about the actual code, the implementation, the best way to solve a problem.” Everyone on a team is free to review each other’s code or to ask for a review, so it becomes about just improving the merge request instead of passing a judgement about that person’s work. “If review feels like something that’s just done by the higher-up people and it’s a time when your code is deemed perfect or not, it might feel kind of scary to review someone’s code, especially if that someone is more experienced than you or has more experience in this area of the application. What really helps with collaboration is having everyone feel free to question each other’s code or question, ‘Is this the best way to go about this?’ without saying ‘This is wrong.’”&lt;&#x2F;p&gt;

&lt;h2 id=&quot;9-theyre-allowed-to-be-creative&quot;&gt;9. They’re Allowed to Be Creative&lt;&#x2F;h2&gt;

&lt;p&gt;Problem solving is what developers do. So if a customer has a request for some feature that they would find useful, it can be helpful to ask the team to solve the problem the customer is experiencing, rather than presenting them with a spec which might not be the optimal solution. “In a lot of cases developers are aware of solutions either that already exist within the codebase or that exist in other people’s codebases because of innersourcing, or they might even have just read about this cool, open source tool, which a product manager might not be aware of,” says Douwe. “So allowing developers to be really critical of the proposal and having product managers not be too rigid in their specs also gives you better code and makes for happier developers.” This can also help you to build features that don’t just address one particular customer’s problem and fix it the way they would like, but rather work on solutions that can be useful to everyone.&lt;&#x2F;p&gt;

&lt;p class=&quot;alert alert-gitlab-orange&quot;&gt;To learn more about what makes development teams successful today, watch our webcast, &quot;&lt;a href=&quot;http:&#x2F;&#x2F;get.gitlab.com&#x2F;managing-devops-culture-shift&#x2F;&quot;&gt;Managing the DevOps Culture Shift&lt;&#x2F;a&gt;&quot; on demand.&lt;&#x2F;p&gt;
&lt;img src=&#x27;https:&#x2F;&#x2F;about.gitlab.com&#x2F;images&#x2F;blogimages&#x2F;attributes-successful-dev-teams.jpg&#x27; class=&#x27;webfeedsFeaturedVisual&#x27; style=&#x27;display: none;&#x27; &#x2F;&gt;</content>
</entry>
<entry>
<title>GitLab Patch Release: 9.2.1</title>
<link href='https://about.gitlab.com/2017/05/23/gitlab-9-dot-2-dot-1-released/' rel='alternate' />
<id>https://about.gitlab.com/2017/05/23/gitlab-9-dot-2-dot-1-released/</id>
<published>2017-05-23T00:00:00+00:00</published>
<updated>2017-05-23T00:00:00+00:00</updated>
<author>
<name>Clement Ho</name>
</author>
<content type='html'>&lt;p&gt;Today we&#x27;re releasing version 9.2.1 for GitLab Community Edition (CE) and
Enterprise Edition (EE).&lt;&#x2F;p&gt;

&lt;p&gt;This version resolves a number of regressions and bugs in &lt;a href=&quot;&#x2F;2017&#x2F;05&#x2F;22&#x2F;gitlab-9-2-released&quot;&gt;this month&#x27;s 9.2 release&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;

&lt;p&gt;Please read on for more details.&lt;&#x2F;p&gt;



&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;CE&#x2F;EE:&lt;&#x2F;strong&gt; MR widget styling fixes (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;merge_requests&#x2F;11591&quot;&gt;!11591&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;CE&#x2F;EE:&lt;&#x2F;strong&gt; Adds &quot;comments on snippets&quot; to doc (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;merge_requests&#x2F;11563&quot;&gt;!11563&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;CE&#x2F;EE:&lt;&#x2F;strong&gt; Add to docs: issues multiple assignees (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;merge_requests&#x2F;11556&quot;&gt;!11556&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;CE&#x2F;EE:&lt;&#x2F;strong&gt; Fix jQuery data attribute caching issue causing expanding issues (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;merge_requests&#x2F;11609&quot;&gt;!11609&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;CE&#x2F;EE:&lt;&#x2F;strong&gt; Fix placement of note emoji on hover (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;merge_requests&#x2F;11605&quot;&gt;!11605&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;CE&#x2F;EE:&lt;&#x2F;strong&gt; Change pipelines schedules help page path (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;merge_requests&#x2F;11592&quot;&gt;!11592&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;CE&#x2F;EE:&lt;&#x2F;strong&gt; Move environment monitoring to environments doc (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;merge_requests&#x2F;11583&quot;&gt;!11583&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;CE&#x2F;EE:&lt;&#x2F;strong&gt; Fix spacing of issue emojis (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;merge_requests&#x2F;11567&quot;&gt;!11567&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;CE&#x2F;EE:&lt;&#x2F;strong&gt; Add docs for change of Cache&#x2F;Artifact restore order&quot; (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;merge_requests&#x2F;11545&quot;&gt;!11545&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;CE&#x2F;EE:&lt;&#x2F;strong&gt; Add note about artifacts previewing in docs (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;merge_requests&#x2F;11539&quot;&gt;!11539&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;CE&#x2F;EE:&lt;&#x2F;strong&gt; Auto update docs (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;merge_requests&#x2F;11552&quot;&gt;!11552&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;CE&#x2F;EE:&lt;&#x2F;strong&gt; New doc topic: issues (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;merge_requests&#x2F;11075&quot;&gt;!11075&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;CE&#x2F;EE:&lt;&#x2F;strong&gt; Fix migrations for older PostgreSQL versions (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;merge_requests&#x2F;11620&quot;&gt;!11620&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;CE&#x2F;EE:&lt;&#x2F;strong&gt; Add missing regex to backup manager (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;merge_requests&#x2F;11635&quot;&gt;!11635&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;EE:&lt;&#x2F;strong&gt; Fix the elasticsearch advanced search syntax link and edition details (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ee&#x2F;merge_requests&#x2F;1958&quot;&gt;!1958&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;EE:&lt;&#x2F;strong&gt; Fix &quot;Remove your approval&quot; button visibility for merged MRs (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ee&#x2F;merge_requests&#x2F;1936&quot;&gt;!1936&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;EE:&lt;&#x2F;strong&gt; Refactor advanced search syntax docs (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ee&#x2F;merge_requests&#x2F;1953&quot;&gt;!1953&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;EE:&lt;&#x2F;strong&gt; Remove redundant documented steps for Geo Setup (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ee&#x2F;merge_requests&#x2F;1737&quot;&gt;!1737&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;Omnibus:&lt;&#x2F;strong&gt; Mattermost: Fix config.json template for sql_data_source_search_replicas (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;omnibus-gitlab&#x2F;merge_requests&#x2F;1575&quot;&gt;!1575&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;Omnibus:&lt;&#x2F;strong&gt; Disable proxy_request_buffering for LFS endpoints (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;omnibus-gitlab&#x2F;merge_requests&#x2F;1569&quot;&gt;!1569&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;Omnibus:&lt;&#x2F;strong&gt; Splitting postgresql.conf into two separate configuration files (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;omnibus-gitlab&#x2F;merge_requests&#x2F;1555&quot;&gt;!1555&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;Omnibus:&lt;&#x2F;strong&gt; Fix sshd startup errors upon a full Docker restart (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;omnibus-gitlab&#x2F;merge_requests&#x2F;1577&quot;&gt;!1577&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;

&lt;h2 id=&quot;upgrade-barometer&quot;&gt;Upgrade barometer&lt;&#x2F;h2&gt;

&lt;p&gt;These versions have no migrations and should not require any downtime.&lt;&#x2F;p&gt;

&lt;p&gt;Please be aware that by default the Omnibus packages will stop, run migrations,
and start again, no matter how “big” or “small” the upgrade is. This behavior
can be changed by adding a &lt;a href=&quot;http:&#x2F;&#x2F;doc.gitlab.com&#x2F;omnibus&#x2F;update&#x2F;README.html&quot;&gt;&lt;code&gt;&#x2F;etc&#x2F;gitlab&#x2F;skip-auto-migrations&lt;&#x2F;code&gt;
file&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;

&lt;h2 id=&quot;updating&quot;&gt;Updating&lt;&#x2F;h2&gt;

&lt;p&gt;To update, check out our &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;update&#x2F;&quot;&gt;update page&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;

&lt;h2 id=&quot;enterprise-edition&quot;&gt;Enterprise Edition&lt;&#x2F;h2&gt;

&lt;p&gt;Interested in GitLab Enterprise Edition? Check out the &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;gitlab-ee&#x2F;&quot;&gt;features exclusive to
EE&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;

&lt;p&gt;Access to GitLab Enterprise Edition is granted by a &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;products&#x2F;&quot;&gt;subscription&lt;&#x2F;a&gt;.
No time to upgrade GitLab yourself? Subscribers receive upgrade and installation
services.&lt;&#x2F;p&gt;
&lt;img src=&#x27;https:&#x2F;&#x2F;about.gitlab.com&#x2F;images&#x2F;default-blog-image.png&#x27; class=&#x27;webfeedsFeaturedVisual&#x27; style=&#x27;display: none;&#x27; &#x2F;&gt;</content>
</entry>
<entry>
<title>GitLab 9.2 Released with Multiple Assignees For Issues and Pipeline Schedules</title>
<link href='https://about.gitlab.com/2017/05/22/gitlab-9-2-released/' rel='alternate' />
<id>https://about.gitlab.com/2017/05/22/gitlab-9-2-released/</id>
<published>2017-05-22T00:00:00+00:00</published>
<updated>2017-05-22T00:00:00+00:00</updated>
<author>
<name>Joshua Lambert</name>
</author>
<content type='html'>
&lt;p&gt;GitLab is designed to allow everyone to contribute whether their teams are large or small, remote or in a single room.&lt;&#x2F;p&gt;

&lt;p&gt;As a new feature or product is moving from idea to production, often multiple people work on the same issue together. For example, it is not uncommon to have a front end developer, backend developer, UX designer, QA tester, and product manager teaming together to bring an idea to market. With 9.2, GitLab introduces &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;2017&#x2F;05&#x2F;22&#x2F;gitlab-9-2-released&#x2F;#multiple-assignees-for-issues&quot;&gt;Multiple Assignees for Issues&lt;&#x2F;a&gt; to streamline collaboration and allow these shared responsibilities to be clearly displayed. All assignees are shown across our workflows and receive notifications as they would before, simplifying communication and ownership.&lt;&#x2F;p&gt;



&lt;p&gt;GitLab 9.2 also lays the foundation for the localization of GitLab, with Cycle Analytics &lt;a href=&quot;#internationalized-cycle-analytics&quot;&gt;now available in Spanish and German&lt;&#x2F;a&gt; languages. In future releases we will continue to localize additional workflows within GitLab, to ensure that everyone can contribute regardless of their native language.&lt;&#x2F;p&gt;

&lt;p&gt;Developers also have additional control over when their CI&#x2F;CD Pipelines execute. We have added the ability to &lt;a href=&quot;#pipeline-schedules&quot;&gt;configure pipelines to run on a specific schedule&lt;&#x2F;a&gt; automating repetitive tasks like the creation of nightly builds, maintenance, or validation of external dependencies.&lt;&#x2F;p&gt;
&lt;img src=&#x27;https:&#x2F;&#x2F;about.gitlab.com&#x2F;images&#x2F;9_2&#x2F;9_2-cover-image.jpg&#x27; class=&#x27;webfeedsFeaturedVisual&#x27; style=&#x27;display: none;&#x27; &#x2F;&gt;
&lt;!-- MVP --&gt;
&lt;section class=&#x27;mvp gray-section&#x27; id=&#x27;mvp&#x27;&gt;
&lt;div class=&#x27;release-post-section&#x27;&gt;
&lt;img alt=&#x27;GitLab MVP badge&#x27; src=&#x27;&#x2F;images&#x2F;mvp_badge.png&#x27; &#x2F;&gt;
&lt;h2 id=&#x27;mvp&#x27;&gt;
&lt;a class=&#x27;header-link&#x27; href=&#x27;#mvp&#x27;&gt;&lt;&#x2F;a&gt;
This month&#x27;s Most Valuable Person
&lt;a href=&#x27;&#x2F;mvp&#x2F;&#x27;&gt;MVP&lt;&#x2F;a&gt;
is
&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;dosuken123&quot;&gt;Dosuken Shinya&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Dosuken extended our &lt;a href=&quot;http:&#x2F;&#x2F;docs.gitlab.com&#x2F;ce&#x2F;api&#x2F;pipelines.html#list-project-pipelines&quot;&gt;Pipelines API&lt;&#x2F;a&gt; by &lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;merge_requests&#x2F;9367&quot;&gt;adding additional search attributes&lt;&#x2F;a&gt;. This is a huge improvement to our CI API, for example enabling queries to easily return the latest pipeline for a specific branch, as well as a host of other possibilities. Dosuken also made a great contribution last release, laying the foundation for &lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;merge_requests&#x2F;10133&quot;&gt;scheduled pipelines&lt;&#x2F;a&gt;. Thanks Dosuken!&lt;&#x2F;p&gt;

&lt;&#x2F;div&gt;
&lt;&#x2F;section&gt;
&lt;!-- top feature --&gt;
&lt;section class=&#x27;release-post-section&#x27; id=&#x27;top-feature&#x27;&gt;
&lt;h2 id=&#x27;multiple-assignees-for-issues&#x27;&gt;
&lt;a class=&#x27;header-link&#x27; href=&#x27;#multiple-assignees-for-issues&#x27;&gt;&lt;&#x2F;a&gt;
Multiple Assignees for Issues
&lt;div class=&#x27;badge-container&#x27;&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Starter&#x27;&gt;
&lt;span class=&#x27;ees&#x27;&gt;
ees
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Premium&#x27;&gt;
&lt;span class=&#x27;eep&#x27;&gt;
eep
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;On GitLab, it is not uncommon to have issues that require the collaboration of multiple individuals.
In the past it could be difficult to track the shared ownership of an issue, especially in organizations
where the issue’s contributors may not work together day to day. With this release, GitLab enables you to assign
as many users as you want to a given issue. Every one of those assignees are first
class citizens, and receive the same notifications as before. With this change,
you can see multiple assignees in the issue list and on issue boards, and the
assignees will all be able to track their association with the issue in their dashboard.&lt;&#x2F;p&gt;
&lt;p&gt;Note that as part of this change, the &lt;code&gt;assignee_id&lt;&#x2F;code&gt; parameter
in the &lt;a href=&quot;https:&#x2F;&#x2F;docs.gitlab.com&#x2F;ee&#x2F;api&#x2F;issues.html&quot;&gt;issues API&lt;&#x2F;a&gt;
has been deprecated. The &lt;code&gt;assignee_ids&lt;&#x2F;code&gt; should be used instead.
Also, the &lt;code&gt;assignee&lt;&#x2F;code&gt; object in the JSON response has been deprecated.
The &lt;code&gt;assignees&lt;&#x2F;code&gt; array should be used instead.
&lt;p&gt;&lt;img src=&quot;&#x2F;images&#x2F;9_2&#x2F;multiple_assignees_for_issues.png&quot; alt=&quot;Multiple Assignees For Issues&quot; class=&quot;shadow&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;&lt;&#x2F;p&gt;

&lt;p&gt;
&lt;i class=&#x27;fa fa-book&#x27;&gt;&lt;&#x2F;i&gt;
&lt;a href=&#x27;https:&#x2F;&#x2F;docs.gitlab.com&#x2F;ee&#x2F;user&#x2F;project&#x2F;issues&#x2F;issues_functionalities.html#3-1-multiple-assignees-ees-eep&#x27; target=&#x27;_blank&#x27;&gt;
Learn more about multiple assignees for issues
&lt;&#x2F;a&gt;
&lt;&#x2F;p&gt;
&lt;&#x2F;section&gt;
&lt;!-- primary features --&gt;
&lt;section id=&#x27;primary-features&#x27;&gt;
&lt;hr &#x2F;&gt;
&lt;div class=&#x27;release-row&#x27;&gt;
&lt;div class=&#x27;column&#x27;&gt;
&lt;h2 id=&#x27;internationalized-cycle-analytics&#x27;&gt;
&lt;a class=&#x27;header-link&#x27; href=&#x27;#internationalized-cycle-analytics&#x27;&gt;&lt;&#x2F;a&gt;
Internationalized Cycle Analytics
&lt;div class=&#x27;badge-container&#x27;&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Community Edition&#x27;&gt;
&lt;span class=&#x27;ce&#x27;&gt;
ce
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Starter&#x27;&gt;
&lt;span class=&#x27;ees&#x27;&gt;
ees
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Premium&#x27;&gt;
&lt;span class=&#x27;eep&#x27;&gt;
eep
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Hola Mundo, Hallo Welt! We are incredibly excited to announce the start of
our journey to internationalise GitLab and would love your support to make
this happen as broadly and quickly as possible.&lt;&#x2F;p&gt;
&lt;p&gt;Starting in 9.2, we have added the framework and infrastructure to translate
GitLab into any language. To validate our technology decisions, we&#x27;ve only
translated a single page (Cycle Analytics) into Spanish and German. In 9.3
and subsequent releases, we will continue to add more languages and more
pages. If you want to help out, please take a look at our
&lt;a href=&quot;https:&#x2F;&#x2F;docs.gitlab.com&#x2F;ce&#x2F;development&#x2F;i18n_guide.html&quot;&gt;contributor Guidelines&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;To change your language, visit your Settings page by clicking on yourself in the top right corner.&lt;&#x2F;p&gt;

&lt;p&gt;
&lt;i class=&#x27;fa fa-book&#x27;&gt;&lt;&#x2F;i&gt;
&lt;a href=&#x27;&#x2F;features&#x2F;cycle-analytics&#x27; target=&#x27;_blank&#x27;&gt;
Learn more about Cycle Analytics
&lt;&#x2F;a&gt;
&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div class=&#x27;column&#x27;&gt;
&lt;img alt=&#x27;Internationalized Cycle Analytics&#x27; class=&#x27;shadow&#x27; src=&#x27;&#x2F;images&#x2F;9_2&#x2F;i18n.png&#x27; &#x2F;&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;div&gt;
&lt;hr &#x2F;&gt;
&lt;div class=&#x27;release-row image-left&#x27;&gt;
&lt;div class=&#x27;column text-column&#x27;&gt;
&lt;h2 id=&#x27;pipeline-schedules&#x27;&gt;
&lt;a class=&#x27;header-link&#x27; href=&#x27;#pipeline-schedules&#x27;&gt;&lt;&#x2F;a&gt;
Pipeline Schedules
&lt;div class=&#x27;badge-container&#x27;&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Community Edition&#x27;&gt;
&lt;span class=&#x27;ce&#x27;&gt;
ce
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Starter&#x27;&gt;
&lt;span class=&#x27;ees&#x27;&gt;
ees
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Premium&#x27;&gt;
&lt;span class=&#x27;eep&#x27;&gt;
eep
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;For most projects, developers want to have their GitLab CI&#x2F;CD pipelines
executed for every new commit, ensuring any changes are built, tested and
deployed. In some cases however, a developer needs extra control and
would instead like a pipeline to execute on a specific schedule.&lt;&#x2F;p&gt;
&lt;p&gt;Today with GitLab 9.2, pipelines can now be configured to run
&lt;a href=&quot;https:&#x2F;&#x2F;docs.gitlab.com&#x2F;ce&#x2F;user&#x2F;project&#x2F;pipelines&#x2F;schedules.html&quot;&gt;when and how often you need them to&lt;&#x2F;a&gt;.
Generating daily or weekly builds, performing maintenance, or even
validating external dependencies can be easily configured to run on your schedule.
&lt;p&gt;This replaces the alpha UI for &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;2017&#x2F;04&#x2F;22&#x2F;gitlab-9-1-released&#x2F;#scheduled-pipelines-triggers-ce-ees-eep&quot;&gt;
Scheduled Pipelines Triggers&lt;&#x2F;a&gt;.
&lt;&#x2F;p&gt;&lt;&#x2F;p&gt;

&lt;p&gt;
&lt;i class=&#x27;fa fa-book&#x27;&gt;&lt;&#x2F;i&gt;
&lt;a href=&#x27;https:&#x2F;&#x2F;docs.gitlab.com&#x2F;ce&#x2F;user&#x2F;project&#x2F;pipelines&#x2F;schedules.html&#x27; target=&#x27;_blank&#x27;&gt;
Learn more about scheduling pipelines
&lt;&#x2F;a&gt;
&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div class=&#x27;column image-column&#x27;&gt;
&lt;img alt=&#x27;Pipeline Schedules&#x27; class=&#x27;shadow&#x27; src=&#x27;&#x2F;images&#x2F;9_2&#x2F;scheduled_pipelines.png&#x27; &#x2F;&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;div&gt;
&lt;hr &#x2F;&gt;
&lt;div class=&#x27;release-row&#x27;&gt;
&lt;div class=&#x27;column&#x27;&gt;
&lt;h2 id=&#x27;official-gitlab-installation-on-kubernetes&#x27;&gt;
&lt;a class=&#x27;header-link&#x27; href=&#x27;#official-gitlab-installation-on-kubernetes&#x27;&gt;&lt;&#x2F;a&gt;
Official GitLab installation on Kubernetes
&lt;div class=&#x27;badge-container&#x27;&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Community Edition&#x27;&gt;
&lt;span class=&#x27;ce&#x27;&gt;
ce
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Starter&#x27;&gt;
&lt;span class=&#x27;ees&#x27;&gt;
ees
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Premium&#x27;&gt;
&lt;span class=&#x27;eep&#x27;&gt;
eep
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;We want to make GitLab the best cloud native development tool, so making it easy to get started on &lt;a href=&quot;https:&#x2F;&#x2F;kubernetes.io&#x2F;&quot;&gt;Kubernetes&lt;&#x2F;a&gt; is important.
With GitLab 9.2, we are proud to announce that we have released &lt;a href=&quot;http:&#x2F;&#x2F;docs.gitlab.com&#x2F;ce&#x2F;install&#x2F;kubernetes&#x2F;&quot;&gt;official GitLab Helm charts&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;helm.sh&#x2F;&quot;&gt;Helm&lt;&#x2F;a&gt; is the official Kubernetes package management tool allowing users to easily deploy, upgrade, and configure apps in their clusters.
GitLab and Kubernetes go great together with easy autoscaling CI, app autodeployments to your clusters and everything else shown in the &lt;a href=&quot;https:&#x2F;&#x2F;youtu.be&#x2F;PoBaY_rqeKA&quot; target=&quot;_blank&quot;&gt;Idea to Production video&lt;&#x2F;a&gt; - out of the box, minimal setup!
&lt;&#x2F;p&gt;

&lt;p&gt;
&lt;i class=&#x27;fa fa-book&#x27;&gt;&lt;&#x2F;i&gt;
&lt;a href=&#x27;http:&#x2F;&#x2F;docs.gitlab.com&#x2F;ce&#x2F;install&#x2F;kubernetes&#x2F;&#x27; target=&#x27;_blank&#x27;&gt;
Learn more on installing GitLab using our Helm charts
&lt;&#x2F;a&gt;
&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div class=&#x27;column&#x27;&gt;
&lt;img alt=&#x27;Official GitLab installation on Kubernetes&#x27; class=&#x27;shadow&#x27; src=&#x27;&#x2F;images&#x2F;9_2&#x2F;helm_install.png&#x27; &#x2F;&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;div&gt;
&lt;hr &#x2F;&gt;
&lt;div class=&#x27;release-row image-left&#x27;&gt;
&lt;div class=&#x27;column text-column&#x27;&gt;
&lt;h2 id=&#x27;app-performance-feedback-on-merge-requests&#x27;&gt;
&lt;a class=&#x27;header-link&#x27; href=&#x27;#app-performance-feedback-on-merge-requests&#x27;&gt;&lt;&#x2F;a&gt;
App Performance Feedback on Merge Requests
&lt;div class=&#x27;badge-container&#x27;&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Community Edition&#x27;&gt;
&lt;span class=&#x27;ce&#x27;&gt;
ce
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Starter&#x27;&gt;
&lt;span class=&#x27;ees&#x27;&gt;
ees
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Premium&#x27;&gt;
&lt;span class=&#x27;eep&#x27;&gt;
eep
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;For most companies, determining the performance impact of a specific
merge can be a challenge. Often performance data is contained within a
separate tool, which the development team may not even have access to.
At GitLab we want to make sure developers get feedback on every change
they ship, and we are taking a big step forward today with our Prometheus integration.&lt;&#x2F;p&gt;
&lt;p&gt;With GitLab 9.2, we now automatically
display the change in memory consumption after a deploy directly on
its merge request. This allows the developer to quickly and easily determine
if there are any performance changes and investigate as soon as possible,
all within their usual daily workflow. In future releases, we will &lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;issues&#x2F;30434&quot;&gt;analyze additional metrics&lt;&#x2F;a&gt; as well. Building responsive and delightful apps is everyone&#x27;s responsibility!
&lt;&#x2F;p&gt;

&lt;p&gt;
&lt;i class=&#x27;fa fa-book&#x27;&gt;&lt;&#x2F;i&gt;
&lt;a href=&#x27;https:&#x2F;&#x2F;docs.gitlab.com&#x2F;ce&#x2F;user&#x2F;project&#x2F;integrations&#x2F;prometheus.html#determining-the-performance-impact-of-a-merge&#x27; target=&#x27;_blank&#x27;&gt;
Learn more on how the deployment memory usage on merge requests works
&lt;&#x2F;a&gt;
&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div class=&#x27;column image-column&#x27;&gt;
&lt;img alt=&#x27;App Performance Feedback on Merge Requests&#x27; class=&#x27;shadow&#x27; src=&#x27;&#x2F;images&#x2F;9_2&#x2F;mr_memory.png&#x27; &#x2F;&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;div&gt;
&lt;hr &#x2F;&gt;
&lt;div class=&#x27;release-row&#x27;&gt;
&lt;div class=&#x27;column&#x27;&gt;
&lt;h2 id=&#x27;disaster-recovery-alpha-improvements&#x27;&gt;
&lt;a class=&#x27;header-link&#x27; href=&#x27;#disaster-recovery-alpha-improvements&#x27;&gt;&lt;&#x2F;a&gt;
Disaster Recovery Alpha Improvements
&lt;div class=&#x27;badge-container&#x27;&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Premium&#x27;&gt;
&lt;span class=&#x27;eep&#x27;&gt;
eep
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Since version 9.0, GitLab ships with support for Disaster
Recovery in Alpha as part of GitLab Geo. We are committed to making
Disaster Recovery better on every release, and GitLab 9.2 is no
exception. Today we are improving the UX of the Disaster Recovery
feature, with more obvious controls and more reporting on what’s
going on during the replication process.&lt;&#x2F;p&gt;
&lt;p&gt;Finally, we had also made improvements to the repositories
synchronization mechanism, and now it is smart enough to resync
broken repositories due to a failed sync or repositories that
have been recently updated on the primary node but have been
synced some time ago on the secondaries.
&lt;&#x2F;p&gt;

&lt;p&gt;
&lt;i class=&#x27;fa fa-book&#x27;&gt;&lt;&#x2F;i&gt;
&lt;a href=&#x27;https:&#x2F;&#x2F;docs.gitlab.com&#x2F;ee&#x2F;gitlab-geo&#x2F;&#x27; target=&#x27;_blank&#x27;&gt;
Learn more about GitLab Geo
&lt;&#x2F;a&gt;
&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div class=&#x27;column&#x27;&gt;
&lt;img alt=&#x27;Disaster Recovery Alpha Improvements&#x27; class=&#x27;shadow&#x27; src=&#x27;&#x2F;images&#x2F;9_2&#x2F;geo_disaster_recovery_ui.png&#x27; &#x2F;&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;div&gt;
&lt;hr &#x2F;&gt;
&lt;div class=&#x27;release-row image-left&#x27;&gt;
&lt;div class=&#x27;column text-column&#x27;&gt;
&lt;h2 id=&#x27;auto-refresh-on-issue-titles-and-descriptions&#x27;&gt;
&lt;a class=&#x27;header-link&#x27; href=&#x27;#auto-refresh-on-issue-titles-and-descriptions&#x27;&gt;&lt;&#x2F;a&gt;
Auto-Refresh on Issue Titles and Descriptions
&lt;div class=&#x27;badge-container&#x27;&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Community Edition&#x27;&gt;
&lt;span class=&#x27;ce&#x27;&gt;
ce
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Starter&#x27;&gt;
&lt;span class=&#x27;ees&#x27;&gt;
ees
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Premium&#x27;&gt;
&lt;span class=&#x27;eep&#x27;&gt;
eep
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;The issue page in GitLab is a key area of collaboration, with you and
your team constantly editing content. When viewing an issue page, the title and description
now refresh automatically (in response to someone else changing it) to keep up with your workflows.
The issue page itself doesn’t reload. So you can simply leave a browser tab open to an issue you are 
interested in, and you’ll always be seeing the latest information. Even the browser tab title
refreshes by itself.&lt;&#x2F;p&gt;
&lt;p&gt;We&#x27;ve also added a system note when an issue description is edited, so
you can always scroll through the comment thread and see who made
any changes, and when. Even adding comments now feels more responsive.
And if you edit an existing comment, that comment will also be
automatically refreshed on any other user&#x27;s screen who happens to have the
same issue open.
&lt;&#x2F;p&gt;

&lt;p&gt;
&lt;i class=&#x27;fa fa-book&#x27;&gt;&lt;&#x2F;i&gt;
&lt;a href=&#x27;https:&#x2F;&#x2F;docs.gitlab.com&#x2F;ce&#x2F;user&#x2F;project&#x2F;issues&#x2F;issues_functionalities.html&#x27; target=&#x27;_blank&#x27;&gt;
Learn more about issues on GitLab
&lt;&#x2F;a&gt;
&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div class=&#x27;column image-column&#x27;&gt;
&lt;img alt=&#x27;Auto-Refresh on Issue Titles and Descriptions&#x27; class=&#x27;shadow&#x27; src=&#x27;&#x2F;images&#x2F;9_2&#x2F;auto_updates_issue_page.gif&#x27; &#x2F;&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;div&gt;
&lt;hr &#x2F;&gt;
&lt;div class=&#x27;release-row&#x27;&gt;
&lt;div class=&#x27;column&#x27;&gt;
&lt;h2 id=&#x27;remove-filter-in-search-bar&#x27;&gt;
&lt;a class=&#x27;header-link&#x27; href=&#x27;#remove-filter-in-search-bar&#x27;&gt;&lt;&#x2F;a&gt;
Remove Filter in Search Bar
&lt;div class=&#x27;badge-container&#x27;&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Community Edition&#x27;&gt;
&lt;span class=&#x27;ce&#x27;&gt;
ce
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Starter&#x27;&gt;
&lt;span class=&#x27;ees&#x27;&gt;
ees
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Premium&#x27;&gt;
&lt;span class=&#x27;eep&#x27;&gt;
eep
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;You can now easily remove filters in the search bar for issues and merge
requests with a simple mouse click.&lt;&#x2F;p&gt;

&lt;p&gt;We&#x27;ve also styled the labels within the filter bar to match the colors they have elsewhere.
&lt;&#x2F;p&gt;

&lt;p&gt;
&lt;i class=&#x27;fa fa-book&#x27;&gt;&lt;&#x2F;i&gt;
&lt;a href=&#x27;https:&#x2F;&#x2F;docs.gitlab.com&#x2F;ee&#x2F;user&#x2F;search&#x2F;#issues-and-merge-requests-per-project&#x27; target=&#x27;_blank&#x27;&gt;
Learn more about searching issues and merge requests
&lt;&#x2F;a&gt;
&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div class=&#x27;column&#x27;&gt;
&lt;img alt=&#x27;Remove Filter in Search Bar&#x27; class=&#x27;shadow&#x27; src=&#x27;&#x2F;images&#x2F;9_2&#x2F;remove_filter.png&#x27; &#x2F;&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;div&gt;
&lt;hr &#x2F;&gt;
&lt;div class=&#x27;release-row image-left&#x27;&gt;
&lt;div class=&#x27;column text-column&#x27;&gt;
&lt;h2 id=&#x27;advanced-search-with-elasticsearch&#x27;&gt;
&lt;a class=&#x27;header-link&#x27; href=&#x27;#advanced-search-with-elasticsearch&#x27;&gt;&lt;&#x2F;a&gt;
Advanced search with Elasticsearch
&lt;div class=&#x27;badge-container&#x27;&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Starter&#x27;&gt;
&lt;span class=&#x27;ees&#x27;&gt;
ees
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Premium&#x27;&gt;
&lt;span class=&#x27;eep&#x27;&gt;
eep
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;We are bringing more advanced search capabilities leveraging Elasticsearch integration.
Provided you have configured Elasticsearch, you can search for exact phrases using
double quotes, search for content ignoring the order of search terms, match partial
words, and other syntax. (Note that this applies to the search box in the top right
corner throughout GitLab, and not the search bar inside issue lists and merge request lists.)&lt;&#x2F;p&gt;

&lt;p&gt;You can now also search globally across all wikis in your instance, again requiring
and powered by Elasticsearch.
&lt;&#x2F;p&gt;

&lt;p&gt;
&lt;i class=&#x27;fa fa-book&#x27;&gt;&lt;&#x2F;i&gt;
&lt;a href=&#x27;https:&#x2F;&#x2F;docs.gitlab.com&#x2F;ee&#x2F;user&#x2F;search&#x2F;advanced_search_syntax.html&#x27; target=&#x27;_blank&#x27;&gt;
Learn more about advanced search with Elasticsearch
&lt;&#x2F;a&gt;
&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div class=&#x27;column image-column&#x27;&gt;
&lt;img alt=&#x27;Advanced search with Elasticsearch&#x27; class=&#x27;shadow&#x27; src=&#x27;&#x2F;images&#x2F;9_2&#x2F;elasticsearch.png&#x27; &#x2F;&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;section&gt;
&lt;!-- secondary features --&gt;
&lt;section id=&#x27;secodary-features&#x27;&gt;
&lt;div class=&#x27;release-post-section text-center zero-bottom-margin&#x27;&gt;
&lt;h2 id=&#x27;other-improvements-in-gitlab&#x27;&gt;
&lt;a class=&#x27;header-link&#x27; href=&#x27;#other-improvements-in-gitlab&#x27;&gt;&lt;&#x2F;a&gt;
Other Improvements in GitLab 9.2
&lt;&#x2F;h2&gt;
&lt;&#x2F;div&gt;
&lt;div class=&#x27;release-row align-top divider&#x27;&gt;
&lt;div class=&#x27;column&#x27;&gt;
&lt;h3 id=&#x27;create-merge-request-from-issue&#x27;&gt;
&lt;a class=&#x27;header-link&#x27; href=&#x27;#create-merge-request-from-issue&#x27;&gt;&lt;&#x2F;a&gt;
Create Merge Request from Issue
&lt;div class=&#x27;badge-container&#x27;&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Community Edition&#x27;&gt;
&lt;span class=&#x27;ce&#x27;&gt;
ce
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Starter&#x27;&gt;
&lt;span class=&#x27;ees&#x27;&gt;
ees
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Premium&#x27;&gt;
&lt;span class=&#x27;eep&#x27;&gt;
eep
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;With each iteration of GitLab, we strive to make going from idea
to production faster and smoother.&lt;&#x2F;p&gt;

&lt;p&gt;This new small tweak allows you create a merge request
right from the issue page, with GitLab creating the associated
branch automatically in the background for you. It&#x27;s especially
useful when you want to make simple code commits right inside GitLab.
&lt;&#x2F;p&gt;

&lt;img alt=&#x27;Create Merge Request from Issue&#x27; class=&#x27;shadow&#x27; src=&#x27;&#x2F;images&#x2F;9_2&#x2F;create_new_merge_request.png&#x27; &#x2F;&gt;
&lt;p&gt;
&lt;i class=&#x27;fa fa-book&#x27;&gt;&lt;&#x2F;i&gt;
&lt;a href=&#x27;https:&#x2F;&#x2F;docs.gitlab.com&#x2F;ce&#x2F;user&#x2F;project&#x2F;issues&#x2F;issues_functionalities.html#18-new-merge-request&#x27; target=&#x27;_blank&#x27;&gt;
Learn more on how to create a merge request from an issue
&lt;&#x2F;a&gt;
&lt;&#x2F;p&gt;
&lt;h3 id=&#x27;comments-for-personal-snippets&#x27;&gt;
&lt;a class=&#x27;header-link&#x27; href=&#x27;#comments-for-personal-snippets&#x27;&gt;&lt;&#x2F;a&gt;
Comments for Personal Snippets
&lt;div class=&#x27;badge-container&#x27;&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Community Edition&#x27;&gt;
&lt;span class=&#x27;ce&#x27;&gt;
ce
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Starter&#x27;&gt;
&lt;span class=&#x27;ees&#x27;&gt;
ees
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Premium&#x27;&gt;
&lt;span class=&#x27;eep&#x27;&gt;
eep
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;Collaboration often happens in snippets, even personal snippets. With this
release, you now have a comment thread for each personal snippet, just like project snippets.&lt;&#x2F;p&gt;

&lt;p&gt;
&lt;i class=&#x27;fa fa-book&#x27;&gt;&lt;&#x2F;i&gt;
&lt;a href=&#x27;https:&#x2F;&#x2F;docs.gitlab.com&#x2F;ce&#x2F;user&#x2F;snippets.html#comments&#x27; target=&#x27;_blank&#x27;&gt;
Learn more about snippets
&lt;&#x2F;a&gt;
&lt;&#x2F;p&gt;
&lt;h3 id=&#x27;rendered-code-preview&#x27;&gt;
&lt;a class=&#x27;header-link&#x27; href=&#x27;#rendered-code-preview&#x27;&gt;&lt;&#x2F;a&gt;
Rendered Code Preview
&lt;div class=&#x27;badge-container&#x27;&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Community Edition&#x27;&gt;
&lt;span class=&#x27;ce&#x27;&gt;
ce
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Starter&#x27;&gt;
&lt;span class=&#x27;ees&#x27;&gt;
ees
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Premium&#x27;&gt;
&lt;span class=&#x27;eep&#x27;&gt;
eep
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;Many files, such as SVG &amp;amp; Markdown are displayed in GitLab’s
file view in their rendered form. Sometimes, it’s much more useful
to see the actual code. We’ve now added a handy little switch on the
file view, which means you can now easily switch between the rendered
preview and the raw code.&lt;&#x2F;p&gt;

&lt;img alt=&#x27;Rendered Code Preview&#x27; src=&#x27;&#x2F;images&#x2F;9_2&#x2F;render_preview.png&#x27; &#x2F;&gt;
&lt;h3 id=&#x27;terraform-support-for-gitlab-runner-on-google-compute-engine&#x27;&gt;
&lt;a class=&#x27;header-link&#x27; href=&#x27;#terraform-support-for-gitlab-runner-on-google-compute-engine&#x27;&gt;&lt;&#x2F;a&gt;
Terraform Support for GitLab Runner on Google Compute Engine
&lt;div class=&#x27;badge-container&#x27;&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Community Edition&#x27;&gt;
&lt;span class=&#x27;ce&#x27;&gt;
ce
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Starter&#x27;&gt;
&lt;span class=&#x27;ees&#x27;&gt;
ees
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Premium&#x27;&gt;
&lt;span class=&#x27;eep&#x27;&gt;
eep
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;As part of GitLab 9.1, we launched support for installing GitLab on GCE via
&lt;a href=&quot;https:&#x2F;&#x2F;www.hashicorp.com&#x2F;&quot;&gt;Hashicorp’s&lt;&#x2F;a&gt; &lt;a href=&quot;https:&#x2F;&#x2F;www.terraform.io&#x2F;&quot;&gt;Terraform&lt;&#x2F;a&gt;.
With 9.2 we are also adding the ability to deploy GitLab Runner as well,
allowing you to complete the idea to production cycle!&lt;&#x2F;p&gt;

&lt;p&gt;
&lt;i class=&#x27;fa fa-book&#x27;&gt;&lt;&#x2F;i&gt;
&lt;a href=&#x27;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-terraform&#x2F;gce&#x27; target=&#x27;_blank&#x27;&gt;
Visit our Terraform project
&lt;&#x2F;a&gt;
&lt;&#x2F;p&gt;
&lt;h3 id=&#x27;job-artifacts-preview-in-ui&#x27;&gt;
&lt;a class=&#x27;header-link&#x27; href=&#x27;#job-artifacts-preview-in-ui&#x27;&gt;&lt;&#x2F;a&gt;
Job Artifacts Preview in UI
&lt;div class=&#x27;badge-container&#x27;&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Community Edition&#x27;&gt;
&lt;span class=&#x27;ce&#x27;&gt;
ce
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Starter&#x27;&gt;
&lt;span class=&#x27;ees&#x27;&gt;
ees
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Premium&#x27;&gt;
&lt;span class=&#x27;eep&#x27;&gt;
eep
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;Artifacts can be files of any kind, and you have access to them by browsing the archive directly from UI.
GitLab 9.2 improves this capability further: now PDFs, images, videos and other formats can be previewed
directly in the job artifacts browser without the need to download them.&lt;&#x2F;p&gt;

&lt;img alt=&#x27;Job Artifacts Preview in UI&#x27; class=&#x27;shadow&#x27; src=&#x27;&#x2F;images&#x2F;9_2&#x2F;artifacts_preview.png&#x27; &#x2F;&gt;
&lt;p&gt;
&lt;i class=&#x27;fa fa-book&#x27;&gt;&lt;&#x2F;i&gt;
&lt;a href=&#x27;https:&#x2F;&#x2F;docs.gitlab.com&#x2F;ee&#x2F;user&#x2F;project&#x2F;pipelines&#x2F;job_artifacts.html#browsing-job-artifacts&#x27; target=&#x27;_blank&#x27;&gt;
Learn more on browsing job artifacts
&lt;&#x2F;a&gt;
&lt;&#x2F;p&gt;
&lt;h3 id=&#x27;handling-of-ambiguous-routes-in-dynamic-paths&#x27;&gt;
&lt;a class=&#x27;header-link&#x27; href=&#x27;#handling-of-ambiguous-routes-in-dynamic-paths&#x27;&gt;&lt;&#x2F;a&gt;
Handling of Ambiguous Routes in Dynamic Paths
&lt;div class=&#x27;badge-container&#x27;&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Community Edition&#x27;&gt;
&lt;span class=&#x27;ce&#x27;&gt;
ce
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Starter&#x27;&gt;
&lt;span class=&#x27;ees&#x27;&gt;
ees
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Premium&#x27;&gt;
&lt;span class=&#x27;eep&#x27;&gt;
eep
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;There are several paths that GitLab uses to access certain features. With the introduction of nested groups these features could become unavailable for projects or groups with names that conflict with these paths. For example: for a project called &#x27;badges&#x27; the build and coverage status badges would become unavailable.
&lt;p&gt;To avoid confusion, it is now no longer possible to create projects or groups with names that could clash with existing GitLab routes.
&lt;p&gt;If you had any projects or groups named like one of these routes, they will have been automatically renamed during the upgrade. A project named &lt;code&gt;badges&lt;&#x2F;code&gt; would be renamed to &lt;code&gt;badges0&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Keep in mind that git-remotes would need to be updated locally as well. That can be done like this:&lt;&#x2F;p&gt;
&lt;pre&gt;&lt;code&gt;git remote set-url origin &amp;lt;git@gitlab.com:the-updated-path&#x2F;the-updated-name.git&amp;gt;
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;The full list of reserved words can be found in the &lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;blob&#x2F;master&#x2F;app&#x2F;validators&#x2F;dynamic_path_validator.rb&quot;&gt;&lt;code&gt;dynamic_path_validator.rb&lt;&#x2F;code&gt; file&lt;&#x2F;a&gt;. The list of existing projects and groups that were renamed in this release can be found in the &lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;blob&#x2F;master&#x2F;db&#x2F;post_migrate&#x2F;20170412174900_rename_reserved_dynamic_paths.rb&quot;&gt;migration&lt;&#x2F;a&gt; that renamed them.&lt;&#x2F;p&gt;
&lt;&#x2F;p&gt;&lt;&#x2F;p&gt;

&lt;p&gt;
&lt;i class=&#x27;fa fa-book&#x27;&gt;&lt;&#x2F;i&gt;
&lt;a href=&#x27;https:&#x2F;&#x2F;docs.gitlab.com&#x2F;ce&#x2F;user&#x2F;group&#x2F;subgroups&#x2F;index.html#creating-a-subgroup&#x27; target=&#x27;_blank&#x27;&gt;
Learn more on creating a subgroup
&lt;&#x2F;a&gt;
&lt;&#x2F;p&gt;
&lt;h3 id=&#x27;deletion-of-branches-after-a-merge-request-is-merged-is-now-on-by-default&#x27;&gt;
&lt;a class=&#x27;header-link&#x27; href=&#x27;#deletion-of-branches-after-a-merge-request-is-merged-is-now-on-by-default&#x27;&gt;&lt;&#x2F;a&gt;
Deletion of branches after a merge request is merged is now on by default
&lt;div class=&#x27;badge-container&#x27;&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Community Edition&#x27;&gt;
&lt;span class=&#x27;ce&#x27;&gt;
ce
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Starter&#x27;&gt;
&lt;span class=&#x27;ees&#x27;&gt;
ees
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Premium&#x27;&gt;
&lt;span class=&#x27;eep&#x27;&gt;
eep
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;Starting with GitLab 9.2, the deletion of the source branch in a merge
request is selected by default. If you want to keep the branch around
even when the merge request is merged, you’ll have to uncheck the option
from the merge request widget before merging.&lt;&#x2F;p&gt;

&lt;img alt=&#x27;Deletion of branches after a merge request is merged is now on by default&#x27; class=&#x27;shadow&#x27; src=&#x27;&#x2F;images&#x2F;9_2&#x2F;branch-deletion.png&#x27; &#x2F;&gt;
&lt;h3 id=&#x27;artifacts-are-restored-after-cache-files-in-ci-jobs&#x27;&gt;
&lt;a class=&#x27;header-link&#x27; href=&#x27;#artifacts-are-restored-after-cache-files-in-ci-jobs&#x27;&gt;&lt;&#x2F;a&gt;
Artifacts are Restored after Cache Files in CI Jobs
&lt;div class=&#x27;badge-container&#x27;&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Community Edition&#x27;&gt;
&lt;span class=&#x27;ce&#x27;&gt;
ce
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Starter&#x27;&gt;
&lt;span class=&#x27;ees&#x27;&gt;
ees
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Premium&#x27;&gt;
&lt;span class=&#x27;eep&#x27;&gt;
eep
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;It may happen that someone, by mistake or by purpose, uses the same path in &lt;code&gt;.gitlab-ci.yml&lt;&#x2F;code&gt; for both &lt;code&gt;cache&lt;&#x2F;code&gt; and &lt;code&gt;artifacts&lt;&#x2F;code&gt; keywords,
and this could cause that a stale cache might inadvertently override artifacts that are used across the pipeline.&lt;&#x2F;p&gt;
&lt;p&gt;Starting with this release, artifacts are always restored after the cache to ensure that even in edge cases you can always rely on them.
&lt;&#x2F;p&gt;

&lt;h3 id=&#x27;omnibus-improvements&#x27;&gt;
&lt;a class=&#x27;header-link&#x27; href=&#x27;#omnibus-improvements&#x27;&gt;&lt;&#x2F;a&gt;
Omnibus Improvements
&lt;div class=&#x27;badge-container&#x27;&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Community Edition&#x27;&gt;
&lt;span class=&#x27;ce&#x27;&gt;
ce
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Starter&#x27;&gt;
&lt;span class=&#x27;ees&#x27;&gt;
ees
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Premium&#x27;&gt;
&lt;span class=&#x27;eep&#x27;&gt;
eep
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;h3&gt;
&lt;h4 id=&quot;gitlab-mattermost-3_9&quot;&gt;GitLab Mattermost 3.9&lt;&#x2F;h4&gt;
&lt;p&gt;GitLab 9.2 includes &lt;a href=&quot;https:&#x2F;&#x2F;about.mattermost.com&#x2F;mattermost-3-9&quot;&gt;Mattermost 3.9&lt;&#x2F;a&gt;, &lt;a href=&quot;https:&#x2F;&#x2F;about.mattermost.com&#x2F;&quot;&gt;an open source Slack-alternative&lt;&#x2F;a&gt;, which adds a new &lt;a href=&quot;https:&#x2F;&#x2F;about.mattermost.com&#x2F;community-applications&#x2F;#privateApps&quot;&gt;integrations directory&lt;&#x2F;a&gt;, Polish support, upgraded desktop apps with spellchecker, and much more.&lt;&#x2F;p&gt;
&lt;p&gt;This version includes &lt;a href=&quot;http:&#x2F;&#x2F;about.mattermost.com&#x2F;security-updates&#x2F;&quot;&gt;security updates&lt;&#x2F;a&gt; and an upgrade is recommended.&lt;&#x2F;p&gt;
&lt;h4 id=&quot;gitlabregistry&quot;&gt;GitLab Registry&lt;&#x2F;h4&gt;
&lt;p&gt;The GitLab Container Registry has been updated from 2.4 to 2.6.1.&lt;&#x2F;p&gt;

&lt;&#x2F;div&gt;
&lt;div class=&#x27;column&#x27;&gt;
&lt;h3 id=&#x27;select-individual-approvers-for-merge-request-approvals&#x27;&gt;
&lt;a class=&#x27;header-link&#x27; href=&#x27;#select-individual-approvers-for-merge-request-approvals&#x27;&gt;&lt;&#x2F;a&gt;
Select Individual Approvers for Merge Request Approvals
&lt;div class=&#x27;badge-container&#x27;&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Starter&#x27;&gt;
&lt;span class=&#x27;ees&#x27;&gt;
ees
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Premium&#x27;&gt;
&lt;span class=&#x27;eep&#x27;&gt;
eep
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;Configuring merge request approvals allows for selecting individual
approvers. The process is even easier, with the search now limited
to project members and users in relevant groups (parent group or groups
with access via a project share) in the project settings and the per
merge request settings, so that you can easily identify relevant users.&lt;&#x2F;p&gt;

&lt;p&gt;
&lt;i class=&#x27;fa fa-book&#x27;&gt;&lt;&#x2F;i&gt;
&lt;a href=&#x27;https:&#x2F;&#x2F;docs.gitlab.com&#x2F;ee&#x2F;user&#x2F;project&#x2F;merge_requests&#x2F;merge_request_approvals.html#selecting-individual-approvers&#x27; target=&#x27;_blank&#x27;&gt;
Learn more on configuring the merge request approvals
&lt;&#x2F;a&gt;
&lt;&#x2F;p&gt;
&lt;h3 id=&#x27;commenting-in-outdated-diffs&#x27;&gt;
&lt;a class=&#x27;header-link&#x27; href=&#x27;#commenting-in-outdated-diffs&#x27;&gt;&lt;&#x2F;a&gt;
Commenting in Outdated Diffs
&lt;div class=&#x27;badge-container&#x27;&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Community Edition&#x27;&gt;
&lt;span class=&#x27;ce&#x27;&gt;
ce
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Starter&#x27;&gt;
&lt;span class=&#x27;ees&#x27;&gt;
ees
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Premium&#x27;&gt;
&lt;span class=&#x27;eep&#x27;&gt;
eep
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;With this release, you can now link directly to an outdated diff
from the merge request discussion thread, allowing you to quickly
refer to older commits during code development, collaboration, and
review. You can even comment in that previous outdated diff as well.&lt;&#x2F;p&gt;

&lt;p&gt;&lt;img class=&quot;shadow&quot; src=&quot;&#x2F;images&#x2F;9_2&#x2F;outdated_diff_link.png&quot; alt=&quot;Outdated diff link&quot; &#x2F;&gt;
&lt;p&gt;&lt;img class=&quot;shadow&quot; src=&quot;&#x2F;images&#x2F;9_2&#x2F;diff_comment.png&quot; alt=&quot;Diff comment&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;&lt;&#x2F;p&gt;

&lt;p&gt;
&lt;i class=&#x27;fa fa-book&#x27;&gt;&lt;&#x2F;i&gt;
&lt;a href=&#x27;https:&#x2F;&#x2F;docs.gitlab.com&#x2F;ce&#x2F;user&#x2F;project&#x2F;merge_requests&#x2F;&#x27; target=&#x27;_blank&#x27;&gt;
Learn more about merge requests
&lt;&#x2F;a&gt;
&lt;&#x2F;p&gt;
&lt;h3 id=&#x27;deploys-shown-on-performance-dashboard&#x27;&gt;
&lt;a class=&#x27;header-link&#x27; href=&#x27;#deploys-shown-on-performance-dashboard&#x27;&gt;&lt;&#x2F;a&gt;
Deploys shown on Performance Dashboard
&lt;div class=&#x27;badge-container&#x27;&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Community Edition&#x27;&gt;
&lt;span class=&#x27;ce&#x27;&gt;
ce
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Starter&#x27;&gt;
&lt;span class=&#x27;ees&#x27;&gt;
ees
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Premium&#x27;&gt;
&lt;span class=&#x27;eep&#x27;&gt;
eep
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;When investigating a change in performance behavior, one of the first questions
asked is always if there have been any changes to the environment. GitLab 9.2
now quickly answers this question by showing all deployments to an environment
directly on the monitoring dashboard. This allows easy correlation between any
changes in performance and a new version of the app, all without leaving GitLab!&lt;&#x2F;p&gt;

&lt;img alt=&#x27;Deploys shown on Performance Dashboard&#x27; class=&#x27;shadow&#x27; src=&#x27;&#x2F;images&#x2F;9_2&#x2F;environment_deploy_tag.png&#x27; &#x2F;&gt;
&lt;p&gt;
&lt;i class=&#x27;fa fa-book&#x27;&gt;&lt;&#x2F;i&gt;
&lt;a href=&#x27;https:&#x2F;&#x2F;docs.gitlab.com&#x2F;ee&#x2F;ci&#x2F;environments.html#monitoring-environments&#x27; target=&#x27;_blank&#x27;&gt;
Learn more on monitoring environments
&lt;&#x2F;a&gt;
&lt;&#x2F;p&gt;
&lt;h3 id=&#x27;manual-actions-respect-protected-branches&#x27;&gt;
&lt;a class=&#x27;header-link&#x27; href=&#x27;#manual-actions-respect-protected-branches&#x27;&gt;&lt;&#x2F;a&gt;
Manual Actions Respect Protected Branches
&lt;div class=&#x27;badge-container&#x27;&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Community Edition&#x27;&gt;
&lt;span class=&#x27;ce&#x27;&gt;
ce
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Starter&#x27;&gt;
&lt;span class=&#x27;ees&#x27;&gt;
ees
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Premium&#x27;&gt;
&lt;span class=&#x27;eep&#x27;&gt;
eep
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;docs.gitlab.com&#x2F;ce&#x2F;ci&#x2F;yaml&#x2F;#manual-actions&quot;&gt;Manual actions&lt;&#x2F;a&gt;
now require the same permissions as a repository write, allowing control over
who can trigger them. For example, triggering a manual deploy job to production
from the master branch can now be restricted to a narrower set of users with
access to commit.&lt;&#x2F;p&gt;

&lt;p&gt;This is a very important item in the list of security enhancements
we&#x27;re bringing into GitLab in order to protect your deployment process,
you can read more in &lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;issues&#x2F;21911&quot;&gt;this issue&lt;&#x2F;a&gt;.
&lt;&#x2F;p&gt;

&lt;h3 id=&#x27;failed-jobs-tab-allows-you-to-access-to-a-summary-of-all-the-failures-quickly&#x27;&gt;
&lt;a class=&#x27;header-link&#x27; href=&#x27;#failed-jobs-tab-allows-you-to-access-to-a-summary-of-all-the-failures-quickly&#x27;&gt;&lt;&#x2F;a&gt;
Failed Jobs Tab allows you to access to a summary of all the failures quickly
&lt;div class=&#x27;badge-container&#x27;&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Community Edition&#x27;&gt;
&lt;span class=&#x27;ce&#x27;&gt;
ce
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Starter&#x27;&gt;
&lt;span class=&#x27;ees&#x27;&gt;
ees
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Premium&#x27;&gt;
&lt;span class=&#x27;eep&#x27;&gt;
eep
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;When you commit new code to a project with continuous integration configured you normally expect to see a green check:
this tells you the pipeline succeeded and everything worked as expected.
In the unfortunate case something went wrong, you might want to know exactly what has failed as quick as possible,
but walking through multiple stages and jobs could be frustrating, expecially if your pipeline is very complex.&lt;&#x2F;p&gt;
&lt;p&gt;GitLab 9.2 introduces a new tab in the Pipeline view: you can now directly go to &lt;code&gt;Failed Jobs&lt;&#x2F;code&gt; and see
the detailed list of jobs that were unsuccessful in one single place, having a big picture of the actual status.
&lt;&#x2F;p&gt;

&lt;img alt=&#x27;Failed Jobs Tab allows you to access to a summary of all the failures quickly&#x27; class=&#x27;shadow&#x27; src=&#x27;&#x2F;images&#x2F;9_2&#x2F;failed_jobs_tab.png&#x27; &#x2F;&gt;
&lt;h3 id=&#x27;usage-ping&#x27;&gt;
&lt;a class=&#x27;header-link&#x27; href=&#x27;#usage-ping&#x27;&gt;&lt;&#x2F;a&gt;
Usage Ping
&lt;div class=&#x27;badge-container&#x27;&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Community Edition&#x27;&gt;
&lt;span class=&#x27;ce&#x27;&gt;
ce
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Starter&#x27;&gt;
&lt;span class=&#x27;ees&#x27;&gt;
ees
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Premium&#x27;&gt;
&lt;span class=&#x27;eep&#x27;&gt;
eep
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;This release contains two changes to the usage ping: you can &lt;a href=&quot;https:&#x2F;&#x2F;docs.gitlab.com&#x2F;ce&#x2F;user&#x2F;admin_area&#x2F;settings&#x2F;usage_statistics.html#deactivate-the-usage-ping&quot;&gt;now opt-out&lt;&#x2F;a&gt; of the usage ping through your configuration in &lt;code&gt;gitlab.rb&lt;&#x2F;code&gt;. This allows you to turn off the usage ping before having started GitLab. You were already able to opt-out through the administration panel and this remains the case.
In addition, we now include the hostname in the usage ping, similar to the &lt;a href=&quot;https:&#x2F;&#x2F;docs.gitlab.com&#x2F;ce&#x2F;user&#x2F;admin_area&#x2F;settings&#x2F;usage_statistics.html#version-check&quot;&gt;version check&lt;&#x2F;a&gt;. For more, see &lt;a href=&quot;https:&#x2F;&#x2F;docs.gitlab.com&#x2F;ce&#x2F;user&#x2F;admin_area&#x2F;settings&#x2F;usage_statistics.html#usage-ping&quot;&gt;the documentation on the usage ping&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;

&lt;p&gt;
&lt;i class=&#x27;fa fa-book&#x27;&gt;&lt;&#x2F;i&gt;
&lt;a href=&#x27;https:&#x2F;&#x2F;docs.gitlab.com&#x2F;ce&#x2F;user&#x2F;admin_area&#x2F;settings&#x2F;usage_statistics.html#usage-ping&#x27; target=&#x27;_blank&#x27;&gt;
Learn more about usage ping
&lt;&#x2F;a&gt;
&lt;&#x2F;p&gt;
&lt;h3 id=&#x27;docker-registry-cleanup-tool&#x27;&gt;
&lt;a class=&#x27;header-link&#x27; href=&#x27;#docker-registry-cleanup-tool&#x27;&gt;&lt;&#x2F;a&gt;
Docker Registry Cleanup Tool
&lt;div class=&#x27;badge-container&#x27;&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Community Edition&#x27;&gt;
&lt;span class=&#x27;ce&#x27;&gt;
ce
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Starter&#x27;&gt;
&lt;span class=&#x27;ees&#x27;&gt;
ees
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Premium&#x27;&gt;
&lt;span class=&#x27;eep&#x27;&gt;
eep
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;We’re glad to announce that an alpha version of our
&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;docker-distribution-pruner&quot;&gt;Docker Container Registry maintenance tool&lt;&#x2F;a&gt;
is available to the public. This tool analyzes the
&lt;a href=&quot;https:&#x2F;&#x2F;docs.gitlab.com&#x2F;ce&#x2F;user&#x2F;project&#x2F;container_registry.html&quot;&gt;container registry&lt;&#x2F;a&gt;
and prunes unreferenced versions of tags, manifests, and layers to reclaim storage space.&lt;&#x2F;p&gt;
&lt;p&gt;If you&#x27;re enthusiastic to experiment with how it works,
you&#x27;re encouraged to test it out and report your feedback!
&lt;&#x2F;p&gt;

&lt;h3 id=&#x27;gitlab-runner-9.2&#x27;&gt;
&lt;a class=&#x27;header-link&#x27; href=&#x27;#gitlab-runner-9.2&#x27;&gt;&lt;&#x2F;a&gt;
GitLab Runner 9.2
&lt;div class=&#x27;badge-container&#x27;&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Community Edition&#x27;&gt;
&lt;span class=&#x27;ce&#x27;&gt;
ce
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Starter&#x27;&gt;
&lt;span class=&#x27;ees&#x27;&gt;
ees
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Premium&#x27;&gt;
&lt;span class=&#x27;eep&#x27;&gt;
eep
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;We&#x27;re also releasing GitLab Runner 9.2 today!
&lt;p&gt;&lt;strong&gt;Most interesting changes:&lt;&#x2F;strong&gt;
&lt;ul&gt;
  &lt;li&gt;Support for TLS client authentication (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ci-multi-runner&#x2F;merge_requests&#x2F;157&quot;&gt;merge request&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;PodLabels setting for Kubernetes executor configuration (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ci-multi-runner&#x2F;merge_requests&#x2F;558&quot;&gt;merge request&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;Support for Kubernetes Service Account in Kubernetes executor configuration (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ci-multi-runner&#x2F;merge_requests&#x2F;554&quot;&gt;merge request&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;List of all changes can be found in GitLab Runner&#x27;s &lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ci-multi-runner&#x2F;blob&#x2F;master&#x2F;CHANGELOG.md&quot;&gt;CHANGELOG&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;&#x2F;p&gt;&lt;&#x2F;p&gt;

&lt;p&gt;
&lt;i class=&#x27;fa fa-book&#x27;&gt;&lt;&#x2F;i&gt;
&lt;a href=&#x27;https:&#x2F;&#x2F;docs.gitlab.com&#x2F;runner&#x2F;&#x27; target=&#x27;_blank&#x27;&gt;
Learn more about GitLab Runner in our docs.
&lt;&#x2F;a&gt;
&lt;&#x2F;p&gt;
&lt;h3 id=&#x27;performance-improvements&#x27;&gt;
&lt;a class=&#x27;header-link&#x27; href=&#x27;#performance-improvements&#x27;&gt;&lt;&#x2F;a&gt;
Performance Improvements
&lt;div class=&#x27;badge-container&#x27;&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Community Edition&#x27;&gt;
&lt;span class=&#x27;ce&#x27;&gt;
ce
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Starter&#x27;&gt;
&lt;span class=&#x27;ees&#x27;&gt;
ees
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;a data-placement=&#x27;top&#x27; data-toggle=&#x27;tooltip&#x27; title=&#x27;GitLab Enterprise Edition Premium&#x27;&gt;
&lt;span class=&#x27;eep&#x27;&gt;
eep
&lt;&#x2F;span&gt;
&lt;&#x2F;a&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;With every release of GitLab we look to make significant improvements to the performance. In GitLab 9.2, the following areas should see visible improvement:&lt;&#x2F;p&gt;
&lt;ul&gt;
  &lt;li&gt;Listing groups&lt;&#x2F;li&gt;
  &lt;li&gt;Listing projects&lt;&#x2F;li&gt;
  &lt;li&gt;Listing merge requests&lt;&#x2F;li&gt;
  &lt;li&gt;Listing milestones&lt;&#x2F;li&gt;
  &lt;li&gt;Push mirrors should no longer put pressure on filesystem and sidekiq queues&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;issues?scope=all&amp;amp;utf8=%E2%9C%93&amp;amp;state=closed&amp;amp;label_name[]=performance&amp;amp;milestone_title=9.2&quot;&gt;Here is a full list&lt;&#x2F;a&gt; of performance improvements in GitLab 9.2.&lt;&#x2F;p&gt;

&lt;&#x2F;div&gt;
&lt;&#x2F;div&gt;
&lt;&#x2F;section&gt;
&lt;!-- deprecations --&gt;
&lt;section class=&#x27;release-post-section&#x27; id=&#x27;deprecations&#x27;&gt;
&lt;h2 class=&#x27;text-center&#x27; id=&#x27;release-deprecations&#x27;&gt;
&lt;a class=&#x27;header-link&#x27; href=&#x27;#release-deprecations&#x27;&gt;&lt;&#x2F;a&gt;
Deprecations
&lt;&#x2F;h2&gt;
&lt;h3 id=&#x27;vendor-support-for-ubuntu-12.04-and-opensuse-13.2&#x27;&gt;
&lt;a class=&#x27;header-link&#x27; href=&#x27;#vendor-support-for-ubuntu-12.04-and-opensuse-13.2&#x27;&gt;&lt;&#x2F;a&gt;
Vendor support for Ubuntu 12.04 and OpenSUSE 13.2
&lt;&#x2F;h3&gt;
&lt;p&gt;Vendor support for Ubuntu 12.04 and OpenSUSE 13.2 has ended.
GitLab will no longer provide support or packages for these platforms.&lt;&#x2F;p&gt;

&lt;p&gt;
Due:
&lt;strong&gt;May 22nd, 2017.&lt;&#x2F;strong&gt;
&lt;&#x2F;p&gt;
&lt;&#x2F;section&gt;
&lt;!-- Updgrade barometer --&gt;
&lt;section class=&#x27;release-post-section&#x27; id=&#x27;upgrade-barometer&#x27;&gt;
&lt;h2 class=&#x27;text-center&#x27; id=&#x27;barometer&#x27;&gt;
&lt;a class=&#x27;header-link&#x27; href=&#x27;#barometer&#x27;&gt;&lt;&#x2F;a&gt;
Upgrade barometer
&lt;&#x2F;h2&gt;
&lt;p&gt;To upgrade to GitLab 9.2, no downtime is required.&lt;&#x2F;p&gt;
&lt;p&gt;However we&#x27;re also migrating data for CI jobs. If you have a significant number of jobs, this could take some time.
&lt;p&gt;Starting with GitLab 9.1.0 it&#x27;s possible to upgrade to a newer version of GitLab
without having to take your GitLab instance offline. However, for this to work
there are the following requirements:&lt;&#x2F;p&gt;
&lt;ol&gt;
  &lt;li&gt;You can only upgrade 1 release at a time. For example, if 9.1.15 is the last
  release of 9.1 then you can safely upgrade from that version to 9.2.0.
  However, if you are running 9.1.14 you first need to upgrade to 9.1.15.&lt;&#x2F;li&gt;
  &lt;li&gt;You have to use &lt;a href=&quot;https:&#x2F;&#x2F;docs.gitlab.com&#x2F;ce&#x2F;development&#x2F;post_deployment_migrations.html&quot;&gt;post-deployment migrations&lt;&#x2F;a&gt;.&lt;&#x2F;li&gt;
  &lt;li&gt;You are using PostgreSQL. If you are using MySQL you will still need downtime
  when upgrading.&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;This applies to major, minor, and patch releases unless stated otherwise in a
release post.&lt;&#x2F;p&gt;
&lt;p&gt;A new version of our API was released in &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;2017&#x2F;03&#x2F;22&#x2F;gitlab-9-0-released&#x2F;#api-v4&quot;&gt;GitLab 9.0&lt;&#x2F;a&gt;.
While existing calls to API v3 will continue to work until August 2017, we
advise you to make any necessary changes to applications that use the v3 API.
&lt;a href=&quot;https:&#x2F;&#x2F;docs.gitlab.com&#x2F;ee&#x2F;api&#x2F;v3_to_v4.html&quot;&gt;Read the documentation&lt;&#x2F;a&gt; to learn
more.&lt;&#x2F;p&gt;
&lt;&#x2F;p&gt;

&lt;&#x2F;section&gt;

</content>
</entry>
<entry>
<title>Fast and Natural Continuous Integration with GitLab CI</title>
<link href='https://about.gitlab.com/2017/05/22/fast-and-natural-continuous-integration-with-gitlab-ci/' rel='alternate' />
<id>https://about.gitlab.com/2017/05/22/fast-and-natural-continuous-integration-with-gitlab-ci/</id>
<published>2017-05-22T00:00:00+00:00</published>
<updated>2017-05-22T00:00:00+00:00</updated>
<author>
<name>Samuel Alfageme</name>
</author>
<content type='html'>&lt;p&gt;Do you use GitLab to store your repos? Have you ever stopped to check what some of those tabs on top of your repositories do? Well, you can either disable those in your project settings, or you can keep reading to discover some ways in which they can help you power up your development speed.&lt;&#x2F;p&gt;



&lt;p&gt;&lt;img src=&quot;&#x2F;images&#x2F;blogimages&#x2F;fast-and-natural-continuous-integration-with-gitlab-ci&#x2F;your-awesome-project.png&quot; alt=&quot;what do these tabs do?&quot; class=&quot;shadow&quot; &#x2F;&gt;&lt;br &#x2F;&gt;&lt;&#x2F;p&gt;

&lt;p&gt;This post aims to offer a high-level overview of how GitLab has interpreted the main concepts of Continuous Integration&#x2F;Delivery and introduce the main features of the tool as well as their naming conventions, as it can sound more overwhelming than it actually is.&lt;&#x2F;p&gt;

&lt;p&gt;The product’s growth has made it present on many companies’ tech stacks. Part of this popularity comes from being indeed a great open-source project to follow, its release cycle is blazing fast and it’s delivering new features every month on the 22nd. One of the most important factors of this equation is the fact that it’s not only a self-hosted solution that enables you to have all your projects under control, but also a pretty solid one. Just ask your reference ops for his opinion on how even the community (non-commercial) edition brings many stuff to the table, that were incredibly expensive or even lacking on many other SaaS products before.&lt;&#x2F;p&gt;

&lt;p&gt;&lt;img src=&quot;&#x2F;images&#x2F;blogimages&#x2F;fast-and-natural-continuous-integration-with-gitlab-ci&#x2F;idea-to-production-graphics.png&quot; alt=&quot;integrated development tools&quot; class=&quot;shadow&quot; &#x2F;&gt;&lt;br &#x2F;&gt;&lt;&#x2F;p&gt;

&lt;p&gt;It sometimes happens that we simply stick to well-known tools for us and won’t notice or research alternatives that may improve our everyday work. I believe this to be the case with some of the GitLab’s lesser-known features. The software is much more than a traditional VCS server. In fact, last year they came up with the idea of their so-called “masterplan” to extend the product to be more like a “suite” and cover every step of the development cycle, or in their words: go from &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;2016&#x2F;08&#x2F;05&#x2F;continuous-integration-delivery-and-deployment-with-gitlab&#x2F;#from-idea-to-production-with-gitlab&quot;&gt;idea to production&lt;&#x2F;a&gt;. And in both previous and &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;direction&#x2F;&quot;&gt;future&lt;&#x2F;a&gt; releases, they are bundling some really cool additional integrations worth checking (e.g. Mattermost ChatOps or Prometheus monitoring).&lt;&#x2F;p&gt;

&lt;h3 id=&quot;differences-with-other-continuous-integration-tools&quot;&gt;Differences with Other Continuous Integration Tools&lt;&#x2F;h3&gt;

&lt;p&gt;Let’s start getting the full picture of the features that make it so powerful. First of all, its model is based on a lightweight YAML configuration file stored in each repository’s root. This has some pros worth to mention along with the rest:&lt;&#x2F;p&gt;

&lt;ol&gt;
  &lt;li&gt;Tightly coupled systems (both Continuous Integration and VCS are a single product).&lt;&#x2F;li&gt;
  &lt;li&gt;The Continuous Integration configuration becomes versioned:
    &lt;ul&gt;
      &lt;li&gt;Enforcing different branches with different configurations.&lt;&#x2F;li&gt;
      &lt;li&gt;Allowing contributors to also collaborate in the integration setup.&lt;&#x2F;li&gt;
    &lt;&#x2F;ul&gt;
  &lt;&#x2F;li&gt;
  &lt;li&gt;Docker integration out of the box, including private docker registry per project.&lt;&#x2F;li&gt;
  &lt;li&gt;Artifacts browser that allows to access the stages output the same way you’d do locally.&lt;&#x2F;li&gt;
  &lt;li&gt;No nightmare maintenance time of the CI server.&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;

&lt;p&gt;Of course, from the user’s point of view, it also comes with some drawbacks compared to other Continuous Integration systems, since it embraces a “convention over configuration” model, which means you get a pretty powerful tool without having to spend your time configuring it while you stick to its way of doing things. The lack of plug-ins and integrations we are used to seeing in other tools to fine-grain configure some aspects of the project is one of them (e.g. creating jobs that require multiple repositories becomes non-trivial). On the other hand, most use-cases are covered enough and features like configurable email alerts, history browser or programmable builds, you have them all.&lt;&#x2F;p&gt;

&lt;p&gt;But let’s be clear, they neither have invented the wheel nor are the only ones using it. Many other Continuous Integration software solutions also lay in similar paradigms (.travis.yml, Jenkinsfiles…). This is all a matter of taste. The strongest feeling you get after using different solutions is that GitLab’s is easier to configure plus it allows having most details under control in the same browser tab. They took some of the best features of every tool and bundled them into this solution. It makes complete sense.&lt;&#x2F;p&gt;

&lt;h3 id=&quot;main-features&quot;&gt;Main Features&lt;&#x2F;h3&gt;

&lt;p&gt;Let’s try to briefly illustrate the main features of this tool and demonstrate how easy it is just to get started with it even without any sysadmin experience or without bothering your DevOps. As said, everything spins around the .gitlab_ci.yml file containing the definition of the different stages (steps) that have to be completed in whole, in order to get the project successfully delivered. The &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;direction&#x2F;&quot;&gt;file structure&lt;&#x2F;a&gt; is natural to be read and once you have seen a couple of examples, you’ll start writing your own without much effort.&lt;&#x2F;p&gt;

&lt;p&gt;Head first for GitLab’s &lt;a href=&quot;https:&#x2F;&#x2F;docs.gitlab.com&#x2F;ce&#x2F;ci&#x2F;yaml&#x2F;&quot;&gt;CI docs&lt;&#x2F;a&gt; for lots of info about how to translate the specific needs of your project into their conventions. But to summarize a review of the Continuous Integration capabilities every project has enabled by default:&lt;&#x2F;p&gt;

&lt;h4 id=&quot;cicd-settings&quot;&gt;CI&#x2F;CD settings&lt;&#x2F;h4&gt;

&lt;p&gt;The settings page gives an overview on just how easy it is to configure everything related to what’s needed for the creation of the continuous integration magic, i.e.:&lt;&#x2F;p&gt;

&lt;h4 id=&quot;runners&quot;&gt;Runners&lt;&#x2F;h4&gt;

&lt;p&gt;What if I tell you can finally forget about configuring and managing slave machines, the way they speak with the CI server through SSH, how to balance the workload between all the build machines, and many other stuff that is both tedious and often difficult? Meet the runners! &lt;a href=&quot;https:&#x2F;&#x2F;docs.gitlab.com&#x2F;runner&#x2F;install&#x2F;&quot;&gt;Setup&lt;&#x2F;a&gt; becomes just as easy as it is to follow the three steps described in the CI&#x2F;CD settings (settings&#x2F;ci_cd) on your project: install the right binary for your OS, set the URL endpoint and the registration token provided in the settings page and you are done. Also, you can tag the runners based on their capabilities (e.g. docker, databases, etc.) to select them for specific jobs when they are required.&lt;&#x2F;p&gt;

&lt;p&gt;Runners can implement many executors, i.e. ways of running your build scripts&#x2F;code in them; from the most basic ssh executor, through a container host and right to the biggest kubernetes cluster you can think of, supporting even Powershell&#x2F;Batch in Windows systems.&lt;&#x2F;p&gt;

&lt;p&gt;In their self-hosted solution, &lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;&quot;&gt;gitlab.com&lt;&#x2F;a&gt;, they also provide &quot;shared runners&quot;: VMs free of charge, dynamically allocated to build your project, extremely useful for those open source projects with limited resources.&lt;&#x2F;p&gt;

&lt;h4 id=&quot;secrets-management&quot;&gt;Secrets management&lt;&#x2F;h4&gt;

&lt;p&gt;In the microservices era, where your project might be integrated and talk with dozens of APIs that require tokens, secrets, passwords, and many other ways to authorize that dialog, a way to handle this complexity in an elegant manner becomes a priority. A really bad smell &lt;a href=&quot;https:&#x2F;&#x2F;gitleaks.com&#x2F;&quot;&gt;seen in many projects&lt;&#x2F;a&gt; is to store all these in config files on a remote machine or even hang around in some piece of code. To stress the importance of this, just consider how many &lt;a href=&quot;https:&#x2F;&#x2F;www.vaultproject.io&#x2F;&quot;&gt;services&lt;&#x2F;a&gt; and &lt;a href=&quot;https:&#x2F;&#x2F;docs.docker.com&#x2F;engine&#x2F;swarm&#x2F;secrets&#x2F;&quot;&gt;projects&lt;&#x2F;a&gt; are popping up to handle this issue. GitLab projects provide a simple keystore in their Continuous Integration settings that can be accessed from the integration scripts, to help project members handle and configure all these secrets.&lt;&#x2F;p&gt;

&lt;h4 id=&quot;pipelines&quot;&gt;Pipelines&lt;&#x2F;h4&gt;

&lt;p&gt;This is the core feature of any Continuous Integration system and yet a really simple concept, that translates to all the steps you’ll follow from the moment you are facing your source code to the point in which you are about to deploy your application. In between, you can include everything you would consider to make sure your code looks right (linting), can be built, works right (testing), integrates with other systems and anything you can come up with to take the last steps and ship your code.&lt;&#x2F;p&gt;

&lt;p&gt;&lt;img src=&quot;&#x2F;images&#x2F;blogimages&#x2F;fast-and-natural-continuous-integration-with-gitlab-ci&#x2F;pipelines-are-a-core-feature.png&quot; alt=&quot;this is the core feature of any Continuous Integration system&quot; class=&quot;shadow&quot; &#x2F;&gt;&lt;br &#x2F;&gt;&lt;&#x2F;p&gt;

&lt;h4 id=&quot;container-registry&quot;&gt;Container Registry&lt;&#x2F;h4&gt;

&lt;p&gt;Imagine having your own private Docker hub, where you can store your project’s images and update them whenever it’s needed without having to expose them to the public, and being able to pull them login from anywhere into the registry. You can have an image ready for every stage of the road and pulling them from your runners is blazing fast. This becomes super handy to avoid initializing the environment and therefore speeding up the total time the pipeline takes to run: faster builds = happier devs.&lt;&#x2F;p&gt;

&lt;h4 id=&quot;environments--review-apps&quot;&gt;Environments &amp;amp; Review Apps&lt;&#x2F;h4&gt;

&lt;p&gt;Everyone loves &lt;a href=&quot;http:&#x2F;&#x2F;nvie.com&#x2F;posts&#x2F;a-successful-git-branching-model&#x2F;&quot;&gt;gitflow&lt;&#x2F;a&gt;, right? There are some good reasons for that. It’s built on the premise that if every branch is developed isolated, new features don’t interfere with each other or the stable version until they are merged back in the master branch. This helps with both developing new functionalities and testing them.&lt;&#x2F;p&gt;

&lt;p&gt;When containers came into our lives it was obvious how the process of deploying different, independent environments with individual settings per feature could be eased and improved. It’s fair to say we now use containers as standard de facto for environment templates. Most mainstream Continuous Integration solutions were released way before the first container was even created, so they were not built with Docker in mind, but for GitLab CI it’s the other way around: they embrace containers as the way to go, based on the many benefits it brings to the workflow.&lt;&#x2F;p&gt;

&lt;p&gt;&lt;img src=&quot;&#x2F;images&#x2F;blogimages&#x2F;fast-and-natural-continuous-integration-with-gitlab-ci&#x2F;environments-and-review-apps.png&quot; alt=&quot;GitLab embraces containers as the way to go, based on the many benefits it brings to the workflow.&quot; class=&quot;shadow&quot; &#x2F;&gt;&lt;br &#x2F;&gt;&lt;&#x2F;p&gt;

&lt;p&gt;Imagine a very common scenario in the workflow: you are about to merge a feature branch that has to be tested out by the QA team, which introduces some new libraries and a new service (e.g. Redis, mongoDB…) to be deployed. Just update your Dockerfile to include the new layer(s) that manage those new dependencies and push the image to your local registry. Also, append the line to include the new service via docker hub to .gitlab_ci.yml. The feature branch, when pushed on the remote, will have everything in place to be deployed to the testing environment.&lt;&#x2F;p&gt;

&lt;p&gt;&lt;img src=&quot;&#x2F;images&#x2F;blogimages&#x2F;fast-and-natural-continuous-integration-with-gitlab-ci&#x2F;production-and-staging.png&quot; alt=&quot;The feature branch, when pushed on the remote, will have everything in place to be deployed to the testing environment&quot; class=&quot;shadow&quot; &#x2F;&gt;&lt;br &#x2F;&gt;&lt;&#x2F;p&gt;

&lt;p&gt;This is where &lt;a href=&quot;https:&#x2F;&#x2F;docs.gitlab.com&#x2F;ce&#x2F;ci&#x2F;review_apps&#x2F;&quot;&gt;Review Apps&lt;&#x2F;a&gt; come into action, it’s just a posh way to call dynamic, per-branch environments created to verify changes and see them live. Every branch gets instant deploy support when pushed to the repo. This process can speed up with tools such as &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;travis-ci&#x2F;dpl&quot;&gt;dpl&lt;&#x2F;a&gt;, that abstract many of the details for major deploy services, or go freestyle and call your custom deployment script from there. It also integrates an interactive terminal in-browser to introspect on builds to debug and troubleshoot if needed. You no longer have to go over the Jenkins’ mantra to clone a configured job, rename it, adjust the branch in the configuration… and 10 or 15 tedious steps before deploying an ephemeral test environment.&lt;&#x2F;p&gt;

&lt;p&gt;Another major feature you are going to love is the &lt;a href=&quot;https:&#x2F;&#x2F;docs.gitlab.com&#x2F;ce&#x2F;ci&#x2F;environments.html#viewing-the-deployment-history-of-an-environment&quot;&gt;history browser&lt;&#x2F;a&gt;. Imagine you deployed some changes to a demo environment and 10 minutes before going live, you detect it contains a major bug that would be nasty if displayed on camera. No worries; it’s super easy to access the history of what was deployed on every environment and perform rollbacks or redeploy on-demand to any previous reproducible state. Just awesome.&lt;&#x2F;p&gt;

&lt;p&gt;&lt;img src=&quot;&#x2F;images&#x2F;blogimages&#x2F;fast-and-natural-continuous-integration-with-gitlab-ci&#x2F;history-browser.png&quot; alt=&quot;it’s super easy to access the history of what was deployed on every environment&quot; class=&quot;shadow&quot; &#x2F;&gt;&lt;br &#x2F;&gt;&lt;&#x2F;p&gt;

&lt;p&gt;I hope after this post, the central concepts of GitLab’s Continuous Integration make good sense to you and your projects.&lt;&#x2F;p&gt;

&lt;p&gt;&lt;em&gt;This post was originally published on &lt;a href=&quot;https:&#x2F;&#x2F;solidgeargroup.com&#x2F;gitlab_countinuous_integration_intro&quot;&gt;solidgeargroup.com&lt;&#x2F;a&gt;.&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;

&lt;p class=&quot;alert alert-orange&quot; style=&quot;background-color: rgba(252,163,38,.3); border-color: rgba(252,163,38,.3); color: rgb(226,67,41) !important; text-align: center;&quot;&gt;Sign up for a &amp;nbsp;&amp;nbsp;&lt;i class=&quot;fa fa-gitlab&quot; style=&quot;color:rgb(107,79,187); font-size:.85em&quot; aria-hidden=&quot;true&quot;&gt;&lt;&#x2F;i&gt; &amp;nbsp;&amp;nbsp;&lt;strong&gt;GitLab EE Trial&lt;&#x2F;strong&gt; &amp;nbsp;&amp;nbsp;&lt;i class=&quot;fa fa-gitlab&quot; style=&quot;color:rgb(107,79,187); font-size:.85em&quot; aria-hidden=&quot;true&quot;&gt;&lt;&#x2F;i&gt; &amp;nbsp;&amp;nbsp;&lt;a style=&quot;color: rgb(107,79,187);&quot; href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;free-trial&#x2F;&quot;&gt;now!&lt;&#x2F;a&gt;!&lt;&#x2F;p&gt;
&lt;img src=&#x27;https:&#x2F;&#x2F;about.gitlab.com&#x2F;images&#x2F;blogimages&#x2F;fast-and-natural-continuous-integration-with-gitlab-ci.jpg&#x27; class=&#x27;webfeedsFeaturedVisual&#x27; style=&#x27;display: none;&#x27; &#x2F;&gt;</content>
</entry>
<entry>
<title>Why Git is Worth the Learning Curve</title>
<link href='https://about.gitlab.com/2017/05/17/learning-curve-is-the-biggest-challenge-developers-face-with-git/' rel='alternate' />
<id>https://about.gitlab.com/2017/05/17/learning-curve-is-the-biggest-challenge-developers-face-with-git/</id>
<published>2017-05-17T00:00:00+00:00</published>
<updated>2017-05-17T00:00:00+00:00</updated>
<author>
<name>Emily von Hoffmann</name>
</author>
<content type='html'>&lt;p&gt;Over the last decade, distributed version control systems, like Git, have gained popularity and are &lt;a href=&quot;http:&#x2F;&#x2F;get.gitlab.com&#x2F;global-developer-survey&#x2F;&quot;&gt;regarded as the most important development tools&lt;&#x2F;a&gt; by
developers. Although the learning curve can pose a challenge, developers told us that Git enhances their ability to work together and ship faster, suggesting that managers have a real incentive to help their teams over the initial hill imposed by the transition to Git.&lt;&#x2F;p&gt;



&lt;p&gt;With the full history of the repository stored on each developer’s machine, using Git makes commits, merges and other commands much faster, even enabling developers to work offline. Upgrading your source code management solution to a distributed version control system is the first step toward building a flexible working environment that can support modern development teams, but moving away from legacy systems and tools can be a daunting prospect.&lt;&#x2F;p&gt;

&lt;h3 id=&quot;the-challenge&quot;&gt;The Challenge&lt;&#x2F;h3&gt;

&lt;p&gt;In our &lt;a href=&quot;http:&#x2F;&#x2F;get.gitlab.com&#x2F;global-developer-survey&#x2F;&quot;&gt;Global Developer Survey&lt;&#x2F;a&gt;, the biggest concern respondents cite about using Git is the associated learning curve, with 40 percent saying they consider it an issue:&lt;&#x2F;p&gt;

&lt;p&gt;&lt;img src=&quot;&#x2F;images&#x2F;blogimages&#x2F;why-git-is-worth-the-learning-curve.png&quot; alt=&quot;learning curve is the biggest challenge devs face with Git&quot; class=&quot;shadow&quot; &#x2F;&gt;&lt;br &#x2F;&gt;&lt;&#x2F;p&gt;

&lt;p&gt;There are several reasons why this could be the case. Broadly, Git has a different underlying model than other VCS, one that makes it more intuitive for &lt;a href=&quot;http:&#x2F;&#x2F;eagain.net&#x2F;articles&#x2F;git-for-computer-scientists&#x2F;&quot;&gt;computer scientists and mathematicians&lt;&#x2F;a&gt;, but potentially less so for those with other backgrounds. Unlike with some programming languages where knowledge of one eases the adoption of another, Git commands are different from those in other version control systems, making familiarity with another system only a minor advantage. Finally, the number of Git commands and arguments that make it a particularly powerful tool also complicate the beginner’s task of learning the ropes. For teams transitioning to Git, this not only means migrating repositories, but relearning ingrained habits and workflows, and it may sting a bit.&lt;&#x2F;p&gt;

&lt;h3 id=&quot;the-rewards&quot;&gt;The Rewards&lt;&#x2F;h3&gt;

&lt;h4 id=&quot;greater-collaboration-and-code-quality&quot;&gt;Greater collaboration and code quality&lt;&#x2F;h4&gt;

&lt;p&gt;Nearly 80 percent of respondents &lt;a href=&quot;http:&#x2F;&#x2F;get.gitlab.com&#x2F;global-developer-survey&#x2F;&quot;&gt;confirmed&lt;&#x2F;a&gt; that they see increased collaboration with teammates as a major benefit of the Git workflow, which nudges teams to update each other early and often, enabling them to collect feedback regularly and integrate suggestions throughout the process. The accessibility of Git repositories makes it easier for contributors and specialists across your organization to collaborate, making it more likely that errors are spotted, resulting in better and more stable code. Feature branches, or branches containing one feature or bug fix, allow teams to discuss and perfect their code at the merge request stage, before changes are accepted into master. Before merging, a developer can commit their code locally to ensure it works, preserving the quality of the master code base.&lt;&#x2F;p&gt;

&lt;h4 id=&quot;cheaper-branching&quot;&gt;“Cheaper” branching&lt;&#x2F;h4&gt;

&lt;p&gt;The branching capabilities within Git are largely responsible for its popularity. Developers can create a new branch and isolated environment to work on new features, bug fixes, customer requests, or experiment on something new with minimal cost. Branching with Git is “cheap” in that it&#x27;s easy to do and doesn’t take up a lot of space. Creating a new branch requires but a single command and no network connection, unlike Subversion and other centralized version control systems, where branching is a slow and repetitive process resulting in a complete copy of all code.&lt;&#x2F;p&gt;

&lt;h4 id=&quot;easier-merging&quot;&gt;Easier merging&lt;&#x2F;h4&gt;

&lt;p&gt;When coupled with a source code management tool like GitLab, you can enhance merging capabilities with a user interface that allows you to review and comment on changes on branches before merging. At GitLab, we call this a merge request and run &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;features&#x2F;gitlab-ci-cd&#x2F;&quot;&gt;continuous integration&lt;&#x2F;a&gt; on every branch as an additional quality gate to ensure everything that goes into the master code base works. With GitLab branching and merging, you can even protect branches to prevent merges that aren’t ready, and apply merge request approvals for an added layer of security.&lt;&#x2F;p&gt;

&lt;p&gt;More good news: just a few commands are required to get started, and the open source community around the world ensures there’s always someone awake to answer your question.&lt;&#x2F;p&gt;

&lt;p class=&quot;alert alert-orange&quot; style=&quot;background-color: rgba(252,163,38,.3); border-color: rgba(252,163,38,.3); color: rgb(226,67,41) !important; text-align: center;&quot;&gt;Read our &amp;nbsp;&amp;nbsp;&lt;i class=&quot;fa fa-gitlab&quot; style=&quot;color:rgb(107,79,187); font-size:.85em&quot; aria-hidden=&quot;true&quot;&gt;&lt;&#x2F;i&gt; &amp;nbsp;&amp;nbsp;&lt;strong&gt;Global Developer Survey Report&lt;&#x2F;strong&gt; &amp;nbsp;&amp;nbsp;&lt;i class=&quot;fa fa-gitlab&quot; style=&quot;color:rgb(107,79,187); font-size:.85em&quot; aria-hidden=&quot;true&quot;&gt;&lt;&#x2F;i&gt; &amp;nbsp;&amp;nbsp;&lt;a style=&quot;color: rgb(107,79,187);&quot; href=&quot;http:&#x2F;&#x2F;get.gitlab.com&#x2F;global-developer-survey&#x2F;&quot;&gt;Download it here&lt;&#x2F;a&gt;!&lt;&#x2F;p&gt;
&lt;img src=&#x27;https:&#x2F;&#x2F;about.gitlab.com&#x2F;images&#x2F;why-git-is-worth-the-learning-curve.jpg&#x27; class=&#x27;webfeedsFeaturedVisual&#x27; style=&#x27;display: none;&#x27; &#x2F;&gt;</content>
</entry>
<entry>
<title>Demo - Auto-Deploy from GitLab to an OpenShift Container Cluster</title>
<link href='https://about.gitlab.com/2017/05/16/devops-containers-gitlab-openshift/' rel='alternate' />
<id>https://about.gitlab.com/2017/05/16/devops-containers-gitlab-openshift/</id>
<published>2017-05-16T00:00:00+00:00</published>
<updated>2017-05-16T00:00:00+00:00</updated>
<author>
<name>Erica Lindberg</name>
</author>
<content type='html'>&lt;p&gt;Containers are an essential tool for achieving DevOps at scale. Bringing code and infrastructure closer together, containers provide consistency across environments and tools for developers, QA, and IT. Using GitLab&#x27;s &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;features&#x2F;gitlab-ci-cd&#x2F;&quot;&gt;built-in CI&#x2F;CD&lt;&#x2F;a&gt; and our integration with OpenShift, you can run all of your CI&#x2F;CD jobs in a container cluster.&lt;&#x2F;p&gt;



&lt;h2 id=&quot;what-is-a-container&quot;&gt;What is a Container?&lt;&#x2F;h2&gt;

&lt;p&gt;Containers work much like a virtual machine except that, instead of packaging your code with an operating system, containers are run as a Linux process inside of the kernel. This means that each container only contains the code and dependencies needed to run that specific application, making them smaller and faster to run.&lt;&#x2F;p&gt;

&lt;p&gt;For developers, containers make it possible to build one version of an application that can be easily deployed to multiple types of environments. Essentially, whatever developers and QA runs, is exactly what finds its way to production. What you see in development is what you see in testing, staging, and production. Code can be shipped faster when packaged in a container because errors and bugs are caught earlier in process.&lt;&#x2F;p&gt;

&lt;p&gt;Communication and collaboration between developers and operations also improves because developers have seen exactly what it is that operations is getting, and operations are running exactly what the developers gave them. The result is that everyone can focus more on shipping quality code faster because applications don&#x27;t have to be rebuilt as they move through the development lifecycle.&lt;&#x2F;p&gt;

&lt;p&gt;GitLab intergrates with both Kubernetes and OpenShift container orchestration platforms, making it possible to run continuous integration and continuous delivery related jobs in the cluster. It also gives you the ability to set up different environments, called &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;features&#x2F;review-apps&#x2F;&quot;&gt;Review Apps&lt;&#x2F;a&gt;, for different branches of your code base. Review Apps make it easy to view and test changes in an environment, in the cluster, so you can iterate and test faster.&lt;&#x2F;p&gt;

&lt;h3 id=&quot;demo&quot;&gt;Demo&lt;&#x2F;h3&gt;

&lt;p&gt;In this demonstration, Senior Build Engineer DJ Mountney, will show how you can build, test, and deploy a basic application in a container from GitLab to an OpenShift containter cluster.&lt;&#x2F;p&gt;

&lt;figure class=&quot;video_container&quot;&gt;
  &lt;iframe src=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;embed&#x2F;EwbhA53Jpp4&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt; &lt;&#x2F;iframe&gt;
&lt;&#x2F;figure&gt;

&lt;h3 id=&quot;watch-the-webcast&quot;&gt;Watch the webcast&lt;&#x2F;h3&gt;

&lt;p&gt;To learn more about containers, how they can help scale your DevOps workflow, and the GitLab&#x2F;OpenShift integration, &lt;a href=&quot;http:&#x2F;&#x2F;get.gitlab.com&#x2F;devops-journey-using-containers&#x2F;&quot;&gt;register to watch&lt;&#x2F;a&gt; &lt;strong&gt;The DevOps Journey: Using Containers webcast&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;
&lt;img src=&#x27;https:&#x2F;&#x2F;about.gitlab.com&#x2F;images&#x2F;blogimages&#x2F;devops-openshift-webcast-blog-cover.png&#x27; class=&#x27;webfeedsFeaturedVisual&#x27; style=&#x27;display: none;&#x27; &#x2F;&gt;</content>
</entry>
<entry>
<title>GitLab's Functional Group Updates - May 9th - May 12th</title>
<link href='https://about.gitlab.com/2017/05/15/functional-group-updates/' rel='alternate' />
<id>https://about.gitlab.com/2017/05/15/functional-group-updates/</id>
<published>2017-05-15T00:00:00+00:00</published>
<updated>2017-05-15T00:00:00+00:00</updated>
<author>
<name>Chloe Whitestone</name>
</author>
<content type='html'>&lt;!-- beginning of the intro - leave it as is --&gt;

&lt;p&gt;Every day from Monday to Thursday, right before our &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;handbook&#x2F;#team-call&quot;&gt;GitLab Team call&lt;&#x2F;a&gt;, a different Functional Group gives an &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;handbook&#x2F;people-operations&#x2F;functional-group-updates&#x2F;&quot;&gt;update&lt;&#x2F;a&gt; to our team.&lt;&#x2F;p&gt;

&lt;p&gt;The format of these calls is simple and short where they can either give a presentation or quickly walk the team through their agenda.&lt;&#x2F;p&gt;



&lt;h2 id=&quot;recordings&quot;&gt;Recordings&lt;&#x2F;h2&gt;

&lt;p&gt;All of the updates are recorded using &lt;a href=&quot;https:&#x2F;&#x2F;zoom.us&quot;&gt;Zoom&lt;&#x2F;a&gt; at the time of the call. All the recordings will be uploaded to our YouTube account and made public, with the exception of the Sales and Finance updates.&lt;&#x2F;p&gt;

&lt;!-- end of the intro --&gt;

&lt;!-- beginning of the FG block - repeat as many times as necessary (copy and paste the entire block) --&gt;

&lt;hr &#x2F;&gt;

&lt;h3 id=&quot;edge-team&quot;&gt;Edge Team&lt;&#x2F;h3&gt;

&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;docs.google.com&#x2F;presentation&#x2F;d&#x2F;1kzUNKcLa2X5-Jze8y7Z8Jv_8NKOhBCPeIv1QwbWQwbI&#x2F;edit#slide=id.g153a2ed090_0_57&quot;&gt;Presentation slides&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;

&lt;figure class=&quot;video_container&quot;&gt;
  &lt;iframe src=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;embed&#x2F;AbGMo7Tckuk&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt; &lt;&#x2F;iframe&gt;
&lt;&#x2F;figure&gt;

&lt;!-- end of the FG block --&gt;

&lt;!-- beginning of the FG block - repeat as many times as necessary (copy and paste the entire block) --&gt;

&lt;hr &#x2F;&gt;

&lt;h3 id=&quot;discussion-team&quot;&gt;Discussion Team&lt;&#x2F;h3&gt;

&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;smcgivern.gitlab.io&#x2F;discussion-updates&#x2F;2017-05-10&#x2F;#1&quot;&gt;Presentation slides&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;

&lt;p&gt;Due to team members being on vacation, this Functional Group Update has only slides. Tune back next time!&lt;&#x2F;p&gt;

&lt;!-- end of the FG block --&gt;

&lt;hr &#x2F;&gt;

&lt;h3 id=&quot;ux-research-team&quot;&gt;UX Research Team&lt;&#x2F;h3&gt;

&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;docs.google.com&#x2F;presentation&#x2F;d&#x2F;1ZE9BNAnIPDKxgSyQU5subG2UfbraAn1dJy0emwdB2Sw&#x2F;edit&quot;&gt;Presentation slides&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;

&lt;figure class=&quot;video_container&quot;&gt;
  &lt;iframe src=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;embed&#x2F;k8-Jto8FTmA&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt; &lt;&#x2F;iframe&gt;
&lt;&#x2F;figure&gt;

&lt;!-- end of the FG block --&gt;

&lt;hr &#x2F;&gt;

&lt;h3 id=&quot;engineering-team&quot;&gt;Engineering Team&lt;&#x2F;h3&gt;

&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;docs.google.com&#x2F;presentation&#x2F;d&#x2F;1LHj1ghSCM5GygLcwQWdtxK__Fe0ehyOQsBiBpYsIubc&#x2F;edit#slide=id.g153a2ed090_0_63&quot;&gt;Presentation slides&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;

&lt;figure class=&quot;video_container&quot;&gt;
  &lt;iframe src=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;embed&#x2F;NlXPGkaSJR8&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt; &lt;&#x2F;iframe&gt;
&lt;&#x2F;figure&gt;

&lt;!-- end of the FG block --&gt;

&lt;hr &#x2F;&gt;

&lt;p&gt;Questions? Leave a comment below or tweet &lt;a href=&quot;https:&#x2F;&#x2F;twitter.com&#x2F;gitlab&quot;&gt;@GitLab&lt;&#x2F;a&gt;! Would you like to join us? Check out our &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;jobs&#x2F;&quot;&gt;job openings&lt;&#x2F;a&gt;!&lt;&#x2F;p&gt;
&lt;img src=&#x27;https:&#x2F;&#x2F;about.gitlab.com&#x2F;images&#x2F;default-blog-image.png&#x27; class=&#x27;webfeedsFeaturedVisual&#x27; style=&#x27;display: none;&#x27; &#x2F;&gt;</content>
</entry>
<entry>
<title>GitLab Patch Release 9.1.4</title>
<link href='https://about.gitlab.com/2017/05/15/gitlab-9-1-4-released/' rel='alternate' />
<id>https://about.gitlab.com/2017/05/15/gitlab-9-1-4-released/</id>
<published>2017-05-15T00:00:00+00:00</published>
<updated>2017-05-15T00:00:00+00:00</updated>
<author>
<name>Felipe Artur</name>
</author>
<content type='html'>&lt;p&gt;Today we&#x27;re releasing version 9.1.4 for GitLab Community Edition (CE) and
Enterprise Edition (EE).&lt;&#x2F;p&gt;

&lt;p&gt;This version adds some improvements and resolves a number of regressions and bugs in &lt;a href=&quot;&#x2F;2017&#x2F;04&#x2F;22&#x2F;gitlab-9-1-released&quot;&gt;the 9.1 release&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;

&lt;p&gt;Please read on for more details.&lt;&#x2F;p&gt;



&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;CE&#x2F;EE:&lt;&#x2F;strong&gt; Fixed search terms highlight. (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;merge_requests&#x2F;11198&quot;&gt;!11198&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;CE&#x2F;EE:&lt;&#x2F;strong&gt; Fixed bug where merge request JSON would be displayed. (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;merge_requests&#x2F;11096&quot;&gt;!11096&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;CE&#x2F;EE:&lt;&#x2F;strong&gt; Handle incoming emails from aliases correctly. (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;merge_requests&#x2F;11079&quot;&gt;!11079&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;CE&#x2F;EE:&lt;&#x2F;strong&gt; Sort the network graph both by commit date and topographically. (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;merge_requests&#x2F;11057&quot;&gt;!11057&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;CE&#x2F;EE:&lt;&#x2F;strong&gt; Handle failures for incoming emails. (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;merge_requests&#x2F;11014&quot;&gt;!11014&lt;&#x2F;a&gt;&#x2F;&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ee&#x2F;merge_requests&#x2F;1810&quot;&gt;!1810&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;CE&#x2F;EE:&lt;&#x2F;strong&gt; Fix error on CI&#x2F;CD Settings page related to invalid pipeline trigger. (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;merge_requests&#x2F;10948&quot;&gt;!10948&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;CE&#x2F;EE:&lt;&#x2F;strong&gt; Fix cross referencing for private and internal projects. (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;merge_requests&#x2F;11243&quot;&gt;!11243&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;CE&#x2F;EE:&lt;&#x2F;strong&gt; Add missing project attributes to Import&#x2F;Export. (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;merge_requests&#x2F;10880&quot;&gt;!10880&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;EE:&lt;&#x2F;strong&gt; GitLab Geo: Backfill projects where the last attempt to backfill failed. (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ee&#x2F;merge_requests&#x2F;1785&quot;&gt;!1785&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;

&lt;h2 id=&quot;upgrade-barometer&quot;&gt;Upgrade barometer&lt;&#x2F;h2&gt;

&lt;p&gt;This version has no new migrations and should not require any downtime.&lt;&#x2F;p&gt;

&lt;p&gt;Please be aware that by default the Omnibus packages will stop, run migrations,
and start again, no matter how “big” or “small” the upgrade is. This behavior
can be changed by adding a &lt;a href=&quot;http:&#x2F;&#x2F;doc.gitlab.com&#x2F;omnibus&#x2F;update&#x2F;README.html&quot;&gt;&lt;code&gt;&#x2F;etc&#x2F;gitlab&#x2F;skip-auto-migrations&lt;&#x2F;code&gt;
file&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;

&lt;h2 id=&quot;updating&quot;&gt;Updating&lt;&#x2F;h2&gt;

&lt;p&gt;To update, check out our &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;update&#x2F;&quot;&gt;update page&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;

&lt;h2 id=&quot;enterprise-edition&quot;&gt;Enterprise Edition&lt;&#x2F;h2&gt;

&lt;p&gt;Interested in GitLab Enterprise Edition? Check out the &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;gitlab-ee&#x2F;&quot;&gt;features exclusive to
EE&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;

&lt;p&gt;Access to GitLab Enterprise Edition is granted by a &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;products&#x2F;&quot;&gt;subscription&lt;&#x2F;a&gt;.
No time to upgrade GitLab yourself? Subscribers receive upgrade and installation&lt;&#x2F;p&gt;
&lt;img src=&#x27;https:&#x2F;&#x2F;about.gitlab.com&#x2F;images&#x2F;default-blog-image.png&#x27; class=&#x27;webfeedsFeaturedVisual&#x27; style=&#x27;display: none;&#x27; &#x2F;&gt;</content>
</entry>
<entry>
<title>How to use GitLab CI and MacStadium to build your macOS or iOS projects</title>
<link href='https://about.gitlab.com/2017/05/15/how-to-use-macstadium-and-gitlab-ci-to-build-your-macos-or-ios-projects/' rel='alternate' />
<id>https://about.gitlab.com/2017/05/15/how-to-use-macstadium-and-gitlab-ci-to-build-your-macos-or-ios-projects/</id>
<published>2017-05-15T00:00:00+00:00</published>
<updated>2017-05-15T00:00:00+00:00</updated>
<author>
<name>Achilleas Pipinellis</name>
</author>
<content type='html'>&lt;p&gt;In this article, we will see how to get started with
&lt;a href=&quot;https:&#x2F;&#x2F;www.macstadium.com&quot; title=&quot;MacStadium website&quot;&gt;MacStadium&lt;&#x2F;a&gt;,
a provider that offers dedicated Mac hardware which you can use with
&lt;a href=&quot;&#x2F;features&#x2F;gitlab-ci-cd&#x2F;&quot; title=&quot;GitLab CI&#x2F;CD feature page&quot;&gt;GitLab CI&lt;&#x2F;a&gt;
and build your macOS or iOS application.&lt;&#x2F;p&gt;



&lt;p&gt;&lt;a href=&quot;&#x2F;2016&#x2F;08&#x2F;05&#x2F;continuous-integration-delivery-and-deployment-with-gitlab&#x2F;&quot; title=&quot;Blog on CI&#x2F;CD with GitLab&quot;&gt;Continuous Integration and Delivery with GitLab&lt;&#x2F;a&gt;
is easier if you are developing your application on Linux. All you need to do is
find a provider, spin up a VM, install &lt;a href=&quot;https:&#x2F;&#x2F;docs.gitlab.com&#x2F;runner&quot; title=&quot;GitLab Runner docs&quot;&gt;GitLab Runner&lt;&#x2F;a&gt;
on it and configure your project&#x27;s &lt;a href=&quot;https:&#x2F;&#x2F;docs.gitlab.com&#x2F;ce&#x2F;ci&#x2F;yaml&#x2F;&quot; title=&quot;.gitlab-ci.yml reference guide&quot;&gt;&lt;code&gt;.gitlab-ci.yml&lt;&#x2F;code&gt; file&lt;&#x2F;a&gt;.
On macOS on the other hand, things may not be that easy. Finding a provider that
offers a Mac machine that will be online 24&#x2F;7 can be hard. MacStadium is here to
help achieve that goal and offers a discount to all GitLab users. Let&#x27;s see how
to make this happen.&lt;&#x2F;p&gt;

&lt;hr &#x2F;&gt;

&lt;h3 class=&quot;no_toc&quot; id=&quot;on-this-page&quot;&gt;On this page&lt;&#x2F;h3&gt;

&lt;ul id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#choosing-a-mac-mini-plan&quot; id=&quot;markdown-toc-choosing-a-mac-mini-plan&quot;&gt;Choosing a Mac mini plan&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;a href=&quot;#connecting-to-the-mac-mini&quot; id=&quot;markdown-toc-connecting-to-the-mac-mini&quot;&gt;Connecting to the Mac mini&lt;&#x2F;a&gt;    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#connecting-with-vnc&quot; id=&quot;markdown-toc-connecting-with-vnc&quot;&gt;Connecting with VNC&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
      &lt;li&gt;&lt;a href=&quot;#connecting-with-ssh&quot; id=&quot;markdown-toc-connecting-with-ssh&quot;&gt;Connecting with SSH&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
    &lt;&#x2F;ul&gt;
  &lt;&#x2F;li&gt;
  &lt;li&gt;&lt;a href=&quot;#setting-up-the-development-environment&quot; id=&quot;markdown-toc-setting-up-the-development-environment&quot;&gt;Setting up the development environment&lt;&#x2F;a&gt;    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#installing-xcode&quot; id=&quot;markdown-toc-installing-xcode&quot;&gt;Installing Xcode&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
      &lt;li&gt;&lt;a href=&quot;#installing-the-command-line-tools&quot; id=&quot;markdown-toc-installing-the-command-line-tools&quot;&gt;Installing the command line tools&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
    &lt;&#x2F;ul&gt;
  &lt;&#x2F;li&gt;
  &lt;li&gt;&lt;a href=&quot;#installing-and-configuring-the-gitlab-runner&quot; id=&quot;markdown-toc-installing-and-configuring-the-gitlab-runner&quot;&gt;Installing and configuring the GitLab Runner&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;a href=&quot;#testing-a-project-with-ci&quot; id=&quot;markdown-toc-testing-a-project-with-ci&quot;&gt;Testing a project with CI&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;a href=&quot;#conclusion&quot; id=&quot;markdown-toc-conclusion&quot;&gt;Conclusion&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;

&lt;hr &#x2F;&gt;

&lt;h2 id=&quot;choosing-a-mac-mini-plan&quot;&gt;Choosing a Mac mini plan&lt;&#x2F;h2&gt;

&lt;p&gt;The first step is to choose a plan. MacStadium offers many options, so you can
pick whatever fits your needs. A &lt;a href=&quot;https:&#x2F;&#x2F;www.macstadium.com&#x2F;mac-mini&#x2F;#products&quot;&gt;Mac mini&lt;&#x2F;a&gt;
is perfect to test things out and is a good first choice. It should be enough
to get you started, but depending on your needs you may have to upgrade to a
more beefy machine.&lt;&#x2F;p&gt;

&lt;p&gt;Depending on your location and project needs, you have to:&lt;&#x2F;p&gt;

&lt;ol&gt;
  &lt;li&gt;Choose the datacenter&lt;&#x2F;li&gt;
  &lt;li&gt;Choose the Mac mini&lt;&#x2F;li&gt;
  &lt;li&gt;Choose the macOS version&lt;&#x2F;li&gt;
  &lt;li&gt;Click &lt;strong&gt;Start Trial&lt;&#x2F;strong&gt; (24 hours) on the Mac mini of your choice to get going
in a few steps&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;

&lt;p&gt;At first you&#x27;ll be asked to &lt;a href=&quot;http:&#x2F;&#x2F;help.macstadium.com&#x2F;accounts-and-billing&#x2F;how-to-create-an-account.html&quot; title=&quot;How to create an account on MacStadium&quot;&gt;create a MacStadium account&lt;&#x2F;a&gt;
Fill in your information and when in the &lt;strong&gt;Secure Checkout&lt;&#x2F;strong&gt; page, be sure to
check the &lt;em&gt;I want to use a coupon code&lt;&#x2F;em&gt; option and use &lt;code&gt;GITLAB10&lt;&#x2F;code&gt; for 10% off.&lt;&#x2F;p&gt;

&lt;p class=&quot;alert alert-info&quot;&gt;&lt;i class=&quot;fa fa-info-circle&quot; aria-hidden=&quot;true&quot; style=&quot;color: rgb(49, 112, 143);&quot;&gt;&lt;&#x2F;i&gt;
At the time of this writing, the staged machines come with macOS 10.12.2. As
new releases com from Apple, MacStadium tests them thoroughly and then update
their staged machines. Of course, as a customer you can run the OS update on
your own machine anytime.&lt;&#x2F;p&gt;

&lt;h2 id=&quot;connecting-to-the-mac-mini&quot;&gt;Connecting to the Mac mini&lt;&#x2F;h2&gt;

&lt;p&gt;When you sign up, you&#x27;ll receive an email with two important pieces of
information:&lt;&#x2F;p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;The static IP address of your Mac.&lt;&#x2F;strong&gt;
This will allow you to find your Mac mini from anywhere in the world, and
you can also point domain names to this IP address so it&#x27;s easier to remember.&lt;&#x2F;p&gt;
  &lt;&#x2F;li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;The username and password to access the machine.&lt;&#x2F;strong&gt;
The user is standard for all installs, but the password is randomly
generated. Upon the first login, you can and are encouraged to change it.&lt;&#x2F;p&gt;
  &lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;

&lt;p&gt;After you have this information, there are two ways of connecting to your Mac mini:
&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Virtual_Network_Computing&quot; title=&quot;VNC article on Wikipedia&quot;&gt;VNC&lt;&#x2F;a&gt;
and &lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Secure_Shell&quot; title=&quot;SSH article on Wikipedia&quot;&gt;SSH&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;

&lt;h3 id=&quot;connecting-with-vnc&quot;&gt;Connecting with VNC&lt;&#x2F;h3&gt;

&lt;p&gt;If connecting from a Mac, &lt;a href=&quot;https:&#x2F;&#x2F;support.apple.com&#x2F;kb&#x2F;PH25554&quot; title=&quot;macOS Sierra: Set up and use screen sharing&quot;&gt;Apple&#x27;s Screen Sharing&lt;&#x2F;a&gt;
is ideal. It&#x27;s installed on every Mac and can you can connect on your MacStadium
Mac mini easily with the username and password that was sent to you via email.&lt;&#x2F;p&gt;

&lt;p&gt;If you don&#x27;t have a favorite VNC client already, there are a number of options
to choose from:&lt;&#x2F;p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http:&#x2F;&#x2F;tigervnc.org&#x2F;&quot; title=&quot;TigerVNC website&quot;&gt;TigerVNC&lt;&#x2F;a&gt; (Multi-platform)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;wiki.gnome.org&#x2F;Apps&#x2F;Vinagre&quot; title=&quot;Vinagre website&quot;&gt;Vinagre&lt;&#x2F;a&gt; (GNU&#x2F;Linux)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;a href=&quot;http:&#x2F;&#x2F;www.remmina.org&#x2F;wp&#x2F;&quot; title=&quot;Remmina website&quot;&gt;Remmina&lt;&#x2F;a&gt; (GNU&#x2F;Linux)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.realvnc.com&#x2F;&quot; title=&quot;RealVNC website&quot;&gt;RealVNC&lt;&#x2F;a&gt; (Multi-platform)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;

&lt;p&gt;When you connect with VNC, you can use the same password that is setup for the
user on the Mac mini.&lt;&#x2F;p&gt;

&lt;p class=&quot;alert alert-info&quot;&gt;&lt;i class=&quot;fa fa-info-circle&quot; aria-hidden=&quot;true&quot; style=&quot;color: rgb(49, 112, 143);&quot;&gt;&lt;&#x2F;i&gt;
macOS has that as a separate setting, but MacStadium&#x27;s provision scripts
enable VNC connections by default.&lt;&#x2F;p&gt;

&lt;h3 id=&quot;connecting-with-ssh&quot;&gt;Connecting with SSH&lt;&#x2F;h3&gt;

&lt;p&gt;You can SSH into your machine using the username and password. For example, if
the username is &lt;code&gt;administrator&lt;&#x2F;code&gt; and the IP address of your machine &lt;code&gt;1.2.3.4&lt;&#x2F;code&gt;:&lt;&#x2F;p&gt;

&lt;pre class=&quot;highlight shell&quot;&gt;&lt;code&gt;ssh administrator@1.2.3.4
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Enter the password when asked (you won&#x27;t be able to see it), hit Enter and
you&#x27;re in!&lt;&#x2F;p&gt;

&lt;h2 id=&quot;setting-up-the-development-environment&quot;&gt;Setting up the development environment&lt;&#x2F;h2&gt;

&lt;p&gt;The following steps are to be performed to the remote Mac machine. We need to
install &lt;a href=&quot;https:&#x2F;&#x2F;developer.apple.com&#x2F;xcode&#x2F;&quot; title=&quot;Xcode on Apple&#x27;s websire&quot;&gt;Xcode&lt;&#x2F;a&gt;
and the command line tools that contain the SDKs and UNIX development applications
like the LLVM compiler, etc.&lt;&#x2F;p&gt;

&lt;p class=&quot;alert alert-info&quot;&gt;&lt;i class=&quot;fa fa-info-circle&quot; aria-hidden=&quot;true&quot; style=&quot;color: rgb(49, 112, 143);&quot;&gt;&lt;&#x2F;i&gt;
Apart from the needed toolset, the screensaver needs to be disabled otherwise
the machine will be put to sleep, thus disrupting the workflow of CI.
Thankfully, all the machines hosted on MacStadium are set to never sleep by
default. It&#x27;s just done in &lt;strong&gt;System Preferences &amp;gt; Energy Saver&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;

&lt;h3 id=&quot;installing-xcode&quot;&gt;Installing Xcode&lt;&#x2F;h3&gt;

&lt;p&gt;There are two ways to install Xcode. You can either download it from Apple&#x27;s
developer portal or use the App Store where you might be asked to fill in your
credit card information. To avoid that, manually download Xcode:&lt;&#x2F;p&gt;

&lt;ol&gt;
  &lt;li&gt;Connect via VNC to the remote Mac machine&lt;&#x2F;li&gt;
  &lt;li&gt;Open a browser and go to &lt;a href=&quot;https:&#x2F;&#x2F;developer.apple.com&#x2F;download&#x2F;more&quot;&gt;https:&#x2F;&#x2F;developer.apple.com&#x2F;download&#x2F;more&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
  &lt;li&gt;Login with your existing AppleID or create one&lt;&#x2F;li&gt;
  &lt;li&gt;
    &lt;p&gt;Select the Xcode version you wish to install&lt;&#x2F;p&gt;

    &lt;p&gt;&lt;img src=&quot;&#x2F;images&#x2F;blogimages&#x2F;how-to-use-macstadium-and-gitlab-ci-to-build-your-macos-or-ios-projects&#x2F;download-xcode-without-cc-info.png&quot; alt=&quot;Download latest stable Xcode&quot; class=&quot;shadow&quot; &#x2F;&gt;&lt;&#x2F;p&gt;

    &lt;p&gt;This should download the Xcode package in your Downloads folder and
decompress it automatically. After a couple of minutes it should finish.&lt;&#x2F;p&gt;
  &lt;&#x2F;li&gt;
  &lt;li&gt;
    &lt;p&gt;Open a terminal and move &lt;code&gt;Xcode.app&lt;&#x2F;code&gt; to &lt;code&gt;&#x2F;Applications&lt;&#x2F;code&gt; so that it can be
found by Launchpad:&lt;&#x2F;p&gt;

&lt;pre class=&quot;highlight plaintext&quot;&gt;&lt;code&gt;mv ~&#x2F;Downloads&#x2F;Xcode.app &#x2F;Applications
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;  &lt;&#x2F;li&gt;
  &lt;li&gt;Go to your Applications, and double click on Xcode in order to install it.
The verification will begin, that should take a minute.&lt;&#x2F;li&gt;
  &lt;li&gt;Answer &quot;Open&quot; when you are asked if you are sure you want to open it.&lt;&#x2F;li&gt;
  &lt;li&gt;Select &quot;Agree&quot; in the License Agreement and provide your administrator
password.&lt;&#x2F;li&gt;
  &lt;li&gt;The installation process should begin and after a while you will have Xcode
installed and ready to be used.&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;

&lt;p&gt;In the next step we will install the command line developer tools.&lt;&#x2F;p&gt;

&lt;h3 id=&quot;installing-the-command-line-tools&quot;&gt;Installing the command line tools&lt;&#x2F;h3&gt;

&lt;p&gt;The command line tools are a subsection of Xcode, so if you installed Xcode,
you may skip this part.&lt;&#x2F;p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;Open the Terminal app or run this command via SSH:&lt;&#x2F;p&gt;

&lt;pre class=&quot;highlight shell&quot;&gt;&lt;code&gt; xcode-select --install
&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;  &lt;&#x2F;li&gt;
  &lt;li&gt;
    &lt;p&gt;Accept the License Agreement and the installation will begin&lt;&#x2F;p&gt;
  &lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;

&lt;hr &#x2F;&gt;

&lt;p&gt;Now that all development tools are installed, it&#x27;s time to install GitLab
Runner.&lt;&#x2F;p&gt;

&lt;h2 id=&quot;installing-and-configuring-the-gitlab-runner&quot;&gt;Installing and configuring the GitLab Runner&lt;&#x2F;h2&gt;

&lt;p&gt;GitLab Runner is responsible for running your jobs in macOS and then it
reports the results back to GitLab.&lt;&#x2F;p&gt;

&lt;p&gt;To install it, &lt;a href=&quot;https:&#x2F;&#x2F;docs.gitlab.com&#x2F;runner&#x2F;install&#x2F;osx.html#installation&quot; title=&quot;Documentation on installing GitLab Runner on macOS&quot;&gt;follow the instructions in the Runner&#x27;s documentation&lt;&#x2F;a&gt;.
Make sure to also carefully read the &lt;a href=&quot;https:&#x2F;&#x2F;docs.gitlab.com&#x2F;runner&#x2F;install&#x2F;osx.html#limitations-on-macos&quot; title=&quot;Limitations of macOS Runner&quot;&gt;current limitations&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;

&lt;h2 id=&quot;testing-a-project-with-ci&quot;&gt;Testing a project with CI&lt;&#x2F;h2&gt;

&lt;p&gt;The final piece of this puzzle is to set up a project in GitLab (your own
&lt;a href=&quot;&#x2F;products&quot;&gt;CE&#x2F;EE instance &lt;&#x2F;a&gt; or even &lt;a href=&quot;&#x2F;gitlab-com&quot;&gt;GitLab.com&lt;&#x2F;a&gt;) and hook it up
with Mac mini. We will not expand on that, but you can follow this nice blog post
by Angelo Stavrow on &lt;a href=&quot;&#x2F;2016&#x2F;03&#x2F;10&#x2F;setting-up-gitlab-ci-for-ios-projects&#x2F;&quot; title=&quot;Blog on setting up CI for iOS projects&quot;&gt;Setting up GitLab CI for iOS projects&lt;&#x2F;a&gt;.
It includes comprehensive steps to get you started.&lt;&#x2F;p&gt;

&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;&#x2F;h2&gt;

&lt;p&gt;Having a dedicated Mac machine for your development can save you precious time
when you follow the Continuous Integration workflow with your team. In this
tutorial, you&#x27;ve seen how to quickly get a remote Mac mini up and running
for your needs. Be sure to add the promo code &lt;code&gt;GITLAB10&lt;&#x2F;code&gt; on checkout for 10% off!&lt;&#x2F;p&gt;

&lt;p&gt;Happy building!&lt;&#x2F;p&gt;

&lt;hr &#x2F;&gt;

&lt;p class=&quot;alert alert-success&quot;&gt;&lt;i class=&quot;fa fa-info-circle&quot; aria-hidden=&quot;true&quot; style=&quot;color: rgb(60,118,61);&quot;&gt;&lt;&#x2F;i&gt;
Get 10% off of all MacStadium plans by using &lt;strong&gt;GITLAB10&lt;&#x2F;strong&gt; at checkout.
The coupon can only be applied when signing up hardware, but if you are an
existing customer who is using Gitlab and makes a change in hardware, you can
always apply it again or request the discount in a ticket.&lt;&#x2F;p&gt;

&lt;hr &#x2F;&gt;

&lt;p class=&quot;note&quot;&gt;Cover image &lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-com&#x2F;www-gitlab-com&#x2F;merge_requests&#x2F;3324#note_29314223&quot;&gt;provided by MacStadium&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;img src=&#x27;https:&#x2F;&#x2F;about.gitlab.com&#x2F;images&#x2F;blogimages&#x2F;how-to-use-macstadium-and-gitlab-ci-to-build-your-macos-or-ios-projects&#x2F;macstadium-datacenter.jpg&#x27; class=&#x27;webfeedsFeaturedVisual&#x27; style=&#x27;display: none;&#x27; &#x2F;&gt;</content>
</entry>
<entry>
<title>Join GitLab's 3rd Issue Bash This June</title>
<link href='https://about.gitlab.com/2017/05/11/gitlab-issue-bash-june-2017/' rel='alternate' />
<id>https://about.gitlab.com/2017/05/11/gitlab-issue-bash-june-2017/</id>
<published>2017-05-11T00:00:00+00:00</published>
<updated>2017-05-11T00:00:00+00:00</updated>
<author>
<name>Mark Fletcher</name>
</author>
<content type='html'>&lt;p&gt;There are currently over 7000 open issues on GitLab CE,
and we need your help to sort them out! We have over 1500
&lt;a href=&quot;http:&#x2F;&#x2F;contributors.gitlab.com&#x2F;contributors&#x2F;&quot;&gt;GitLab contributors&lt;&#x2F;a&gt;,
and we want everyone to be able to find issues to work on.&lt;&#x2F;p&gt;

&lt;p&gt;Of course, some lucky contributors will be rewarded with awesome swag! 🙌&lt;&#x2F;p&gt;



&lt;p class=&quot;alert alert-info text-center&quot;&gt;Our last Issue Bash helped us to close over 160 issues.&lt;&#x2F;p&gt;

&lt;h2 id=&quot;when-is-it-going-to-happen&quot;&gt;When is it Going to Happen?&lt;&#x2F;h2&gt;

&lt;p&gt;We&#x27;ll kick it off at 00:01 UTC on Saturday, &lt;strong&gt;June 3rd&lt;&#x2F;strong&gt;
and will keep it up until 23:59 UTC on Sunday, &lt;strong&gt;June 4th&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;

&lt;h2 id=&quot;who-can-contribute&quot;&gt;Who Can Contribute?&lt;&#x2F;h2&gt;

&lt;p class=&quot;alert alert-webcast&quot;&gt;&lt;i class=&quot;fa fa-gitlab&quot; style=&quot;color:rgb(107,79,187); font-size:.85em&quot; aria-hidden=&quot;true&quot;&gt;&lt;&#x2F;i&gt;
  
&lt;strong&gt;At GitLab, everyone can contribute!&lt;&#x2F;strong&gt;
  
&lt;i class=&quot;fa fa-gitlab&quot; style=&quot;color:rgb(107,79,187); font-size:.85em&quot; aria-hidden=&quot;true&quot;&gt;&lt;&#x2F;i&gt;&lt;&#x2F;p&gt;

&lt;p&gt;This is your chance to get involved! Most of the tasks don&#x27;t require
technical expertise, therefore, non-technical community
members are definitely welcome and prize worthy!&lt;&#x2F;p&gt;

&lt;h2 id=&quot;how-do-you-get-involved&quot;&gt;How do You Get Involved?&lt;&#x2F;h2&gt;

&lt;p&gt;The last issue bash our contributors made over 1600 contributions in order to close 160 issues, label over 200 of our unlabelled issues and add accurate labels to countless others.&lt;&#x2F;p&gt;

&lt;p&gt;There are four main things we need from our task force:&lt;&#x2F;p&gt;

&lt;ul&gt;
  &lt;li&gt;Track issues that can be easily closed&lt;&#x2F;li&gt;
  &lt;li&gt;Categorize issues&lt;&#x2F;li&gt;
  &lt;li&gt;Fix known bugs and pain points&lt;&#x2F;li&gt;
  &lt;li&gt;Ship existing feature proposals&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;

&lt;p&gt;Check out the &lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;issues&#x2F;29256&quot;&gt;Q2 Issue Bash Proposal&lt;&#x2F;a&gt; to find out how to get started.&lt;&#x2F;p&gt;

&lt;p&gt;We had some great feedback from the Community after the last event, so we aim to make some changes over the next few events to make participating and collaboration easier and more fun!&lt;&#x2F;p&gt;

&lt;h2 id=&quot;prizes&quot;&gt;Prizes&lt;&#x2F;h2&gt;

&lt;p&gt;We have some awesome swag ready for you:&lt;&#x2F;p&gt;

&lt;ul&gt;
  &lt;li&gt;Five T-shirts&lt;&#x2F;li&gt;
  &lt;li&gt;Four pairs of pajama pants&lt;&#x2F;li&gt;
  &lt;li&gt;Three Moleskine notebooks&lt;&#x2F;li&gt;
  &lt;li&gt;Two &lt;a href=&quot;https:&#x2F;&#x2F;getchip.com&#x2F;pages&#x2F;pocketchip&quot;&gt;PocketCHIPs&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
  &lt;li&gt;One messenger bag (filled with all the stuff listed above!)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;

&lt;p&gt;&lt;img src=&quot;&#x2F;images&#x2F;blogimages&#x2F;gitlab-issue-bash-june-2017-prizes.png&quot; alt=&quot;GitLab Issue Bash - Prizes&quot; &#x2F;&gt;&lt;&#x2F;p&gt;

&lt;p&gt;If we can beat our old target from the last Issue Bash (&amp;gt; 200 issue closures), we&#x27;ll give away a &lt;strong&gt;mystery prize&lt;&#x2F;strong&gt; as well! 🎉 We still don&#x27;t know what it is!&lt;&#x2F;p&gt;

&lt;p&gt;Users making any contributions to the project that fall into the above categories,
between the start and end times of the event, will be entered into the random draw
to win a prize. The contributions will be collated after the end of the event and
prize winners, drawn at random, will be contacted in the weeks that follow.&lt;&#x2F;p&gt;

&lt;h2 id=&quot;questions-more-info&quot;&gt;Questions? More info?&lt;&#x2F;h2&gt;

&lt;p&gt;Several &lt;a href=&quot;&#x2F;team&#x2F;&quot;&gt;GitLab team&lt;&#x2F;a&gt; and &lt;a href=&quot;&#x2F;core-team&#x2F;&quot;&gt;GitLab core team&lt;&#x2F;a&gt; members will be on hand to answer questions and close issues. Please mention them if you need any help or need attention on an issue&lt;&#x2F;p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;markglenfletcher&quot;&gt;@markglenfletcher&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;haynes&quot;&gt;@haynes&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;blackst0ne&quot;&gt;@blackst0ne&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;img src=&#x27;https:&#x2F;&#x2F;about.gitlab.com&#x2F;images&#x2F;blogimages&#x2F;gitlab-issue-bash-june-2017-cover.png&#x27; class=&#x27;webfeedsFeaturedVisual&#x27; style=&#x27;display: none;&#x27; &#x2F;&gt;</content>
</entry>
<entry>
<title>GitLab's Functional Group Updates - April 24th - May 5th</title>
<link href='https://about.gitlab.com/2017/05/11/functional-group-updates/' rel='alternate' />
<id>https://about.gitlab.com/2017/05/11/functional-group-updates/</id>
<published>2017-05-11T00:00:00+00:00</published>
<updated>2017-05-11T00:00:00+00:00</updated>
<author>
<name>Kirsten Abma</name>
</author>
<content type='html'>&lt;!-- beginning of the intro - leave it as is --&gt;

&lt;p&gt;Every day from Monday to Thursday, right before our &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;handbook&#x2F;#team-call&quot;&gt;GitLab Team call&lt;&#x2F;a&gt;, a different Functional Group gives an &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;handbook&#x2F;people-operations&#x2F;functional-group-updates&#x2F;&quot;&gt;update&lt;&#x2F;a&gt; to our team.&lt;&#x2F;p&gt;

&lt;p&gt;The format of these calls is simple and short where they can either give a presentation or quickly walk the team through their agenda.&lt;&#x2F;p&gt;



&lt;h2 id=&quot;recordings&quot;&gt;Recordings&lt;&#x2F;h2&gt;

&lt;p&gt;All of the updates are recorded using &lt;a href=&quot;https:&#x2F;&#x2F;zoom.us&quot;&gt;Zoom&lt;&#x2F;a&gt; at the time of the call. All the recordings will be uploaded to our YouTube account and made public, with the exception of the Sales and Finance updates.&lt;&#x2F;p&gt;

&lt;!-- end of the intro --&gt;

&lt;!-- beginning of the FG block - repeat as many times as necessary (copy and paste the entire block) --&gt;

&lt;hr &#x2F;&gt;

&lt;h3 id=&quot;ux-team&quot;&gt;UX Team&lt;&#x2F;h3&gt;

&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;docs.google.com&#x2F;a&#x2F;gitlab.com&#x2F;presentation&#x2F;d&#x2F;163xL_FLQLsWD8Yv9GfkRdBHkqb_MqB-lnJBrihjQ-A0&#x2F;edit?usp=sharing&quot;&gt;Presentation slides&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;

&lt;figure class=&quot;video_container&quot;&gt;
  &lt;iframe src=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;embed&#x2F;NtDzyHnedoE&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt; &lt;&#x2F;iframe&gt;
&lt;&#x2F;figure&gt;

&lt;!-- end of the FG block --&gt;

&lt;!-- beginning of the FG block - repeat as many times as necessary (copy and paste the entire block) --&gt;

&lt;hr &#x2F;&gt;

&lt;h3 id=&quot;ci-team&quot;&gt;CI Team&lt;&#x2F;h3&gt;

&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;docs.google.com&#x2F;presentation&#x2F;d&#x2F;1mmZFme78SURmonG-BKN1wYvN3zuw01I-jh6VMnsKu10&#x2F;edit#slide=id.g1d9550ef42_0_42&quot;&gt;Presentation slides&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;

&lt;figure class=&quot;video_container&quot;&gt;
  &lt;iframe src=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;embed&#x2F;1-KdQ--gq_Q&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt; &lt;&#x2F;iframe&gt;
&lt;&#x2F;figure&gt;

&lt;!-- end of the FG block --&gt;

&lt;hr &#x2F;&gt;

&lt;h3 id=&quot;build-team&quot;&gt;Build Team&lt;&#x2F;h3&gt;

&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;docs.google.com&#x2F;presentation&#x2F;d&#x2F;1POef4yOW4MvAF43uPTPR1e9FN4Bx7rhihtwotf-VQDY&#x2F;edit#slide=id.g153a2ed090_0_63&quot;&gt;Presentation slides&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;

&lt;figure class=&quot;video_container&quot;&gt;
  &lt;iframe src=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;embed&#x2F;skXtSrBhSck&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt; &lt;&#x2F;iframe&gt;
&lt;&#x2F;figure&gt;

&lt;!-- end of the FG block --&gt;

&lt;hr &#x2F;&gt;

&lt;h3 id=&quot;support-team&quot;&gt;Support Team&lt;&#x2F;h3&gt;

&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;docs.google.com&#x2F;presentation&#x2F;d&#x2F;1EizMPiTJFYm7R7Av6J7DguR_Crgo_t8pufLYKoGC5sU&#x2F;&quot;&gt;Presentation slides&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;

&lt;figure class=&quot;video_container&quot;&gt;
  &lt;iframe src=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;embed&#x2F;hIm-idZFoeY&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt; &lt;&#x2F;iframe&gt;
&lt;&#x2F;figure&gt;

&lt;!-- end of the FG block --&gt;

&lt;hr &#x2F;&gt;

&lt;h3 id=&quot;infrastructure-team&quot;&gt;Infrastructure Team&lt;&#x2F;h3&gt;

&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;docs.google.com&#x2F;presentation&#x2F;d&#x2F;1SkoYYH3VCwHTdvW7rT3ZP0_XSahBx4f-7ON0-iqire0&#x2F;pub?start=false&amp;amp;loop=false&amp;amp;delayms=3000&amp;amp;slide=id.g1ed640ff4e_0_2&quot;&gt;Presentation slides&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;

&lt;figure class=&quot;video_container&quot;&gt;
  &lt;iframe src=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;embed&#x2F;sISWmcznwL8&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt; &lt;&#x2F;iframe&gt;
&lt;&#x2F;figure&gt;

&lt;!-- end of the FG block --&gt;

&lt;hr &#x2F;&gt;

&lt;h3 id=&quot;frontend-team&quot;&gt;Frontend Team&lt;&#x2F;h3&gt;

&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;drive.google.com&#x2F;a&#x2F;gitlab.com&#x2F;file&#x2F;d&#x2F;0B6SrD3vaBHUeNm4wUi1sY3VCNXc&#x2F;view?usp=sharing&quot;&gt;Presentation slides&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;

&lt;figure class=&quot;video_container&quot;&gt;
  &lt;iframe src=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;embed&#x2F;YOqYNXGd1x4&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt; &lt;&#x2F;iframe&gt;
&lt;&#x2F;figure&gt;

&lt;!-- end of the FG block --&gt;

&lt;hr &#x2F;&gt;

&lt;h3 id=&quot;prometheus-team&quot;&gt;Prometheus Team&lt;&#x2F;h3&gt;

&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;docs.google.com&#x2F;presentation&#x2F;d&#x2F;1e8z3t_rPqX5A9_6VYfGVGRIF1casz5SqBCFvsVyyNE4&#x2F;edit&quot;&gt;Presentation slides&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;

&lt;figure class=&quot;video_container&quot;&gt;
  &lt;iframe src=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;embed&#x2F;9JDZ0NHKPUc&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt; &lt;&#x2F;iframe&gt;
&lt;&#x2F;figure&gt;

&lt;!-- end of the FG block --&gt;

&lt;hr &#x2F;&gt;

&lt;h3 id=&quot;channel-team&quot;&gt;Channel Team&lt;&#x2F;h3&gt;

&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;docs.google.com&#x2F;presentation&#x2F;d&#x2F;191xTpGogIEtSGBdGeEthOm2ieZAkHitkJvc-dPXv1gM&#x2F;edit&quot;&gt;Presentation slides&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;

&lt;figure class=&quot;video_container&quot;&gt;
  &lt;iframe src=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;embed&#x2F;IeKn0CgBzZI&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt; &lt;&#x2F;iframe&gt;
&lt;&#x2F;figure&gt;

&lt;!-- end of the FG block --&gt;

&lt;hr &#x2F;&gt;

&lt;p&gt;Questions? Leave a comment below or tweet &lt;a href=&quot;https:&#x2F;&#x2F;twitter.com&#x2F;gitlab&quot;&gt;@GitLab&lt;&#x2F;a&gt;! Would you like to join us? Check out our &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;jobs&#x2F;&quot;&gt;job openings&lt;&#x2F;a&gt;!&lt;&#x2F;p&gt;
&lt;img src=&#x27;https:&#x2F;&#x2F;about.gitlab.com&#x2F;images&#x2F;default-blog-image.png&#x27; class=&#x27;webfeedsFeaturedVisual&#x27; style=&#x27;display: none;&#x27; &#x2F;&gt;</content>
</entry>
<entry>
<title>Demo - GitLab Service Desk</title>
<link href='https://about.gitlab.com/2017/05/09/demo-service-desk/' rel='alternate' />
<id>https://about.gitlab.com/2017/05/09/demo-service-desk/</id>
<published>2017-05-09T00:00:00+00:00</published>
<updated>2017-05-09T00:00:00+00:00</updated>
<author>
<name>Victor Wu</name>
</author>
<content type='html'>&lt;p&gt;As you expand your software products, GitLab&#x27;s new &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;2017&#x2F;04&#x2F;22&#x2F;gitlab-9-1-released&#x2F;#service-desk-eep&quot;&gt;Service Desk&lt;&#x2F;a&gt; feature in &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;2017&#x2F;04&#x2F;22&#x2F;gitlab-9-1-released&#x2F;&quot;&gt;9.1&lt;&#x2F;a&gt; enables your growing user base to send emails to your team via a dedicated address per project for any kind of feedback or support.&lt;&#x2F;p&gt;



&lt;p&gt;After enabling Service Desk in your project settings, every email sent to the support email address shows up as a confidential issue in your project. Commenting on them generates a response to the original email sender, creating a brand new, integrated user feedback channel right inside GitLab. As Service Desk is built right into GitLab itself, the complexity and inefficiencies of multiple tools and external integrations are eliminated, significantly shortening the cycle time from feedback to software update.&lt;&#x2F;p&gt;

&lt;h3 id=&quot;demo&quot;&gt;Demo&lt;&#x2F;h3&gt;

&lt;p&gt;Watch this demonstration of a support workflow using Service Desk, and how you can use other features within GitLab — like creating a “service-desk-tickets” label so that your support team can quickly filter issues within a project.&lt;&#x2F;p&gt;

&lt;figure class=&quot;video_container&quot;&gt;
  &lt;iframe src=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;embed&#x2F;m6oHRIeT1AE&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt; &lt;&#x2F;iframe&gt;
&lt;&#x2F;figure&gt;

&lt;p class=&quot;alert alert-gitlab-orange&quot;&gt;Sign up for a free trial of &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;free-trial&#x2F;&quot;&gt;GitLab Enterprise Edition&lt;&#x2F;a&gt; to see firsthand how it can help your team.&lt;&#x2F;p&gt;
&lt;img src=&#x27;https:&#x2F;&#x2F;about.gitlab.com&#x2F;images&#x2F;blogimages&#x2F;demo-service-desk.jpg&#x27; class=&#x27;webfeedsFeaturedVisual&#x27; style=&#x27;display: none;&#x27; &#x2F;&gt;</content>
</entry>
<entry>
<title>GitLab 9.1.3, 9.0.7, and 8.17.6 Released</title>
<link href='https://about.gitlab.com/2017/05/08/gitlab-9-dot-1-dot-3-security-release/' rel='alternate' />
<id>https://about.gitlab.com/2017/05/08/gitlab-9-dot-1-dot-3-security-release/</id>
<published>2017-05-08T00:00:00+00:00</published>
<updated>2017-05-08T00:00:00+00:00</updated>
<author>
<name>Brian Neel</name>
</author>
<content type='html'>&lt;p&gt;Today we are releasing versions 9.1.3, 9.0.7, and 8.17.6 for GitLab 
Community Edition (CE) and Enterprise Edition (EE).&lt;&#x2F;p&gt;

&lt;p&gt;These versions contain several security fixes, including security upgrades for 
Mattermost, fixes for several persistent Cross-site Scripting (XSS) vulnerabilities,
and fixes for several information disclosure vulnerabilities. We recommend that 
all GitLab installations be upgraded to one of these versions.&lt;&#x2F;p&gt;

&lt;p&gt;Please read on for more details.&lt;&#x2F;p&gt;



&lt;h2 id=&quot;security-upgrade-for-mattermost-versions-37-and-36&quot;&gt;Security upgrade for Mattermost versions 3.7 and 3.6&lt;&#x2F;h2&gt;

&lt;p&gt;Mattermost has not yet released full details, however an important security
release was published and Mattermost has advised all users to upgrade immediately.
GitLab Omnibus CE+EE versions 9.1 and 9.0 have been upgraded to Mattermost 3.7.5 
and GitLab Omnibus CE+EE version 8.17 has been upgraded to Mattermost 3.6.7. &lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;omnibus-gitlab&#x2F;issues&#x2F;2282&quot;&gt;#2282&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;

&lt;p&gt;This upgrade also required the addition of a new Mattermost setting in &lt;code&gt;gitlab.rb&lt;&#x2F;code&gt;. &lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;omnibus-gitlab&#x2F;issues&#x2F;2286&quot;&gt;#2286&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;

&lt;h2 id=&quot;security-upgrade-for-mysql-client-libraries&quot;&gt;Security upgrade for MySQL client libraries&lt;&#x2F;h2&gt;

&lt;p&gt;The MySQL client library included with GitLab Omnibus packages has been upgraded
to 5.5.56 to patch &lt;a href=&quot;https:&#x2F;&#x2F;cve.mitre.org&#x2F;cgi-bin&#x2F;cvename.cgi?name=CVE-2017-3305&quot;&gt;CVE-2017-3305&lt;&#x2F;a&gt;, a potential man-in-the-middle vulnerability for 
installations using MySQL over the network. &lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;omnibus-gitlab&#x2F;issues&#x2F;2311&quot;&gt;#2311&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;

&lt;h2 id=&quot;cross-site-scripting-xss-vulnerability-in-project-import-file-names-for-gitlab_project-import-types&quot;&gt;Cross-Site Scripting (XSS) vulnerability in project import file names for gitlab_project import types&lt;&#x2F;h2&gt;

&lt;p&gt;Timo Schmid from &lt;a href=&quot;https:&#x2F;&#x2F;www.ernw.de&#x2F;&quot;&gt;ERNW&lt;&#x2F;a&gt; reported a persistent Cross-Site Scripting vulnerability in the new 
project import view for gitlab_project import types. This XSS vulnerability was
caused by the use of Hamlit filters inside HAML views without manually escaping 
HTML. Unlike content outside of a filter, content inside Hamlit filters (&lt;code&gt;:css&lt;&#x2F;code&gt;,
&lt;code&gt;:javascript&lt;&#x2F;code&gt;, &lt;code&gt;:preserve&lt;&#x2F;code&gt;, &lt;code&gt;:plain&lt;&#x2F;code&gt;) is not automatically escaped. &lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;issues&#x2F;28325&quot;&gt;#28325&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;

&lt;h2 id=&quot;cross-site-scripting-xss-vulnerability-in-git-submodule-support&quot;&gt;Cross-Site Scripting (XSS) vulnerability in git submodule support&lt;&#x2F;h2&gt;

&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;twitter.com&#x2F;jobertabma&quot;&gt;Jobert Abma&lt;&#x2F;a&gt; from &lt;a href=&quot;https:&#x2F;&#x2F;www.hackerone.com&#x2F;&quot;&gt;HackerOne&lt;&#x2F;a&gt; reported a persitent XSS vulnerability in the GitLab
repository files view that could be exploited by injecting malicious script into 
a git submodule. &lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;issues&#x2F;30527&quot;&gt;#30527&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;

&lt;h2 id=&quot;cross-site-scripting-xss-vulnerability-in-repository-new-branch-view&quot;&gt;Cross-Site Scripting (XSS) vulnerability in repository &quot;new branch&quot; view&lt;&#x2F;h2&gt;

&lt;p&gt;A GitLab user reported a persistent XSS vulnerability in the repository new 
branch view that allowed malicious branch names or &lt;code&gt;git&lt;&#x2F;code&gt; references to execute 
arbitrary Javascript. &lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;issues&#x2F;31332&quot;&gt;#31332&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;

&lt;h2 id=&quot;cross-site-scripting-xss-vulnerability-in-mirror-errors-display&quot;&gt;Cross-Site Scripting (XSS) vulnerability in mirror errors display&lt;&#x2F;h2&gt;

&lt;p&gt;While investigating Timo Schmid&#x27;s previously reported XSS vulnerability in import
filenames another persistent XSS vulnerability was discovered in the GitLab 
Enterprise Edition&#x27;s (EE) mirror view. This vulnerability was also caused by the
misuse of Hamlit filters. &lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;issues&#x2F;28325&quot;&gt;#28325&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;

&lt;h2 id=&quot;potential-xss-vulnerability-in-droplab&quot;&gt;Potential XSS vulnerability in DropLab&lt;&#x2F;h2&gt;

&lt;p&gt;An internal code audit disclosed a vulnerability in DropLab&#x27;s templating that, 
while not currently exploitable, could become exploitable depending on how the
templates were used in the future. This is a preventative patch. &lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;issues&#x2F;30761&quot;&gt;#30761&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;

&lt;h2 id=&quot;tab-nabbing-vulnerabilities-in-mardown-link-filter-asciidoc-files-and-other-markup-files&quot;&gt;Tab Nabbing vulnerabilities in mardown link filter, Asciidoc files, and other markup files&lt;&#x2F;h2&gt;

&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;twitter.com&#x2F;EdOverflow&quot;&gt;edio&lt;&#x2F;a&gt; via &lt;a href=&quot;https:&#x2F;&#x2F;www.hackerone.com&#x2F;&quot;&gt;HackerOne&lt;&#x2F;a&gt; reported two tab nabbing vulnerabilities. The first tab
nabbing vulnerability was caused by improper hostname filtering when identifying
user-supplied external links. GitLab did not properly filter usernames from the 
URL. An attacker could construct a specially crafted link including a username to
bypass GitLab&#x27;s external link filter. This allowed an attacker to post links in 
Markdown that did not include the appropriate &quot;noreferrer noopener&quot; options,
allowing tab nabbing attacks.&lt;&#x2F;p&gt;

&lt;p&gt;The second vulnerability was in the AsciiDoctor markup library. AsciiDoctor was 
not properly including the &quot;noreferrer noopener&quot; options with external links. An
internal investigation discovered other markup libraries that were also vulnerable. &lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;issues&#x2F;29413&quot;&gt;#29413&lt;&#x2F;a&gt; &#x2F; &lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;issues&#x2F;29374&quot;&gt;#29374&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;

&lt;h2 id=&quot;unauthorized-disclosure-of-wiki-pages-in-search&quot;&gt;Unauthorized disclosure of wiki pages in search&lt;&#x2F;h2&gt;

&lt;p&gt;M. Hasbini reported a flaw in the project search feature that allowed authenticated
users to disclose the contents of private wiki pages inside public projects. &lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;issues&#x2F;31157&quot;&gt;#31157&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;

&lt;h2 id=&quot;external-users-can-view-internal-snippets&quot;&gt;External users can view internal snippets&lt;&#x2F;h2&gt;

&lt;p&gt;Christian Kühn discovered a vulnerability in GitLab snippets that allowed an
external user to view the contents of internal snippets. &lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;issues&#x2F;30487&quot;&gt;#30487&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;

&lt;h2 id=&quot;subgroup-visibility-for-private-subgroups-under-a-public-parent-group&quot;&gt;Subgroup visibility for private subgroups under a public parent group&lt;&#x2F;h2&gt;

&lt;p&gt;Matt Harrison discovered a vulnerability with subgroups that allowed private 
subgroup names to be disclosed when they belong to a parent group that is public. &lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;issues&#x2F;31068&quot;&gt;#31068&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;

&lt;h3 id=&quot;versions-affected&quot;&gt;Versions affected&lt;&#x2F;h3&gt;

&lt;p&gt;Mattermost vulnerability:&lt;&#x2F;p&gt;
&lt;ul&gt;
  &lt;li&gt;GitLab CE+EE Omnibus (with Mattermost enabled) 7.14-8.17.5, 9.0.0-9.0.6, 9.1.0-9.1.2&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;

&lt;p&gt;Update mysql to 5.5.56 for CVE-2017-3305:&lt;&#x2F;p&gt;
&lt;ul&gt;
  &lt;li&gt;GitLab CE+EE Omnibus (with MySQL enabled) All versions up to and including 8.17.5, 9.0.0-9.0.6, 9.1.0-9.1.2&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;

&lt;p&gt;Cross-Site Scripting (XSS) vulnerability in mirror errors display:&lt;&#x2F;p&gt;
&lt;ul&gt;
  &lt;li&gt;GitLab EE 9.0.0-9.0.6, 9.1.0-9.1.2&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;

&lt;p&gt;Cross-Site Scripting (XSS) vulnerability in project import via GitLab export (file names):&lt;&#x2F;p&gt;
&lt;ul&gt;
  &lt;li&gt;GitLab CE+EE 8.3.0-8.17.5, 9.0.0-9.0.6, 9.1.0-9.1.2&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;

&lt;p&gt;Cross-Site Scripting (XSS) vulnerability in repository &quot;new branch&quot; view:&lt;&#x2F;p&gt;
&lt;ul&gt;
  &lt;li&gt;GitLab CE+EE 8.13.0-8.17.5, 9.0.0-9.0.6, 9.1.0-9.1.2&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;

&lt;p&gt;Persistent XSS in git submodule support:&lt;&#x2F;p&gt;
&lt;ul&gt;
  &lt;li&gt;GitLab CE+EE 6.6.0-8.17.5, 9.0.0-9.0.6, 9.1.0-9.1.2&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;

&lt;p&gt;Potential XSS vulnerability in DropLab:&lt;&#x2F;p&gt;
&lt;ul&gt;
  &lt;li&gt;GitLab CE+EE 9.1.0-9.1.2&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;

&lt;p&gt;Subgroup visibility for private subgroups under a public parent group:&lt;&#x2F;p&gt;
&lt;ul&gt;
  &lt;li&gt;GitLab CE+EE 9.0.0-9.0.6,9.1.0-9.1.2&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;

&lt;p&gt;Tab Nabbing vulnerabilities in mardown link filter, Asciidoc files, and other markup files:&lt;&#x2F;p&gt;
&lt;ul&gt;
  &lt;li&gt;AsciiDoctor: GitLab CE+EE 7.12.0-8.17.5, 9.0.0-9.0.6, 9.1.0-9.1.2&lt;&#x2F;li&gt;
  &lt;li&gt;Markdown links: GitLab CE+EE 8.14.0-8.17.5, 9.0.0-9.0.6, 9.1.0-9.1.2&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;

&lt;p&gt;Unauthorized disclosure of wiki pages in search:&lt;&#x2F;p&gt;
&lt;ul&gt;
  &lt;li&gt;GitLab CE+EE 8.14.0-8.17.5, 9.0.0-9.0.6, 9.1.0-9.1.2&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;

&lt;p&gt;External Users can view internal snippets:&lt;&#x2F;p&gt;
&lt;ul&gt;
  &lt;li&gt;GitLab CE+EE 7.4.0-8.17.5, 9.0.0-9.0.6, 9.1.0-9.1.2&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;

&lt;p&gt;We recommend that all installations running a version mentioned above be 
upgraded as soon as possible. No workarounds are available for these 
vulnerabilities.&lt;&#x2F;p&gt;

&lt;h2 id=&quot;upgrade-barometer&quot;&gt;Upgrade barometer&lt;&#x2F;h2&gt;

&lt;p&gt;These versions do not include any migrations and will not require downtime.&lt;&#x2F;p&gt;

&lt;p&gt;Please be aware that by default the Omnibus packages will stop, run migrations, 
and start again, no matter how “big” or “small” the upgrade is. This behavior 
can be changed by adding a &lt;a href=&quot;http:&#x2F;&#x2F;doc.gitlab.com&#x2F;omnibus&#x2F;update&#x2F;README.html&quot;&gt;&#x2F;etc&#x2F;gitlab&#x2F;skip-auto-migrations file&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;

&lt;h2 id=&quot;updating&quot;&gt;Updating&lt;&#x2F;h2&gt;

&lt;p&gt;To update, check out our &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;update&quot;&gt;update page&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;

&lt;h2 id=&quot;enterprise-edition&quot;&gt;Enterprise Edition&lt;&#x2F;h2&gt;

&lt;p&gt;Interested in GitLab Enterprise Edition? Check out the &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;features&#x2F;#enterprise&quot;&gt;features exclusive to
EE&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;

&lt;p&gt;Access to GitLab Enterprise Edition is included with a
&lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;pricing&#x2F;&quot;&gt;subscription&lt;&#x2F;a&gt;. No time to upgrade GitLab
yourself? Subscribers receive upgrade and installation services.&lt;&#x2F;p&gt;
&lt;img src=&#x27;https:&#x2F;&#x2F;about.gitlab.com&#x2F;images&#x2F;default-blog-image.png&#x27; class=&#x27;webfeedsFeaturedVisual&#x27; style=&#x27;display: none;&#x27; &#x2F;&gt;</content>
</entry>
<entry>
<title>What to Look for in a Continuous Integration Tool</title>
<link href='https://about.gitlab.com/2017/05/08/what-to-look-for-in-ci-cd-solution/' rel='alternate' />
<id>https://about.gitlab.com/2017/05/08/what-to-look-for-in-ci-cd-solution/</id>
<published>2017-05-08T00:00:00+00:00</published>
<updated>2017-05-08T00:00:00+00:00</updated>
<author>
<name>Rebecca Dodd</name>
</author>
<content type='html'>&lt;p&gt;The advantages of Continuous Integration and Delivery for catching errors while they&#x27;re still easy to fix and speeding up your time to market are &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;2017&#x2F;04&#x2F;12&#x2F;ways-ci-cd-helps&#x2F;&quot;&gt;well documented&lt;&#x2F;a&gt;, but even if you&#x27;re sold on CI&#x2F;CD, it can be tricky to take the next step. How do you choose the solution that&#x27;s right for your team?&lt;&#x2F;p&gt;



&lt;p&gt;The factors to consider when choosing a CI&#x2F;CD tool are similar to those of &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;2017&#x2F;04&#x2F;20&#x2F;choosing-git-management-solution&#x2F;&quot;&gt;choosing a Git management solution&lt;&#x2F;a&gt;: hosted vs. on-premise, open source vs. commercial, and integrations. You&#x27;ll also want to look at how easily the tool allows your team to visualize the release process and nip potential issues in the bud.&lt;&#x2F;p&gt;

&lt;h2 id=&quot;hosting&quot;&gt;Hosting&lt;&#x2F;h2&gt;

&lt;p&gt;Whether you prefer SaaS or to host yourself, you have options. Integrations with third-party services are sometimes easier with a cloud-based service, but some organizations prefer the peace of mind that comes with everything being housed within their walls. Ultimately you need to weigh up what resources you have at your disposal for hosting, and how you want to use them.&lt;&#x2F;p&gt;

&lt;h2 id=&quot;open-source-vs-commercial&quot;&gt;Open Source vs. Commercial&lt;&#x2F;h2&gt;

&lt;p&gt;Using an open source solution has its advantages: it&#x27;s free, and you can look under the hood and make alterations if needed. Make sure you do your research before committing though: do you need priority access to support? How will you manage if the vendor decides to abandon the product? Are there any features specific to a product that would make things easier for your team? Ask these questions first.&lt;&#x2F;p&gt;

&lt;h2 id=&quot;support-for-integrations&quot;&gt;Support for Integrations&lt;&#x2F;h2&gt;

&lt;p&gt;It&#x27;s fairly common for an organization&#x27;s software development lifecycle to rely on several integrated tools (such as &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;features&#x2F;issueboard&#x2F;&quot;&gt;issue boards&lt;&#x2F;a&gt; and other discussion features). Find out what your teams are already using and if the CI&#x2F;CD solution you&#x27;re considering is supported. There&#x27;s been growing interest in built-in CI&#x2F;CD, which means developers can spend less time stringing together their tooling and more on new features and improvements. Bringing all your tools under one product with one interface and datastore is also useful for things like &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;features&#x2F;cycle-analytics&#x2F;&quot;&gt;cycle analytics&lt;&#x2F;a&gt;, which can help to reduce the time between coming up with an idea and deploying it.&lt;&#x2F;p&gt;

&lt;h2 id=&quot;visualizing-the-release-process&quot;&gt;Visualizing the Release Process&lt;&#x2F;h2&gt;

&lt;p&gt;One of the advantages of leveraging CI&#x2F;CD is being able to see changes and new additions from the moment they&#x27;re created. Does your chosen solution offer &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;features&#x2F;review-apps&#x2F;&quot;&gt;Review Apps&lt;&#x2F;a&gt;, so you can automatically check out a live preview of new code? You might also benefit from &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;2017&#x2F;03&#x2F;22&#x2F;gitlab-9-0-released&#x2F;#deploy-boards-eep&quot;&gt;Deploy Boards&lt;&#x2F;a&gt;, where you can watch a deploy roll out across pods and monitor the health and deployment status of each environment, all in one place. This makes it easier to spot problems and stop or roll back with one click.  These are just a couple of features that can make a significant difference to your team&#x27;s efficiency.&lt;&#x2F;p&gt;

&lt;h2 id=&quot;so-how-does-gitlab-cicd-stack-up&quot;&gt;So how Does GitLab CI&#x2F;CD Stack up?&lt;&#x2F;h2&gt;

&lt;p&gt;We offer &lt;strong&gt;self-hosted&lt;&#x2F;strong&gt; options for both 
&lt;a href=&quot;&#x2F;products&quot;&gt;GitLab Enterprise Edition and Community Edition&lt;&#x2F;a&gt; 
and a &lt;strong&gt;hosted&lt;&#x2F;strong&gt; option for GitLab Enterprise Edition Premium on &lt;a href=&quot;&#x2F;&quot;&gt;GitLab.com&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;

&lt;p&gt;We have a &lt;strong&gt;free and open source&lt;&#x2F;strong&gt; offering, GitLab Community Edition, and two &lt;strong&gt;enterprise&lt;&#x2F;strong&gt; offerings, 
Enterprise Edition Starter and Enterprise Edition Premium, with advanced features such as &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;features&#x2F;gitlab-geo&#x2F;&quot;&gt;GitLab Geo&lt;&#x2F;a&gt;, &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;high-availability&#x2F;&quot;&gt;High Availability and Disaster Recovery&lt;&#x2F;a&gt;, &lt;a href=&quot;https:&#x2F;&#x2F;docs.gitlab.com&#x2F;ee&#x2F;user&#x2F;project&#x2F;file_lock.html&quot;&gt;File Locking&lt;&#x2F;a&gt; and &lt;a href=&quot;https:&#x2F;&#x2F;docs.gitlab.com&#x2F;ee&#x2F;user&#x2F;project&#x2F;service_desk.html&quot;&gt;Service Desk&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;

&lt;p&gt;You can &lt;strong&gt;visualize your release process&lt;&#x2F;strong&gt; in all versions of GitLab with GitLab &lt;a href=&quot;https:&#x2F;&#x2F;docs.gitlab.com&#x2F;ce&#x2F;ci&#x2F;pipelines.html&quot;&gt;CI&#x2F;CD Pipelines&lt;&#x2F;a&gt;, &lt;a href=&quot;&#x2F;features&#x2F;review-apps&#x2F;&quot;&gt;Review Apps&lt;&#x2F;a&gt; and &lt;a href=&quot;https:&#x2F;&#x2F;docs.gitlab.com&#x2F;ee&#x2F;administration&#x2F;monitoring&#x2F;prometheus&#x2F;&quot;&gt;Prometheus monitoring&lt;&#x2F;a&gt;. 
GitLab Enterprise Premium comes with &lt;a href=&quot;https:&#x2F;&#x2F;docs.gitlab.com&#x2F;ee&#x2F;user&#x2F;project&#x2F;deploy_boards.html&quot;&gt;Deploy Boards&lt;&#x2F;a&gt; and 
&lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;2017&#x2F;04&#x2F;22&#x2F;gitlab-9-1-released&#x2F;#canary-deployments-eep&quot;&gt;Canary Deployments&lt;&#x2F;a&gt; for even more advanced control over deployments.&lt;&#x2F;p&gt;

&lt;p&gt;Visit our &lt;a href=&quot;&#x2F;products&quot;&gt;Products page&lt;&#x2F;a&gt; and &lt;a href=&quot;&#x2F;comparison&#x2F;&quot;&gt;Comparisons page&lt;&#x2F;a&gt; to see how GitLab measures against other tools.&lt;&#x2F;p&gt;

&lt;p class=&quot;alert alert-gitlab-orange&quot;&gt;To learn more about CI&#x2F;CD and how it can help you release earlier and more often, watch our webcast, &quot;&lt;a href=&quot;https:&#x2F;&#x2F;page.gitlab.com&#x2F;20170301_continuouseverything.html&quot;&gt;From Continuous Integration to Continuous Everything&lt;&#x2F;a&gt;&quot; on demand.&lt;&#x2F;p&gt;

&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;embed&#x2F;PavW0JeY_Qc&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;&#x2F;iframe&gt;

&lt;p class=&quot;note&quot;&gt;“&lt;a href=&quot;https:&#x2F;&#x2F;www.flickr.com&#x2F;photos&#x2F;alant79&#x2F;8575108037&#x2F;&quot;&gt;spiral&lt;&#x2F;a&gt;” by &lt;a href=&quot;https:&#x2F;&#x2F;www.flickr.com&#x2F;photos&#x2F;alant79&#x2F;&quot;&gt;Vadim Timoshkin&lt;&#x2F;a&gt; is licensed under &lt;a href=&quot;https:&#x2F;&#x2F;creativecommons.org&#x2F;licenses&#x2F;by&#x2F;2.0&#x2F;&quot;&gt;CC BY 2.0&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;img src=&#x27;https:&#x2F;&#x2F;about.gitlab.com&#x2F;images&#x2F;blogimages&#x2F;what-to-look-for-ci-cd.jpg&#x27; class=&#x27;webfeedsFeaturedVisual&#x27; style=&#x27;display: none;&#x27; &#x2F;&gt;</content>
</entry>
<entry>
<title>Come See Us at OSCON and GitLab Training in May</title>
<link href='https://about.gitlab.com/2017/05/04/oscon-and-gitlab-training-in-may/' rel='alternate' />
<id>https://about.gitlab.com/2017/05/04/oscon-and-gitlab-training-in-may/</id>
<published>2017-05-04T00:00:00+00:00</published>
<updated>2017-05-04T00:00:00+00:00</updated>
<author>
<name>Amanda Folson</name>
</author>
<content type='html'>&lt;p&gt;I&#x27;m a Developer Advocate at GitLab, and I&#x27;m taking our show on the road to share how your team can use CI&#x2F;CD. We have several events coming up in May, which gives you several new opportunities to come meet the GitLab team and learn more about what we do!&lt;&#x2F;p&gt;



&lt;h2 id=&quot;gitlab-at-oscon&quot;&gt;GitLab at OSCON&lt;&#x2F;h2&gt;

&lt;p&gt;We&#x27;ll kick the month off in Austin, TX at &lt;a href=&quot;https:&#x2F;&#x2F;conferences.oreilly.com&#x2F;oscon&#x2F;oscon-tx&quot;&gt;OSCON&lt;&#x2F;a&gt;, where you can learn about the software development lifecycle with us. Stop by booth #517 to get a SDLC passport and exclusive GitLab swag.&lt;&#x2F;p&gt;

&lt;h2 id=&quot;cicd-training&quot;&gt;CI&#x2F;CD Training&lt;&#x2F;h2&gt;

&lt;p&gt;In addition to OSCON, we&#x27;re also offering &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;features&#x2F;gitlab-ci-cd&#x2F;&quot;&gt;Continuous Integration and Deployment&lt;&#x2F;a&gt; training in select cities. If you&#x27;ve ever wanted to incorporate CI&#x2F;CD into your workflow but weren&#x27;t quite sure how, be sure to attend one of these sessions.&lt;&#x2F;p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http:&#x2F;&#x2F;get.gitlab.com&#x2F;training-austin-may&#x2F;&quot;&gt;Austin, TX on May 9th&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;a href=&quot;http:&#x2F;&#x2F;get.gitlab.com&#x2F;training-atlanta-may&#x2F;&quot;&gt;Atlanta, GA on May 22nd&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;

&lt;p&gt;Don&#x27;t see your city? No problem. We&#x27;re always looking for new cities, so feel free to &lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-com&#x2F;marketing&#x2F;issues&quot;&gt;open an issue&lt;&#x2F;a&gt; for us to come to you.&lt;&#x2F;p&gt;

&lt;p&gt;We look forward to meeting you!&lt;&#x2F;p&gt;
&lt;img src=&#x27;https:&#x2F;&#x2F;about.gitlab.com&#x2F;images&#x2F;blogimages&#x2F;write-gitlab.jpg&#x27; class=&#x27;webfeedsFeaturedVisual&#x27; style=&#x27;display: none;&#x27; &#x2F;&gt;</content>
</entry>
<entry>
<title>Inside GitLab’s Code Review Flow</title>
<link href='https://about.gitlab.com/2017/05/02/inside-gitlabs-code-review-flow/' rel='alternate' />
<id>https://about.gitlab.com/2017/05/02/inside-gitlabs-code-review-flow/</id>
<published>2017-05-02T00:00:00+00:00</published>
<updated>2017-05-02T00:00:00+00:00</updated>
<author>
<name>Emily von Hoffmann</name>
</author>
<content type='html'>&lt;p&gt;Code review, or engineers manually reviewing code as it is being developed, is one of several tools that organizations have to maintain code quality. Having a clean codebase allows developers to quickly build new features, which comes in handy if you find yourself needing to react promptly to the market.&lt;&#x2F;p&gt;



&lt;p&gt;Since teams can feel pressed to skimp on code reviews due to deadline pressure, it’s important to create a clear, repeatable process that becomes a habitual part of the workflow. In addition to the business benefits of keeping code quality high, a robust code review process also carries benefits for productivity, like helping share technical knowledge across teams, and looping in the right people during the process instead of at the end. With a tool like GitLab, where the intuitive UI and discussion features make it easy for non-technical people to contribute, code review can also become a mechanism for uniting stakeholders in your organization.&lt;&#x2F;p&gt;

&lt;p&gt;While using GitLab to build GitLab, we apply a quality-conscious mindset throughout the development process, sharing the responsibility among everyone instead of seeing review as an obstacle at the end.&lt;&#x2F;p&gt;

&lt;h3 id=&quot;how-we-think-about-code-reviews&quot;&gt;How We Think About Code Reviews&lt;&#x2F;h3&gt;

&lt;p&gt;We review every single change, so nothing is ever committed directly to master, but we think “code review” is too narrow a term for what we do. Software engineers manually reviewing code is just one part of the entire product development process, and is interrelated with many other processes, so it doesn’t make sense to think about them separately. They all move us closer to our desired outcome: awesome features, shipped on a monthly basis, that meet our customer needs and grow our business.&lt;&#x2F;p&gt;

&lt;h3 id=&quot;who-is-involved&quot;&gt;Who Is Involved&lt;&#x2F;h3&gt;

&lt;p&gt;Our three core teams involved in the process are product managers, designers, and software engineers. All three teams are constantly collaborating and sharing resources; our roles are not strictly defined by our job titles. PMs and designers may write code, engineers may mock up a design, and everyone discusses the features and the product overall.&lt;&#x2F;p&gt;

&lt;h3 id=&quot;our-process&quot;&gt;Our Process&lt;&#x2F;h3&gt;

&lt;p&gt;We have the benefit of constant dogfooding, or using our own product so as to discover new use cases, test our assumptions, and generally improve GitLab for our users. Loosely, we have a product-design phase, and a code implementation phase. We use &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;features&#x2F;issueboard&#x2F;&quot;&gt;GitLab issues&lt;&#x2F;a&gt; to mediate product-design discussions, and GitLab merge requests to mediate code discussions. We encourage “&lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;2016&#x2F;01&#x2F;08&#x2F;feature-highlight-wip&#x2F;&quot;&gt;WIP&lt;&#x2F;a&gt;”, or work in progress, merge requests for code collaboration, especially when people with different skills are working together: non-engineers often actively engage in WIP merge request discussions to hash out edge cases and design decisions. Since we ship monthly, we schedule work monthly, and putting up WIP merge requests early helps us plan ahead and adjust the scope when we need to.&lt;&#x2F;p&gt;

&lt;p&gt;We generally assign one backend engineer and one frontend engineer to each feature, which is scoped as small as possible to reduce risk and help us move fast. The backend engineer and frontend engineer collaborate in the WIP merge request, and there is at least one reviewer who reviews the code and makes comments. When all comments, bugs, and design questions are addressed, we merge the feature branch into master. All designers, product team members, and engineers typically check out branches themselves and run code in a local or virtual environment to verify features throughout the development process. (This is also the case for our marketing and people operations teams — GitLab&#x27;s UI makes it simple for non-technical users to get up to speed and start contributing without needing to work from the command line.) Engineers do their own manual and sanity testing, but we use &lt;a href=&quot;http:&#x2F;&#x2F;agiledata.org&#x2F;essays&#x2F;tdd.html&quot;&gt;Test Driven Development&lt;&#x2F;a&gt; to catch most errors. We don’t follow a strict Agile flow, instead, we call it &lt;a href=&quot;http:&#x2F;&#x2F;conversationaldevelopment.com&#x2F;&quot;&gt;Conversational Development&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;

&lt;h3 id=&quot;the-benefits&quot;&gt;The Benefits&lt;&#x2F;h3&gt;

&lt;p&gt;We believe that this approach, which doesn’t segregate code review to the end of the process and entirely burden the reviewer, places responsibility on all of us. If something is broken, it is because we all failed collectively, so we do a retrospective and think about how to fix it. In a very concrete way, code reviews help enforce conventions, consistency, and technical standards among your team. Newer team members can accelerate their education about the product by creating code and then reviewing it critically. A collaborative code review process helps engineering and product teams work closely together to make the best decisions.&lt;&#x2F;p&gt;

&lt;p class=&quot;alert alert-gitlab-orange&quot;&gt;Watch our webcast, &lt;a href=&quot;http:&#x2F;&#x2F;get.gitlab.com&#x2F;code-review-webinar&#x2F;&quot;&gt;Code Review: A Business Imperative&lt;&#x2F;a&gt; to learn how code review can help you keep up with the market by shipping better features, faster.&lt;&#x2F;p&gt;
&lt;img src=&#x27;https:&#x2F;&#x2F;about.gitlab.com&#x2F;images&#x2F;blogimages&#x2F;code-review-blog.jpg&#x27; class=&#x27;webfeedsFeaturedVisual&#x27; style=&#x27;display: none;&#x27; &#x2F;&gt;</content>
</entry>
<entry>
<title>GitLab Patch Release 9.1.2</title>
<link href='https://about.gitlab.com/2017/05/01/gitlab-9-1-2-released/' rel='alternate' />
<id>https://about.gitlab.com/2017/05/01/gitlab-9-1-2-released/</id>
<published>2017-05-01T00:00:00+00:00</published>
<updated>2017-05-01T00:00:00+00:00</updated>
<author>
<name>Timothy Andrew</name>
</author>
<content type='html'>&lt;p&gt;Today we&#x27;re releasing version 9.1.2 for GitLab Community Edition (CE) and
Enterprise Edition (EE).&lt;&#x2F;p&gt;

&lt;p&gt;This version resolves a number of regressions and bugs in &lt;a href=&quot;&#x2F;2017&#x2F;04&#x2F;22&#x2F;gitlab-9-1-released&quot;&gt;the 9.1 release&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;

&lt;p&gt;Please read on for more details.&lt;&#x2F;p&gt;



&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;CE&#x2F;EE:&lt;&#x2F;strong&gt; Lazily set UUID in ApplicationSetting for new installations. (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;merge_requests&#x2F;10893&quot;&gt;!10893&lt;&#x2F;a&gt;&#x2F;&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ee&#x2F;merge_requests&#x2F;1733&quot;&gt;!1733&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;CE&#x2F;EE:&lt;&#x2F;strong&gt; Remove description for build_events, add pipeline_events. (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;merge_requests&#x2F;10908&quot;&gt;!10908&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;CE&#x2F;EE:&lt;&#x2F;strong&gt; Resolve &quot;Milestone sidebar display incorect number of MR when minimized&quot;. (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;merge_requests&#x2F;10933&quot;&gt;!10933&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;CE&#x2F;EE:&lt;&#x2F;strong&gt; Add index on ci_runners.contacted_at. (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;merge_requests&#x2F;10876&quot;&gt;!10876&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;CE&#x2F;EE:&lt;&#x2F;strong&gt; Fix ordering of commits in the network graph. (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;merge_requests&#x2F;10936&quot;&gt;!10936&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;CE&#x2F;EE:&lt;&#x2F;strong&gt; Skip validation when creating internal (ghost, service desk) users. (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;merge_requests&#x2F;10949&quot;&gt;!10949&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;CE&#x2F;EE:&lt;&#x2F;strong&gt; Refactoring rake task to import GitHub repositories. (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;merge_requests&#x2F;10695&quot;&gt;!10695&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;CE&#x2F;EE:&lt;&#x2F;strong&gt; Accept default branch param on notification services. (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;merge_requests&#x2F;10959&quot;&gt;!10959&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;CE&#x2F;EE:&lt;&#x2F;strong&gt; correct documentation on opt-out-ness of usage ping. (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;merge_requests&#x2F;10945&quot;&gt;!10945&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;EE:&lt;&#x2F;strong&gt; Fix commit search on some elasticsearch indexes. (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ee&#x2F;merge_requests&#x2F;1745&quot;&gt;!1745&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;EE:&lt;&#x2F;strong&gt; Fix bug where Geo secondary Sidekiq cron jobs would not be activated if settings changed. (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ee&#x2F;merge_requests&#x2F;1754&quot;&gt;!1754&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
  &lt;li&gt;&lt;strong&gt;EE:&lt;&#x2F;strong&gt; Fix creating issues by email with Service Desk on. (&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ee&#x2F;merge_requests&#x2F;1743&quot;&gt;!1743&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;

&lt;h2 id=&quot;upgrade-barometer&quot;&gt;Upgrade barometer&lt;&#x2F;h2&gt;

&lt;p&gt;This version does not require downtime. It includes two migrations:&lt;&#x2F;p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;Fill in missing UUIDs in application settings, which fixes
&lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ee&#x2F;issues&#x2F;2246&quot;&gt;a regression&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
  &lt;&#x2F;li&gt;
  &lt;li&gt;
    &lt;p&gt;Add an index for the column &lt;code&gt;contacted_at&lt;&#x2F;code&gt; in the table &lt;code&gt;ci_runners&lt;&#x2F;code&gt;, which
addresses &lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;gitlab-org&#x2F;gitlab-ce&#x2F;issues&#x2F;31229&quot;&gt;a performance concern&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
  &lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;

&lt;p&gt;Please be aware that by default the Omnibus packages will stop, run migrations,
and start again, no matter how “big” or “small” the upgrade is. This behavior
can be changed by adding a &lt;a href=&quot;http:&#x2F;&#x2F;doc.gitlab.com&#x2F;omnibus&#x2F;update&#x2F;README.html&quot;&gt;&lt;code&gt;&#x2F;etc&#x2F;gitlab&#x2F;skip-auto-migrations&lt;&#x2F;code&gt;
file&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;

&lt;h2 id=&quot;updating&quot;&gt;Updating&lt;&#x2F;h2&gt;

&lt;p&gt;To update, check out our &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;update&#x2F;&quot;&gt;update page&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;

&lt;h2 id=&quot;enterprise-edition&quot;&gt;Enterprise Edition&lt;&#x2F;h2&gt;

&lt;p&gt;Interested in GitLab Enterprise Edition? Check out the &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;gitlab-ee&#x2F;&quot;&gt;features exclusive to
EE&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;

&lt;p&gt;Access to GitLab Enterprise Edition is granted by a &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;products&#x2F;&quot;&gt;subscription&lt;&#x2F;a&gt;.
No time to upgrade GitLab yourself? Subscribers receive upgrade and installation
services.&lt;&#x2F;p&gt;
&lt;img src=&#x27;https:&#x2F;&#x2F;about.gitlab.com&#x2F;images&#x2F;default-blog-image.png&#x27; class=&#x27;webfeedsFeaturedVisual&#x27; style=&#x27;display: none;&#x27; &#x2F;&gt;</content>
</entry>
<entry>
<title>Why Code Gets Released too Early (and how to fix It)</title>
<link href='https://about.gitlab.com/2017/04/27/why-code-is-released-too-early/' rel='alternate' />
<id>https://about.gitlab.com/2017/04/27/why-code-is-released-too-early/</id>
<published>2017-04-27T00:00:00+00:00</published>
<updated>2017-04-27T00:00:00+00:00</updated>
<author>
<name>Rebecca Dodd</name>
</author>
<content type='html'>&lt;p&gt;Code released before it’s ready might be good for meeting deadlines, but that’s about all it’s good for. Most software products today are in a continual state of development, testing and release, so making sure you’re only shipping code that’s truly ready is both challenging and critical.&lt;&#x2F;p&gt;



&lt;p&gt;Our 2016  &lt;a href=&quot;https:&#x2F;&#x2F;page.gitlab.com&#x2F;2016-developer-survey_2016-developer-survey.html&quot;&gt;Global Developer Survey&lt;&#x2F;a&gt; asked respondents about how they work, what they work with and what makes their jobs easier (or harder!). They told us resoundingly that between deadline pressure and unrealistic expectations from management, they end up releasing broken or non-functional code all too often.&lt;&#x2F;p&gt;

&lt;h2 id=&quot;over-half-of-developers-admit-to-releasing-code-before-its-ready&quot;&gt;Over Half of Developers Admit to Releasing Code Before it’s Ready&lt;&#x2F;h2&gt;

&lt;p&gt;The frequency of shipping incomplete code varies, but an overwhelming 81 percent of developers admitted to releasing code before it’s ready, with an alarming 15.75 percent saying it happens more than half of the time.&lt;&#x2F;p&gt;

&lt;p&gt;This isn’t the same as releasing early and often, although the two are easily confused. It’s common practice to release features that are not necessarily polished, with the aim of gathering feedback and improving with the next iteration. However, releasing code that isn’t ready refers to code that is incomplete, not yet fully functional, or hasn’t been tested across all environments. The pitfalls here are obvious: shipping code that’s not finished can break things and result in frustrated customers.&lt;&#x2F;p&gt;

&lt;h2 id=&quot;why-does-this-happen&quot;&gt;Why Does This Happen?&lt;&#x2F;h2&gt;

&lt;p&gt;It seems obvious that releasing too early should be avoided, yet it happens all too often. Why? Pressure from senior management and deadlines that must be hit were the top two answers from our respondents, with 38.34 and 58.9 percent each, suggesting a breakdown in communication and mismanaged expectations between senior management and development teams.&lt;&#x2F;p&gt;

&lt;h2 id=&quot;how-to-prevent-premature-releases&quot;&gt;How to Prevent Premature Releases&lt;&#x2F;h2&gt;

&lt;p&gt;Having a robust release management strategy is essential for planning and controlling your software delivery schedule. Leveraging &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;2017&#x2F;04&#x2F;12&#x2F;ways-ci-cd-helps&#x2F;&quot;&gt;Continuous Integration and Continuous Delivery&lt;&#x2F;a&gt; to ensure your code is always tested and ready to be deployed at a moment’s notice helps to prevent the release of broken code. &lt;a href=&quot;https:&#x2F;&#x2F;about.gitlab.com&#x2F;2017&#x2F;03&#x2F;06&#x2F;introduce-continuous-workflows&#x2F;&quot;&gt;Adopting DevOps practices to improve communication and collaboration&lt;&#x2F;a&gt; between teams and encourage shared responsibility for each release is another way to ensure that deadlines are realistic and can be met.&lt;&#x2F;p&gt;

&lt;p&gt;Also, it might sound counterintuitive, but releasing more often can actually help to prevent premature releases: if you’re shipping once a month instead of twice a year, there’s no reason to rush code that isn’t ready into your upcoming release just to meet a deadline.&lt;&#x2F;p&gt;

&lt;p class=&quot;alert alert-gitlab-orange&quot;&gt;Download our &lt;a href=&quot;https:&#x2F;&#x2F;page.gitlab.com&#x2F;2016-developer-survey_2016-developer-survey.html&quot;&gt;Global Developer Report&lt;&#x2F;a&gt; to learn more about what developers want and need to do their jobs more efficiently.&lt;&#x2F;p&gt;
&lt;img src=&#x27;https:&#x2F;&#x2F;about.gitlab.com&#x2F;images&#x2F;blogimages&#x2F;code-released-too-early.jpg&#x27; class=&#x27;webfeedsFeaturedVisual&#x27; style=&#x27;display: none;&#x27; &#x2F;&gt;</content>
</entry>
</feed>
