+ All Categories
Home > Documents > GitHub vs GitLab - GitLab | GitLab · Lock Discussion Lock down continued discussion in an issue or...

GitHub vs GitLab - GitLab | GitLab · Lock Discussion Lock down continued discussion in an issue or...

Date post: 30-May-2020
Category:
Upload: others
View: 72 times
Download: 0 times
Share this document with a friend
21
GitHub vs GitLab GitLab compared to other DevOps tools On this page Summary Comments/Anecdotes Resources FAQs Comparison Summary (drawn from https://en.wikipedia.org/wiki/GitHub) GitHub is a collaborative code repository to host and review code, manage projects and build software. It offers all of the distributed version control and source code management (SCM) functionality of Git as well as adding its own features. It provides access control and several collaboration features such as bug tracking, feature requests, task management, and wikis for every project. CI/CD is accomplished via integrations with other products, while GitLab has integrated CI/CD. In contrast, GitHub also offers application performance and server monitoring along with cycle analytics. GitLab includes static and dynamic security testing and container scanning. GitHub offers plans for both private repositories and free accounts which are commonly used to host open-source software projects. As of June 2018, GitHub reports having over 28 million users and 57 million repositories (including 28 million public repositories), making it the largest host of source code in the world. On June 4, 2018, Microsoft announced it had reached an agreement to acquire GitHub for US$7.5 billion. The purchase is expected to close by the end of the year. GitHuba is also offered in a self-managed version called GitHub Enterprise (GHE). Comments/Anecdotes Feedback from customers is that GitHub Enterprise (GHE) has trouble scalling. It seems like anyone nearing 2k users starts to run into issues. GitLab is enterprise class and scales to > 32K users. 2018-09-10 - GitHub announces that Microsoft Azure Pipelines are available in the GitHub Marketplace. This is in parallel with Microsoft (who recently acquired GitHub) announcing their Azure DevOps (rebranded VSTS/TFS). Related? Yes! 2018-09-10 - Microsoft announces the addition of GitHub Pull Requests integrated directly into Visual Studio Code . Visual Studio Code is Microsoft's lightweight (but still not web based) code editor . Resources GitHub Website FAQs Distribution architecture Q: Is GHE is based on a closed VM A: Yes - https://help.github.com/enterprise/2.13/admin/guides/installation/ “GitHub Enterprise is distributed as a virtual machine image that you install and manage within your existing infrastructure.†Possible disadvantages of a closed VM: Q: a closed environment (could be a trojan inside!) A: Agree with assessment
Transcript

GitHubvsGitLabGitLabcomparedtootherDevOpstools

Onthispage

Summary

Comments/Anecdotes

Resources

FAQs

Comparison

Summary

(drawnfromhttps://en.wikipedia.org/wiki/GitHub)

GitHubisacollaborativecoderepositorytohostandreviewcode,manageprojectsandbuildsoftware.Itoffersallofthedistributedversioncontrolandsourcecodemanagement(SCM)functionalityofGitaswellasaddingitsownfeatures.Itprovidesaccesscontrolandseveralcollaborationfeaturessuchasbugtracking,featurerequests,taskmanagement,andwikisforeveryproject.

CI/CDisaccomplishedviaintegrationswithotherproducts,whileGitLabhasintegratedCI/CD.Incontrast,GitHubalsooffersapplicationperformanceandservermonitoringalongwithcycleanalytics.GitLabincludesstaticanddynamicsecuritytestingandcontainerscanning.

GitHuboffersplansforbothprivaterepositoriesandfreeaccountswhicharecommonlyusedtohostopen-sourcesoftwareprojects.AsofJune2018,GitHubreportshavingover28millionusersand57millionrepositories(including28millionpublicrepositories),makingitthelargesthostofsourcecodeintheworld.

OnJune4,2018,MicrosoftannouncedithadreachedanagreementtoacquireGitHubforUS$7.5billion.Thepurchaseisexpectedtoclosebytheendoftheyear.

GitHubaisalsoofferedinaself-managedversioncalledGitHubEnterprise(GHE).

Comments/Anecdotes

FeedbackfromcustomersisthatGitHubEnterprise(GHE)hastroublescalling.Itseemslikeanyonenearing2kusersstartstorunintoissues.GitLabisenterpriseclassandscalesto>32Kusers.

2018-09-10-GitHubannouncesthatMicrosoftAzurePipelinesareavailableintheGitHubMarketplace.ThisisinparallelwithMicrosoft(whorecentlyacquiredGitHub)announcingtheirAzureDevOps(rebrandedVSTS/TFS).Related?Yes!

2018-09-10-MicrosoftannouncestheadditionofGitHubPullRequestsintegrateddirectlyintoVisualStudioCode.VisualStudioCodeisMicrosoft'slightweight(butstillnotwebbased)codeeditor.

Resources

GitHubWebsite

FAQs

DistributionarchitectureQ:IsGHEisbasedonaclosedVMA:Yes-https://help.github.com/enterprise/2.13/admin/guides/installation/“GitHubEnterpriseisdistributedasavirtualmachineimagethatyouinstallandmanagewithinyourexistinginfrastructure.â€

PossibledisadvantagesofaclosedVM:

Q:aclosedenvironment(couldbeatrojaninside!)A:Agreewithassessment

Q:InstallationisquitecomplicatedA:DISAGREE-singleVMmakesiteasytoinstall,althoughlessflexibleSeeinstallationinstructionsathttps://help.github.com/enterprise/2.13/admin/guides/installation/setting-up-a-github-enterprise-instance/

Q:upgradesandpatchingiscomplicatedA:DISAGREE-VMappliancemakespatchingandupgradingrelativelysimple.Seeupgradeinstructionsathttps://help.github.com/enterprise/2.13/admin/guides/installation/upgrading-github-enterprise/

Q:badthingoffmyheadforusingVMisI/OA:Notclear-Ingeneralyes.ButthingscanbetunedtoimproveitalotSeehttps://academic.oup.com/comjnl/article/61/6/808/4259797forgeneralrecentstudyonthis.

Q:probablycan'tseparatetheinstallationtoseparatedparts(inordertoimproveperformance)A:DISAGREE-CanhaveVMactasdifferentpartstoscaleperrequirements.Seehttps://help.github.com/enterprise/2.13/admin/guides/clustering/about-cluster-nodes/#cluster-design-recommendationsandhttps://help.github.com/enterprise/2.13/admin/guides/clustering/initializing-the-cluster/formoredetails.

Comparison

FEATURES

FreeCI/CDwithsharedorpersonalRunners

GitLab.comhassharedRunnersthatallowyoutouseGitLabCI/CDcompletelyfreeupto2000buildminutesforprivateprojectsandunlimitedforpublicprojects.Alternatively,youcansetupyourownRunnerforfasterbuildprocessing,unlimitedbuildminutes,orspecialrequirements.

ExploreGitLab.comofferings

Built-inCI/CD

GitLabhasbuilt-inContinuousIntegration/ContinuousDelivery,forfree,noneedtoinstallitseparately.Useittobuild,test,anddeployyourwebsite(GitLabPages)orwebapp.Thejobresultsaredisplayedonmergerequestsforeasyaccess.

LearnmoreaboutCI/CD

Innersourcing

InternalprojectsinGitLaballowyoutopromoteinnersourcingofyourinternalrepositories.

Findoutmoreaboutinnersourcing

Commitgraphandreportingtools

GitLabprovidescommitgraphsandreportingtoolsaboutcollaborators'work.

Learnmoreaboutcommitgraphs

GroupMilestones

Createandmanagemilestonesacrossprojects,toworktowardsatargetdatefromthegrouplevel.Viewalltheissuesforthemilestoneyou’recurrentlyworkingonacrossmultipleprojects.

LearnmoreaboutGroupMilestones

Availability

GitLab.comisat99.5%availabilitywhilewewanttobeabove99.95%.We'rehiringtoimprovethisinthelasttwomonthsof2017andin2018.

GitLab.comstatus

Themostcomprehensiveimportfeatureset

GitLabcanimportprojectsandissuesfrommoresources(GitHub,BitBucket,GoogleCode,FogBugz,GiteaandfromanygitURL)thanGitHuboranyotherVCS.WeevenhaveyoucoveredforyourmovefromSVNtoGitwithcomprehensiveguidesanddocumentation.

MakingiteasiertogetupandrunningwithGitLab

Exportprojects

GitLaballowsyoutoexportyourprojecttoothersystems.

Wedon'trestrictaccesstoyourdata

PowerfulIssueTracker

Quicklysetthestatus,assigneeormilestoneformultipleissuesatthesametimeoreasilyfilterthemonanyproperties.Seemilestonesandissuesacrossprojects.

LearnmoreabouttheIssueTracker

IssueBoards

GitLabhasIssueBoards,eachlistofanIssueBoardisbasedonalabelthatexistsinyourissuetracker.TheIssueBoardwillthereforematchthestateofyourissuetrackerinauser-friendlyway.

LearnmoreaboutGitLabIssueBoards

BurndownCharts

GitLabprovidesBurndownChartsaspartofMilestones.Thisallowsuserstobettertrackprogressduringasprintorwhileworkingonanewversionoftheirsoftware.

ReadourBurndownChartDocumentation

IssueWeights

GitLabletsyoumanageissuesusingAgilepracticesbysettingtheweightofanissue.

ReadourIssueWeightsdocumentation

Relatedissues

Explicitlymarkissuesasrelatedandtracktheirstatus.

LearnmoreaboutRelatedIssues

Multipleassigneesforissues

Assignmorethanonepersontoanissueatatime.

ReadourMultipleAssigneesDocumentation

Timetracking

TimeTrackinginGitLabletsyourteamaddestimatesandrecordtimespentonissuesandmergerequests.

LearnmoreaboutTimeTracking

Wikibasedprojectdocumentation

AseparatesystemfordocumentationcalledWiki,isbuiltrightintoeachGitLabproject.EveryWikiisaseparateGitrepository.

LearnmoreaboutGitLabWikis

Duedatesforindividualissues

InGitLab,youcansetaduedateforindividualissues.Thisisveryconvenientifyouhavesmalltaskswithaspecificdeadline.

Duedatesdocumentation

Moveissuesbetweenprojects

YoucanmoveissuesbetweenprojectsinGitLab.Alllinks,historyandcommentswillbecopiedandtheoriginalissuewillreferencethenewlymovedissue.Thismakesworkingwithmultipleissuetrackersmucheasier.

Learnmoreaboutmovingissuesbetweenprojects

Createnewbranchesfromissues

InGitLab,youcanquicklycreateanewbranchfromanissueontheissuetracker.Itwillincludetheissuenumberandtitleautomatically,makingiteasytotrackwhichbranchbelongstowhichissue.

Seehowinourdocumentation

Alloweditsfromupstreammaintainersinbranch

Whenauseropensamergerequestfromafork,theyaregiventheoptiontoallowupstreammaintainerstocollaboratewiththemonthesourcebranch.Thisallowsthemaintainersoftheupstreamprojecttomakesmallfixesorrebasebranchesbeforemerging,reducingthebackandforthofacceptingcommunitycontributions.

Applicationperformancemonitoring

GitLabcollectsanddisplaysperformancemetricsfordeployedapps,leveragingPrometheus.Developerscandeterminetheimpactofamergeandkeepaneyeontheirproductionsystems,withoutleavingGitLab.

Learnmoreaboutmonitoringdeployedapps

Applicationperformancealerts

GitLaballowsengineerstoseamlesslycreateservicelevelindicatoralertsandbenotifiedofanydesiredevents,allwithinthesameworkflowwheretheywritetheircode.

LearnmoreaboutcreatingSLIalerts

GitLabservermonitoring

GitLabcomesoutoftheboxenabledforPrometheusmonitoringwithextensiveinstrumentation,makingiteasytoensureyourGitLabdeploymentisresponsiveandhealthy.

LearnmoreaboutmonitoringtheGitLabservice

CycleAnalytics

GitLabprovidesadashboardthatletsteamsmeasurethetimeittakestogofromplanningtomonitoring.GitLabcanprovidethisdatabecauseithasallthetoolsbuilt-in:fromtheidea,totheCI,tocodereview,todeploytoproduction.

LearnmoreaboutCycleAnalytics

Quickactions

GitLabprovidesaconvenientwaytochangemetadataofanissueormergerequestwithoutleavingthecommentfieldwithslashcommands.

Documentationaboutquickactions

ImageDiscussions

Withinacommitvieworamergerequestdiffview,andwithrespecttoaspecificlocationofanimage,youcanhavearesolvablediscussion.Havemultiplediscussionsspecifyingdifferentareasofanimage.

ImageDiscussions

MergeRequestCommitDiscussions

Commentonacommitwithinthecontextofamergerequestitself

MergeRequestCommitDiscussions

LockDiscussion

LockdowncontinueddiscussioninanissueormergerequestasaMasterroleorhigher,topreventfurtherabuse,spam,orunproductivecollaboration.

LockDiscussion

Draganddroptasks

YoucanchangetheorderoftasksinmarkdownonGitHub.GitLabdoesnothavethisability,butisconsideringimplementingit.

SeetheGitLabissuetoimplementthis

Firsttimecontributorbadge

Highlightfirst-timecontributorsinaproject.

SUPPORTfilelink

LinkfromnewissuestoaSUPPORTfile,pointingtosupportresources.

SeetheGitLabissuetoimplementthis

Built-inContainerRegistry

GitLabContainerRegistryisasecureandprivateregistryforDockerimages.ItallowsforeasyuploadanddownloadofimagesfromGitLabCI.ItisfullyintegratedwithGitrepositorymanagement.

DocumentationonContainerRegistry

FullBinaryRepository

Abinaryrepositoryisasoftwarerepositoryforpackages,artifactsandtheircorrespondingmetadata.Itcanbeusedtostorebinaryfilesproducedbyanorganizationitself,suchasproductreleasesandnightlyproductbuilds,orforthirdpartybinarieswhichmustbetreateddifferentlyforbothtechnicalandlegalreasons.

PreviewyourchangeswithReviewApps

WithGitLabCI/CDyoucancreateanewenvironmentforeachoneofyourbranches,speedingupyourdevelopmentprocess.Spinupdynamicenvironmentsforyourmergerequestswiththeabilitytopreviewyourbranchinaliveenvironment.

LearnmoreaboutReviewApps

Newfeatureseverymonth

GitLabisupdatedwithnewfeaturesandimprovementseverymonthonthe22nd.

Oneintegratedtool

Othertoolsrequiretheintegrationofmultiple3rdpartytoolstocompletethesoftwaredevelopmentlifecycle.GitLabhasacompletelyintegratedsolutionthatcoverstheentiredevelopmentlifecycle.

Accesstotheserver

Youhavecompletecontroloftheserver/instance,soyoucaninstalladditionalsoftware(intrusiondetection,performancemonitoring,etc.)andviewlogfilesontheserveritself.GitLab'sadvancedlogsystemmeanseverythinggetsloggedandprovidesyouwitheasyaccesstoawealthoflogfileinformation.

Learnmoreaboutlogging

Runsonmetal

GitLabcanrunonbaremetalserverswhereyoucanhavecontrolofthediskI/O,CPU,RAM,etc.Scalehorizontallywithoutanissue.

ReadaboutthedifferentwaystoinstallGitLab

HighlyAvailablesetups

Formissioncriticalreleases,youcannotafforddowntime.Splityourappservers,database,etc.,intomultipleinstancesandworkinread-onlymodeduringbackups.

MoreinformationonHighAvailability

Runyourownsoftwareonyourinstance

YouarefreetorunyourownsoftwareontheinstancethatGitLabisrunningon.Haveyourownintrusiondetectionsystem?Noproblem.

ReadaboutthedifferentwaystoinstallGitLab

Useyourconfigurationmanagementsoftware

Youcanuseyourchoiceofconfigurationmanagementsoftware,fromPuppet,Chef,Ansibleforquickandstraightforwardimplementation.

ReadaboutthedifferentwaystoinstallGitLab

UsestandardUnixtoolsformaintenanceandmonitoring

Usethetoolsyouknowformonitoringandmaintenance,whetherthey'restandardoryourown.GitLabdoesn'trestrictyou.

ReadaboutthedifferentwaystoinstallGitLab

IPv6ready

BothGitLab.comandGitLabSelf-managessupportIPv6.

ReadthedocsonconfiguringIPv6

AD/LDAPintegration

Syncgroups,manageSSH-keys,managepermissions,authenticationandmore.YoucanmanageanentireGitLabinstancethroughtheLDAP/ADintegration.

MoreinformationaboutAD/LDAPintegration

MultipleLDAP/ADserversupport

LinkmultipleLDAPserverstoGitLabforauthenticationandauthorization

AdvancedLDAPconfiguration

Multipleapprovalsincodereview

InGitLab,toensurestrictcodereview,youcanrequireaspecificnumberofapprovalsonamergerequestbydifferentusersbeforebeingabletomergeit.Youcanundoanapprovalbyremovingitafterthefact.

ApprovalsDocumentation

Easeofmigrationfromotherproviders

GitLabletsyoueasilymigrateallrepos,issuesandmergerequestdatafromyourpreviousprovider.

LearnhowtomigrateyourprojectstoGitLab

ConfidentialIssues

KeepyourinformationsecurewithConfidentialIssues.WithGitLab,youcancreateconfidentialissuesvisibleonlyforprojectmemberswithReporteraccesslevelorabove.

LearnmoreaboutConfidentialIssues

Accesstoandabilitytomodifysourcecode

GitLabEnterpriseEditionispubliclyreadable,meaningyoucanscanormodifythecodetomeetyoursecurityanddevelopmentneeds.Thecodeusedbymostotherprovidersisproprietary,meaningyoucannoteditorviewthesourcecode.

ReadtheGitLabEnterpriseEditionlicense.

AcomprehensiveAPI

GitLabprovidesAPIsformostfeatures,allowingdeveloperstocreatedeeperintegrationswiththeproduct.

ReadourAPIDocumentation

Searchfileswithfuzzyfilefinder

GitLabprovidesawaytosearchafileinyourrepositoryinonekeystroke.

Readaboutthefilefinderinourdocumentation

Fast-forwardmergewithoptiontorebase

Withthissettingattheprojectlevel,youcanensurethatnomergecommitsarecreatedandallmergesarefast-forwarded.Whenafast-forwardmergeisnotpossible,theuserisgiventheoptiontorebase.

Learnmoreaboutrebasebeforemerge

Squashandmerge

Combinecommitsintoonesothatmainbranchhasasimplertofollowandreverthistory.

Learnmoreaboutsquashandmerge

Remoterepositorypushmirroring

Mirrorarepositoryfromyourlocalservertoelsewhere.

Learnmoreaboutrepositorypushmirroring

Remoterepositorypullmirroring

MirrorarepositoryfromaremoteGitservertoyourlocalserver,makingiteasytokeeplocalforksandreplicasuptodate.

Learnmoreaboutrepositorypullmirroring

ExportissuesasCSV

IssuescanbeexportedasCSVfromGitLabandaresenttoyourdefaultnotificationemailasanattachment.

LearnmoreaboutexportingissuesasCSV

Mergerequestapprovals

Whenaprojectrequiresmultiplesign-offs,GitLabEnterpriseEditionenablesyoutomakesureeverymergerequestisapprovedbyoneormorepeople.Mergerequestapprovalsallowyoutosetthenumberofnecessaryapprovalsandpredefinealistofapproversthatwillneedtoapproveeverymergerequestinaproject,andin-turnimproveyourcode’squality.

Learnmoreaboutmergerequestapprovals

Granularuserrolesandflexiblepermissions

Manageaccessandpermissionswithfivedifferentuserrolesandsettingsforexternalusers.Setpermissionsaccordingtopeople'srole,ratherthaneitherreadorwriteaccesstoarepository.Don'tsharethesourcecodewithpeoplethatonlyneedaccesstotheissuetracker.

LearnmoreaboutUserRoles

Todos

WhenauserismentionedinorassignedtoamergerequestitwillbeincludedintheuserTodos,makingthedevelopmentworkflowfasterandeasiertotrack.

LearnmoreaboutTodos

Mergeconflictresolution

PreviewmergeconflictsintheGitLabUIandtellGitwhichversiontouse.

LearnmoreaboutthemergeconflictresolutionUI

Rejectunsignedcommits

GitLabEnterpriseEditionPremiumallowsyoutoenforceGPGsignaturesbyrejectingunsignedcommits.

Readmoreaboutenforcingpushrules

VerifiedCommitter

Verifythatapushonlycontainscommitsbythesameuserperformingthepush.

IndevelopmentforGitLab.Followthislinkformoreinformation.

Navigatetomethod/functioninamergerequestdiff

Whenviewingamergerequestdiff,navigatedirectlytoamethod/functioninachangedfile.

SeetheGitLabissuetoimplementthisfeature

Mergewhenpipelinesucceeds

WhenreviewingamergerequestthatlooksreadytomergebutstillhasoneormoreCI/CDjobsrunning,youcansetittobemergedautomaticallywhenthejobspipelinesucceeds.

LearnmoreaboutMergewhenpipelinesucceeds

RevertspecificcommitsoramergerequestfromtheUI

RevertanycommitorasinglemergerequestfromGitLab'sUI,withaclickofabutton.

LearnhowtorevertacommitoramergerequestfromtheGitLabUI.

Inlinecommentinganddiscussionresolution

Codeortextreviewisfasterandmoreeffectivewithinlinecommentsinmergerequests.Leavecommentsandresolvediscussionsonspecificlinesofcode.InGitLab,MergeRequestinlinecommentsareinterpretedasadiscussion.Youcanconfigureyourprojecttoonlyacceptmergerequestswhenalldiscussionsareresolved.

Learnmoreaboutresolvingdiscussions

Cherry-pickingchanges

Cherry-pickanycommitintheUIbysimplyclickingtheCherry-Pickbuttoninamergedmergerequestoraspecificcommit.

Learnmoreaboutcherrypickingmergerequests

GPGSignedCommits

Signcommitsandprovethatacommitwasperformedbyacertainuser.

ReadmoreaboutGPGsignedcommits

CodeOwners

TheabilitytospecifyCodeOwnersorreviewersintherepository.

GitLab'sissuetoimplementthis

Subgroups:groupswithingroups

Creategroupswithingroupstoeasilymanagelargenumbersofpeopleandprojects.

LearnmoreaboutSubgroups

Containerdebuggingwithanintegratedwebterminal

Easilydebugyourcontainersinanyofyourenvironmentsusingthebuilt-inGitLabWebTerminal.GitLabcanopenaterminalsessiondirectlyfromyourenvironmentifyourapplicationisdeployedonKubernetes.Thisisaverypowerfulfeaturewhereyoucanquicklydebugissueswithoutleavingthecomfortofyourwebbrowser.

Learnmoreaboutthewebterminal

PublishstaticwebsitesforfreewithGitLabPages

GitLabPagesprovidesaneasysystemforhostingstaticsitesusingGitLabrepositoriesandGitLabCI,completewithcustomdomainsandHTTPSsupport.

LearnmoreaboutGitLabPages

Publishyourwebsitefromaprivateprojectforfree

WithGitLabPages,youcancreateaprivaterepositorytoholdyoursitecontent,andkeeponlythepagesource(HTML)availableonline.

VisitGitLabPagesDocumentation.

CustomdomainsforGitLabPages

WithGitLabPageswebsites,youcanuseacustomdomainorsubdomain.

LearnhowtoapplycustomdomainstoGitLabPageswebsites

MultiplecustomdomainsforGitLabPages

GitLabPagesallowsyoutoaddasmanycustomdomains(knownasdomainaliases)pointingtoasinglewebsite.Adomainaliasislikehavingmultiplefrontdoorstoonelocation.

LearnhowtoaddcustomdomainstoyourGitLabPageswebsite

Securecustomdomains(HTTPS)withGitLabPages

InstallaSSL/TLScertificate,atnocost,onawebsitesetupwithacustomdomainservedbyGitLabPages.

LearnhowtoaddanSSL/TLScertificatetoyourGitLabPageswebsite

GitLabPagescustomdomainsverification

Whenaddinganewcustomdomain,usersmustaddanassociatedTXTrecordinordertoverifytheyaretheownerofthedomain.Thatmechanismisusedtopreventusersfromclaimingdomainstheydonotown.

VisitGitLabPagesDocumentation.

GitLabPagessupportallStaticSiteGenerators

WithGitLab,youcanbuildanySSG,andalsochoosespecificSSGs'versionsyouwantyoursitetobuildwith(e.g.Middleman4.1.1).

LearnhowtobuildanySSGwithGitLabPages

GitLabPagesexampleprojects

Choosean[exampleproject](https://gitlab.com/pages)toforkandgetstartedwithGitLabPages.

Watcha3-minvideotutorialonhowtogetstartedwithGitLabPagesbyforkingaproject

GitLabPagessupportsallJekyllplugins

BesidesbuildinganyJekyllversionyouwant,withGitLabPagesyoucanuseallJekyllpluginsavailable.

VisitGitLabPagesDocumentation.

CustomErrorPages(404)forGitLabPages

GitLabPagesallowsyoutocreatecustomerrorpages.

Learnhowtoaddacustom404toGitLabPageswebsites

DeployBoards

GitLabPremiumshipswithDeployBoardsofferingaconsolidatedviewofthecurrenthealthandstatusofeachCI/CDenvironmentrunningonKubernetes.ThestatusofeachpodofyourlatestdeploymentisdisplayedseamlesslywithinGitLabwithouttheneedtoaccessKubernetes.

LearnmoreaboutDeployBoards

Control

Takecontrolofmaintenancedowntime,don'tbeatthemercyofyourhostingprovider.Controlhowandwhereyourcodeisbackedupandstored.

Youdecidewhenyouupgrade

GitLabreleasesanewversioneachmonthandletsyouchoosewhentoupgrade.

LearnhowtoupgradeyourGitLabinstance

Easyupgradeprocess

UsingourofficialLinuxrepositoriesortheofficialDockerimage,upgradingGitLabisabreeze.

LearnhowtoupgradeyourGitLabinstance

Labels

Labelsprovideaneasywaytocategorizeissuesormergerequestsbasedondescriptivetitlesas'bug',or'documentation'.

LearnmoreaboutGitLabLabels

Abilitytoeditallfieldsofamergerequest

GitLabMergeRequestsareeditablebytheauthor,theproject'sownersanduserswithmasteraccess.Everyfieldiseditable,aswellasthetargetbranch.

ReadthroughGitLabMergeRequest'sDocumentation

Automaticallycloseissue(s)whenamergerequestismerged

WithGitLab,youcanusespecifickeywordstocloseoneormoreissuesassoonasamergerequestismerged.

Learnmoreaboutautomaticallyclosingissues

Configurableissueclosingpattern

Defineyourownspecifickeywordstocloseoneormoreissuesassoonasamergerequestismerged.

Learnmoreaboutautomaticallyclosingissues

EnrichedMarkdownsupport

GitLabuses'GitLabFlavoredMarkdown'(GFM).ItextendsthestandardMarkdowninafewsignificantwaystoaddsomeusefulfunctionality.

LearnmoreaboutGitLabFlavoredMarkdown

WorkinProgressmergerequests(WIP)

Preventmergerequestsfromaccidentallybeingacceptedbeforethey'recompletelyreadybymarkingthemasWorkInProgress(WIP).Thisgivesyouallthecodereviewpowerofmergerequests,whileprotectingunfinishedwork.

LearnmoreaboutWIPMRs

Issuesandmergerequeststemplates

ByaddingadescriptiontemplatetoyourMRs,userswhocreateanewissueormergerequestcanselectatemplatetohelpthemtocommunicateeffectively.

LearnmoreaboutGitLabDescriptionTemplates

CustomGitHooks

LeveragethepowerofGitHooksandchainthemtogethertofireoffcustomscriptswhencertainactionsoccurontherepository.IfthecommitisdeclinedoranerroroccursduringtheGithookcheck,theerrormessageofthehookwillbepresentinGitLab'sUI.GitLabsupportsalltypesofhooks.

LearnhowtouseGitHookswithGitLab

Responsive-firstdesign

GitLabisbuiltwitharesponsive-firstdesignapproach.Beitonadesktop,tabletorsmartphone,GitLabisoptimizedtobeviewedforthebestresult.

Communitybased,userscanhelpshapetheproduct

GitLabhasopenissuetrackersforalmostallofitsoperations.FromGitLabitselftoinfrastructureandmarketing,youcanhelpshapetheproduct.

ViewallGitLabcontributors

GitLFS2.0support

Managelargefilessuchasaudio,videoandgraphicsfileswiththehelpofGitLFS.GitLFS2.0filelockingsupporthelpslargeteamsworkwithbinaryassetsandisintegratedwithournativefilelockingfeature.

LearnmoreaboutGitLFSsupportinGitLab

SecurityDashboards

SecurityDashboardreportthelatestsecuritystatusofthedefaultbranchforeachproject

LearnmoreaboutSecurityDashboards

StaticApplicationSecurityTesting

GitLaballowseasilyrunningStaticApplicationSecurityTesting(SAST)inCI/CDpipelines;checkingforvulnerablesourcecodeorwellknownsecuritybugsinthelibrariesthatareincludedbytheapplication.ResultsarethenshownintheMergeRequestandinthePipelineview.Thisfeatureisavailableaspartof[AutoDevOps](https://docs.gitlab.com/ee/topics/autodevops/#auto-sast)toprovidesecurity-by-default.

LearnmoreaboutStaticApplicationSecurityTesting

DependencyScanning

GitLabautomaticallydetectswellknownsecuritybugsinthelibrariesthatareincludedbytheapplication,protectingyourapplicationfromvulnerabilitiesthataffectdependenciesthatareuseddynamically.ResultsarethenshownintheMergeRequestandinthePipelineview.Thisfeatureisavailableaspartof[AutoDevOps](https://docs.gitlab.com/ee/topics/autodevops/#auto-dependency-scanning)toprovidesecurity-by-default.

LearnmoreaboutDependencyScanning

ContainerScanning

WhenbuildingaDockerimageforyourapplication,GitLabcanrunasecurityscantoensureitdoesnothaveanyknownvulnerabilityintheenvironmentwhereyourcodeisshipped.ResultsarethenshownintheMergeRequestandinthePipelineview.Thisfeatureisavailableaspartof[AutoDevOps](https://docs.gitlab.com/ee/topics/autodevops/#auto-container-scanning)toprovidesecurity-by-default.

Learnmoreaboutcontainerscanning

DynamicApplicationSecurityTesting

Onceyourapplicationisonline,GitLaballowsrunningDynamicApplicationSecurityTesting(DAST)inCI/CDpipelines;yourapplicationwillbescannedtoensurethreatslikeXSSorbrokenauthenticationflawsarenotaffectingit.ResultsarethenshownintheMergeRequestandinthePipelineview.Thisfeatureisavailableaspartof[AutoDevOps](https://docs.gitlab.com/ee/topics/autodevops/#auto-sast)toprovidesecurity-by-default.

Learnmoreaboutapplicationsecurityforcontainers

InteractiveApplicationSecurityTesting

[IAST](https://blogs.gartner.com/neil_macdonald/2012/01/30/interactive-application-security-testing/)combineselementsofstaticanddynamicapplicationsecuritytestingmethodstoimprovetheoverallqualityoftheresults.IASTtypicallyusesanagenttoinstrumenttheapplicationtomonitorlibrarycallsandmore.GitLabdoesnotyetofferthisfeature.

RuntimeApplicationSecurityTesting

RASPusesanagenttoinstrumenttheapplicationtomonitorlibrarycallsastheapplicationisrunninginproduction.Unlikeothersecuritytools,RASPcantakeactiontoblockthreatsinreal-time,similartoaWebApplicationFirewallbutfromwithintheapp'sruntimeenvironmentratherthanatthenetworklayer.GitLabdoesnotyetofferthisfeature.

CreateprojectswithGitpush

Pushnewprojectstothedesiredlocationandanewprivateprojectwillautomaticallybecreated.

LearnmoreaboutcreatingProjects

Keeppersonalemailprivate

Useanoreplyemailaddressforyourcommitsinsteadofyourpersonalemailaddressprivate.

SeetheGitLabissuetoimplementthis

KubernetesClusterMonitoring

MonitorkeymetricsofyourconnectedKubernetescluster.

LearnmoreaboutClusterMonitoring

ChatOps

Executecommonactionsdirectlyfromchat,withtheoutputsentbacktothechannel.

LearnmoreaboutChatOps

DeployTokens

Provideread-onlyaccesstospecificrepositoriesorcontainerimagestoexternalinfrastructuresthatneedtoaccessyourdata,forexampletodeployapplicationsonKubernetes.

LearnmoreaboutDeployTokens

ViewKubernetespodlogs

QuicklyandeasilyviewthepodlogsofanappdeployedtoKubernetes.

LearnmoreaboutviewingKubernetespodlogs

Supportsgeolocation-awareDNS

HavingGeoreplicatedserver(s)canmakelocalpullsgomorequickly,butwithoutsupportforGeolocation-awareDNS,developersneedtoreconfiguretheirtoolsmanuallytopointtotheirnearestgeoreplicatedserver.UsersusingGeolocation-awareDNScanbetransparentlydirectedtotheclosestserveravailableandcanaccessrepositorydatafaster.

LearnmoreaboutGitLabGeo

Advancedglobalsearchinstalledasdefaultsearch

AdvancedglobalsearchviaElasticSearchisinstalledandenabledaspartofthecoreinstallationandprovidesthedefaultsearchcapability

LearnmoreaboutGitLabsearch

Groupsdropdowninnavigation

Searchingforagroupisdirectlyavailablebehindalightweightdropdownmenu,removingtheneedtonavigateawayfromyourworkintoaseparateviewwhenyou’relookingforahard-to-remembergroup.

LearnmoreaboutGroups

GitLabFlavoredMarkdownwithCommonMark

GitLabFlavoredMarkdownisnowrenderedusingCommonMark,amodernstandard,fornewMarkdowncontent.

LearnmoreaboutGitLabFlavoredMarkdown

InitializeREADMEonprojectcreation

ArepositorycanbeinitializedwithanexampleREADMEwhencreatinganewproject.Ifthisoptionischecked,aprojectrepositoryisinitializedwithadefaultmasterbranchwhichcanbeclonedrightaway.

LearnmoreaboutProjectcreation

'ContributetoGitLab'link

GitLabCoreandGitLab.comuserscannowfindourGitLabcontributionpagewithahandylink,availablerightawayfromyouruserprofilemenu.

LearnmoreaboutContributingtoGitLab

AllowSAMLassuranceleveltobypass2FA

itisnowpossibletohonortheSAMLprovider'sassurancelevel,allowingtodisablethetwo-factorauthentificationonGitLabsideviaanewSAMLconfigurationoption

LearnmoreaboutSAMLOmniAuthProvider

Managethirdpartyoffers

GitLab11.1introducestheabilitytocontrolthedisplayofthirdpartyoffersintheadministrationarea,providingmorecontroloverthedisplayoftheseoffers

LearnmoreaboutThirdpartyoffers

SeeJUnittestsummariesinmergerequestwidget

GitLaballowsyoutoviewJUnittestresultsfromthemergerequestwidget,givingyouinsightintoqualityimpactsofyourchanges.

LearnmoreaboutJUnittestsummariesinthemergerequestwidget

Userstatusmessage

DefineandshowyourpersonalstatusmessageviaanEmojiandtextmessage,exposedonyourprofilepageandonanycommentandauthorline.

LearnmoreaboutStatusmessages

Privateprofilepage

Incertainsituations,whenprivacyisofconcern,usersmightnotwanttoshowtheiractivity,contributionsandpersonalprojects.Activity-relatedinformationcanbedisabledintheprofilesettings.

LearnmoreaboutPrivateprofiles

Downloadsinglerepositoryfiles

WhenbrowsingthroughprojectrepositoriesonGitLab,havingdirectaccesstosinglefilesisarelevantusecase.A'Download'buttoninthefileviewerallowsyoutodownloadindividualfilesfromtheGitLabUI.

LearnmoreaboutProjectrepositories

Repositorylanguagesonprojectoverview

AcodelanguagesbarontheprojectoverviewshowsallrelevantlanguagestheGitLabrepositoryconsistsof,includingrelativequantity.

LearnmoreaboutProjects

InteractiveWebTerminals

InteractivewebterminalsallowyoutoconnecttoarunningorcompletedKubernetesorShellrunnerjobandmanuallyruncommandstobetterunderstandwhat'shappeninginthesystem.

LearnmoreaboutInteractiveWebTerminals

Customfiletemplates

Definecustom`LICENSE`,`.gitignore`,`Dockerfile`and`.gitlab-ci.yml`templatestomakeconsistencyeasier.

Learnmoreaboutcustomfiletemplates

CodeOwners

AssignCodeOwnerstofilestoindicatetheteammembersresponsibleforcodeinyourprojectusinga`CODEOWNERS`file.

LearnmoreaboutCodeOwners

ProtectedEnvironments

Specifywhichperson,group,oraccountisallowedtodeploytoagivenenvironment,allowingfurtherprotectionandsafetyofsensitiveenvironments.

LearnmoreaboutProtectedEnvironments

MavenRepository

GitLab'sMavenrepositorymakesiteasiertopublishandshareJavalibrariesacrossanorganization,andensuredependenciesaremanagedcorrectly.ItisfullyintegratedwithGitLab,includingauthenticationandauthorization.

DocumentationontheMavenRepository


Recommended