平时一直是用git来管理代码仓库,也用过一段时间github,但是github免费版不能建私有仓库。后来转到了bitbucket,后来被atlassian收购后有点不适应,而且在国内访问经常连不上。还是gitlab比较好用,因为公司也是用gitlab,所以上手很快,新增的构建功能非常方便。

1. GitLab.com

gitlab是开源项目,官网也提供了社区版安装包,如果有自己服务器的话可以私有化部署一个,安装教程参考官网,只需要简单几步就能运行,地址https://about.gitlab.com/installation/。

但是对于个人开发者来说要求的服务器配置有点高,1核1G的服务器也只能勉强跑起来。另一种选择就是使用GitLab.com,这是官方提供的免费平台,功能和社区版一样,有人在维护、更新,新功能会比较多,缺点就是偶尔抽风。地址https://gitlab.com/users/sign_in > GitLab.com offers free unlimited (private) repositories and unlimited collaborators.

这是官方的宣传语,提供无限的免费的私人的仓库,无限制的协作者,条件非常诱人。

注册流程比较简单,填一下username和email就差不多了,这也将是git空间的标记,名字不要取得太随意就行了。

2. 创建项目

登录后点击右上角的加号(New project)。

  • Project path:如果你属于group的话可以选group名字,这样项目就会放在对应group下,一般团队项目比较好用。
  • Project name:你的项目名字
  • Import project from:可以从多个github、bitbucket等主流托管平台导入项目。
  • Project description:项目描述,可选
  • Visibility Level:项目可见级别
    • Private:私有项目,需要授权才能访问,适合个人、团队开发。
    • Internal:内部项目,注意只要登录账号就能访问,适合开源贡献代码。
    • Public:公开项目,不用登录就能访问,适合分享项目。

点击create,创建项目,进入空项目,会出现初始化步骤,可以用ssh和https方式来上传代码,推荐ssh,比较安全。

3. 配置ssh(可选)

如果本地没有ssh key,用ssh-keygen初始化一个,可以参考我之前写的github教程git初始化那部分https://wuyuans.com/2012/05/github-simple-tutorial/#toc-3

有ssh key后添加到后台,点击右侧头像,下拉菜单里选settings,在顶部的tab里点击SSH Keys,或者直接访问https://gitlab.com/profile/keys。

Key就是.ssh/id_rsa.pub文件内容,title填自己知道的就行,尽量语义化点。

Add key,完成。

4. 上传项目

回到我们创建的空项目页面,在项目名称下面选择传输协议,ssh或者https,下面教程里的url会跟着变。

之后按照下面的教程来做就行了,最后push

  1. git push -u origin master

完成,这时项目页面应该就有东西了,后面就可以用正常的git命令来维护代码仓库了。

5. 配置CI(持续集成)

如果只是要一个git代码托管的话上面几步已经足够了,现在开始介绍gitlab提供的持续集成功能,这对于需要打包、发布的人来说非常方便。

5.1 Pipelines

一个pipeline就是一次持续集成任务,一般由一次push触发,在网页上对项目的修改、merge也会触发pipline。pipline由Runner执行,Runner有两种:

  • Specific Runners:私有runner,部署和执行在自己服务器上,优点是安全、速度快,缺点是需要提供服务器,部署教程https://docs.gitlab.com/runner/install/linux-repository.html
  • Shared Runners:共享runner,官方提供的runner,优点是免费,缺点是会偶尔抽风、或者速度慢

5.2 Jobs

pipline由多个job组成,一个job会发给一个runner来执行,所以各个job之间的数据不是共享的,除非使用cache。所以尽量把一些有依赖的步骤放到一个job里,或者把一些通用步骤放到before_script里,这个后面会提到。

5.3 stages

stage是对job的分组,同一个stage里的job是并行的,两个stage之间是串行的

5.4 .gitlab-ci.yml

要想配置上面说的这些,需要在项目根目录新建.gitlab-ci.yml文件,文件格式为yaml,教程https://docs.gitlab.com/ee/ci/yaml/README.html。举个例子,这是我www工程配置文件的简化版,使用golang编译:

  1. image: golang:latest
  2. before_script:
  3. - ln -s /builds/wuyuans/www /go/src/www
  4. - cd /go/src/www
  5. - mkdir bin
  6. stages:
  7. - build
  8. - deploy
  9. build_web:
  10. stage: build
  11. script:
  12. - go build -v -o bin/web www/web
  13. except:
  14. - release
  15. build_service:
  16. stage: build
  17. script:
  18. - go build -v -o bin/service www/service
  19. except:
  20. - release
  21. deploy_web:
  22. stage: deploy
  23. script:
  24. - go build -v -o bin/web www/web
  25. - scp bin/web root@${HOST_1}:/bin/
  26. environment:
  27. name: www/web
  28. url: http://$CI_ENVIRONMENT_SLUG.wuyuans.com
  29. when: manual
  30. only:
  31. - release

5.4.1 image

编译使用的docker镜像,如果是golang的话可以用golang:latest,使用最新版golang,其他可以在docker hub查https://hub.docker.com/_/golang/

5.4.2 before_script

每个job执行前都会执行before_script里的步骤,主要是做一些环节初始化,比如我这里把工程目录链到了GOPATH下,这样方便使用go命令。也可以在这里做一些go get工作

5.4.3 stages

我分了两个stage,build和deploy。build里有build_web、build_service,deploy里的是deploy_web,名字可以随便,主要是job里的stage字段需要和stages里定义的对应上。

5.4.4 build_web、build_service

script里的是执行的命令,做go build的工作,except表示这个job不能在release分支执行。

5.4.5 deploy_web

script和前面一样。environment用来标记发布的名字,我们可以用environment来管理发布版本、回滚等。when表示执行时间,默认是always每次都会执行,manual表示需要在后台手动执行,这样在不需要所有deploy job都执行的时候手动deploy项目。only表示只在release分支执行。

5.5 Environments

在.gitlab-ci.yml里配置了environment后,job执行完后会在项目页面里的Pipelines->Environments下看到这次job,他会按照配置里的name来合并,每次job都可以重做,也就是可以用来做项目的重发和回滚,右边有相对于的按钮,很方便。

6. 总结

gitlab有很多功能非常实用,比如上面讲到的Pipelines、Environments等,还有像Graph(以前叫network)可以显示所有分支的树状结构,这对于在多个分支里来回切换、分不清在哪个分支提交的人来说很直观。而且gitlab对于权限控制提供了很多的选项,很适合团队合作。然而缺点也还是有的,因为是官方托管的平台,日常维护、偶尔抽风什么的,还有被墙的风险什么的。。。如果是个人用户应该关系不大,如果是团队的话还是自建gitlab社区版,功能应该差不多,毕竟安全和稳定对团队来说是比较重要的。

作者:wuyuan 本文来自Wuyuan's Blog 转载请注明,谢谢! 文章地址: https://wuyuans.com/2017/05/gitlab-simple-tutorial

转载于:https://www.cnblogs.com/mazhenyu/p/7691064.html

gitlab简单使用教程【转】相关推荐

  1. GitLab 小白入手教程

    GitLab 小白入手教程 这里不讲概念性的东西,在看这个之前请先移步到廖雪峰的官方网站选择git教程!下载并安装Git,然后点击Git Bash Here ,进行全局配置 1 git config ...

  2. vim简单使用教程【转】

    vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的.下面的文章翻译自<Learn Vim Progress ...

  3. java map set_java中Map、Set、List的简单使用教程(快速入门)

    Map.Set.List List的常用方法 1.创建 List list = new ArrayList<>(); List list = new LinkedList<>( ...

  4. 【gitlab】gitlab快速部署教程

    gitlab快速部署教程 部署环境 Ubuntu 16.04(亲测可用) 开始部署 安装依赖 sudo apt-get install curl openssh-server ca-certifica ...

  5. 【转】正则表达式简介及在C++11中的简单使用教程

    [转]正则表达式简介及在C++11中的简单使用教程 正则表达式Regex(regular expression)是一种强大的描述字符序列的工具.在许多语言中都存在着正则表达式,C++11中也将正则表达 ...

  6. PHP在WPS中的应用,PHP+Laravel的简单应用教程【ajax的使用】,wps的使用教程

    PHP+Laravel的简单应用教程[ajax的使用]PHP·拉弗尔的简单应用教程[阿贾克斯的使用],下面由Laravel框架教程栏目给大家介绍PHP Laravel的简单应用教程[阿贾克斯的使用], ...

  7. 史上最简单MySQL教程详解(进阶篇)之存储过程(一)

    史上最简单MySQL教程详解(进阶篇)之存储过程(一) 史上最简单MySQL教程详解(进阶篇)之存储过程(一) 什么是存储过程 存储过程的作用 如何使用存储过程 创建存储过程 DELIMITER改变分 ...

  8. 史上最简单MySQL教程详解(进阶篇)之存储引擎介绍及默认引擎设置

    什么是存储引擎? MySQL存储引擎种类 MyISAM 引擎 InnoDB引擎 存储引擎操作 查看存储引擎 存储引擎的变更 修改默认引擎 什么是存储引擎? 与其他数据库例如Oracle 和SQL Se ...

  9. git指令快捷 idea_IDEA+Git+Gitlab使用详细教程

    GitLab 安装踩坑 502错误码和访问卡顿解决办法 Gitlab对内存的要求高,我的服务器Centos 7+2核心+2G内存,频繁报502错误,访问也很卡.原因可能是可用内存太少. # free ...

最新文章

  1. Shell编程日常积累_20160114
  2. 一种安全的static变量Get/Set方式
  3. js复制网站文字追加网站来源,网站版权
  4. let/var——事实上var的设计可以看成JavaScript语言设计上的错误. 但是这种错误多半不能修复和移除, 以为需要向后兼容.||将let看成更完美的var
  5. Ubuntu建立(apache+php+mysql)+phpmyadmin
  6. 浏览器调试时控制台出现:Uncaught SyntaxError: Unexpected identifier
  7. java微信第三方支付
  8. npm卸载全局安装的第三方插件注意事项
  9. CSS 控制滚动条样式
  10. SPSS处理bicomb矩阵——打开txt文件只有输出文档界面显示正在运行GET DATA,并不占用cpu,原因是编码格式不匹配
  11. python的快捷键总结
  12. Android定制实现上网限制
  13. html 手机端可以选择复制粘贴,js移动端实现网站内容复制粘贴功能
  14. 干货|6个职场常用Excel技巧,千万不要错过呦!
  15. 《惢客创业日记》2020.07.25-26(周六)光盘行动的痛点(三)
  16. 软考可以不考初级直接考中级吗?
  17. 计算机设备类型分类,计算机外围设备的分类,都有哪些设备
  18. BZOJ1455: 罗马游戏
  19. UWB测距 方法,双向双边测距法(DS-TWR)(四)
  20. Nginx 代理https

热门文章

  1. git restore
  2. docker 开启服务
  3. PythonEggs
  4. 成员变量和方法的理解
  5. layui 读取本地excel内容_Python操作Excel基础(1)
  6. 等保2.0丨2021 必须了解的40个问题
  7. VMware vSAN6.7 设计和优化 vSAN 主机 vSAN 6.5带来七大更新 解读VMware超融合增长秘诀
  8. 5月22日晚间,阿里巴巴集团发布2020财年业绩……
  9. mysql+rsyslog,loganalyzer+mysql+rsyslog中央日志服务器对syslog的web管理
  10. php垂直居中代码_纯css实现水平和垂直居中