博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
gitlab简单使用教程【转】
阅读量:5897 次
发布时间:2019-06-19

本文共 3362 字,大约阅读时间需要 11 分钟。

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

1. GitLab.com

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

但是对于个人开发者来说要求的服务器配置有点高,1核1G的服务器也只能勉强跑起来。另一种选择就是使用GitLab.com,这是官方提供的免费平台,功能和社区版一样,有人在维护、更新,新功能会比较多,缺点就是偶尔抽风。地址 > 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初始化那部分

有ssh key后添加到后台,点击右侧头像,下拉菜单里选settings,在顶部的tab里点击SSH 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,部署和执行在自己服务器上,优点是安全、速度快,缺点是需要提供服务器,部署教程
  • 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,教程

  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查

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 本文来自 转载请注明,谢谢! 文章地址:
你可能感兴趣的文章
11月25日
查看>>
ELKF安装使用教程。elasticsearch+logstash+kibana+filebeta。
查看>>
mybatis学习之一 开发环境配置和接口编程
查看>>
SqlDataAdapter DataSet DataTable 详解
查看>>
Android Xutils 框架
查看>>
为已经存在的本地项目添加git,以及从远程仓库拉取代码并切换远程分支
查看>>
在博客添加网页背景动画效果,跟随鼠标移动的线条
查看>>
JavaSE相关面试题
查看>>
编码问题
查看>>
libvirtd: initialization failed解决(附libvirt其它错误解决办法) ...
查看>>
ubuntu取消任务栏上的快捷图标 分类: ubuntu学习 ...
查看>>
读写锁
查看>>
JAVA大数据数组排序
查看>>
《陆小凤传奇》
查看>>
2017 Multi-University Training Contest - Team 5
查看>>
laravel更新时区:
查看>>
JSP 基础知识
查看>>
IOC容器
查看>>
asp.net大数据导出execl实现分开压缩并下载
查看>>
Strata 2014 上的 AzureCAT 粉笔会谈
查看>>