gitlab简单使用教程【转】
平时一直是用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
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编译:
image: golang:latest
before_script:
- ln -s /builds/wuyuans/www /go/src/www
- cd /go/src/www
- mkdir bin
stages:
- build
- deploy
build_web:
stage: build
script:
- go build -v -o bin/web www/web
except:
- release
build_service:
stage: build
script:
- go build -v -o bin/service www/service
except:
- release
deploy_web:
stage: deploy
script:
- go build -v -o bin/web www/web
- scp bin/web root@${HOST_1}:/bin/
environment:
name: www/web
url: http://$CI_ENVIRONMENT_SLUG.wuyuans.com
when: manual
only:
- 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社区版,功能应该差不多,毕竟安全和稳定对团队来说是比较重要的。
gitlab简单使用教程【转】的更多相关文章
- 【git】git简单使用教程
git的简单使用教程: 1.安装git bash客户端 2.打开git bash,cd到需要存储代码的路径下, 执行:git clone -b deploy ssh://git@gitlab.xxxx ...
- OpenMP的简单使用教程
转自:http://binglispace.com/2015/01/09/openmp-intro/ OpenMP的简单使用教程 今天有幸参加了一个XSEDE OpenMP的workshop讲座,真是 ...
- 程序员,一起玩转GitHub版本控制,超简单入门教程 干货2
本GitHub教程旨在能够帮助大家快速入门学习使用GitHub,进行版本控制.帮助大家摆脱命令行工具,简单快速的使用GitHub. 做全栈攻城狮-写代码也要读书,爱全栈,更爱生活. 更多原创教程请关注 ...
- knockout简单实用教程3
在之前的文章里面介绍了一些KO的基本用法.包括基本的绑定方式,基本的ko的绑定语法包括text绑定,html绑定等等(如有不明请参照上两篇文章),下面呢介绍一下关于ko的其他方面的知识.包括比较特殊绑 ...
- GitHub这么火,程序员你不学学吗? 超简单入门教程 【转载】
本GitHub教程旨在能够帮助大家快速入门学习使用GitHub. 本文章由做全栈攻城狮-写代码也要读书,爱全栈,更爱生活.原创.如有转载,请注明出处. GitHub是什么? GitHub首先是个分布式 ...
- gitlab服务器搭建教程
gitlab服务器搭建教程 ----2016年终总结 三 参考https://bbs.gitlab.cc/topic/35/gitlab-ce-8-7-%E6%BA%90%E7%A0%81%E5%AE ...
- 【gitlab】gitlab快速部署教程
gitlab快速部署教程 部署环境 Ubuntu 16.04(亲测可用) 开始部署 安装依赖 sudo apt-get install curl openssh-server ca-certifica ...
- sea.js简单使用教程
sea.js简单使用教程 下载sea.js, 并引入 官网: http://seajs.org/ github : https://github.com/seajs/seajs 将sea.js导入项目 ...
- vim简单使用教程【转】
vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的.下面的文章翻译自<Learn Vim Progress ...
随机推荐
- Trident中的DRPC实现
一:介绍 1.说明 Storm里面引入DRPC主要是利用storm的实时计算能力来并行化CPU intensive的计算.DRPC的storm topology以函数的参数流作为输入,而把这些函数调用 ...
- sql语句表示不等于
<> != 后面均不带引号“”
- springboot配置log4j
maven 配置jar包 <dependency> <groupId>org.springframework.boot</groupId> <artifact ...
- Largest Rectangle in a Histogram POJ - 2559 (单调栈)
Description A histogram is a polygon composed of a sequence of rectangles aligned at a common base l ...
- HDU 1533 Going Home (最大权完美匹配)
<题目链接> 题目大意:给你一张地图,地图上m代表人,H代表房子,现在所有人要走到房子内,且一个房子只能容纳一个人(人和房子的数量相同),人每移动一步,需要花1美元,问所有人走到房子中的最 ...
- hdu3944
hdu3944题目中给出的杨辉三角形的形状带有误导目的,应该转化成对称的形状再去思考这个问题分两种情况第一个是在左区从目标位置向左上方走一直走到边界,然后再向右上方一直走到起点n-k个1加上C(n-k ...
- uni-app — 一套前端开发跨平台应用的终极解决方案
uni-app 是一个使用 Vue.js 开发跨平台应用的前端框架,开发者编写一套代码,可编译到iOS.Android.H5.小程序等多个平台. 今天有空就来介绍一下uni-app这个能够跨平台开发, ...
- 利用Webpack+React(antd)+ES6+python(flask)实现代码转换
之前的几篇博客是将flask 结合 antd本地化,但是这样使得antd无法按需加载(也不支持ES6的语法),而且在写的过程中还需要把每个组件都用antd对象,这样的做法虽然是实现了antd的本地化, ...
- docker部署springboot项目
本文介绍一下docker如何部署springboot项目. 前提条件: 1.可以运行jar包的环境 2.机器上已经安装了docker 3.准备部署的springboot的jar包 4.Dockerfi ...
- [USACO18DEC]The Cow Gathering
Description: 给定一棵树,每次删去叶子,有m个限制,分别为(a,b)表示a需要比b先删,为每个点能否成为最后被删的点 Hint: \(n,m \le 10^5\) Solution: 手模 ...