脑袋竟然抽了,要研究这个?
当我有这个想法的时候,脑袋确实抽了一下。作为传统应用开发人员,应该把自己的精力放到业务逻辑上,把完成客户需求作为第一目标。如果把精力放到这个上面,那要架构师干嘛?所以当听到架构师跟我说这番话的时候,我更加感到好奇了,就好像某水中学的孩子想努力学习以后好去大城市拱白菜一样。
白菜好美
所以想到这里,我毅然放下了手里繁重的工作,开始找各种文档研究这个听起来非常美的GitLab单词,我合计当我研究成功了,是不是可以和领导多要点?或者以后当个小架构师给别人挖挖坑?
1、到底什么是GitLab,我要用它干嘛?
无论咱用什么语言写代码,无论咱用什么工具写代码,最后都要把代码上传到代码库里。我最开始使用的代码管理工具是svngit登录,后来换成了git,这些工具会把代码传到Repository。这样有个统一的库来管理代码,后续发布或维护交给其他人时也会方便很多,直接checkout或pull下来就好了。而GitLab就是一个使用git来管理仓库的系统软件。通过构建一个GitLab服务,让开发人员使用你分发的权限来写代码,最后把写好的代码部署到测试或生产环境。GitLab是所有项目开发的第一步,看来还是很重要的。万事开头难,先来部署下服务吧。
无眼狐狸
2、GitLab的部署,好像很简单
首先去官网溜溜,找到菜单里的安装菜单。
安装GitLab菜单
映入眼帘的是一句我看不懂的普通话?总之是让我准备的服务器要4g内存是吧?
Linux installation is quicker to install, easier to upgrade and contains features to enhance reliability not found in other methods. Install via a single package (also known as Omnibus) that bundles all the different services and tools required to run GitLab. At least 4 GB of RAM is recommended.
我弄了个虚拟机,给了4g内存,准备部署,下面是教用户怎么部署的,还分各种不同的系统,感觉好贴心啊,比老师上来就让我开发个OA打卡系统强了好多呢。
分系统安装
我选择CentOS7来安装,下面是安装命令:
安装依赖:
sudo yum install -y curl policycoreutils-python openssh-server perl
# Enable OpenSSH server daemon if not enabled: sudo systemctl status sshd
sudo systemctl enable sshd
sudo systemctl start sshd
# Check if opening the firewall is needed with: sudo systemctl status firewalld
sudo firewall-cmd –permanent –add-service=http
sudo firewall-cmd –permanent –add-service=https
sudo systemctl reload firewalld
安装邮箱:
sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix
安装GitLab
curl | sudo bash
sudo EXTERNAL_URL=”https://gitlab.example.com” yum install -y gitlab-ee
这个可以更改为ip地址并且用http协议,如果后面要改域名可以再配置dns,我是设置成:10220,这样我可以在本机访问到这个虚拟机的GitLab,当然要开防火墙端口,或者关闭防火墙
防火墙开端口命令:firewall-cmd –zone=public –add-port=10220/tcp –permanent
关闭防火墙命令:service firewalld stop
重启防火墙配置:firewall-cmd –reload
如果上面的url地址设置错了,可以到文件里面去修改
gitlab.rb位置
gitlab.rb
修改external_url ':10220'
安装完了,请求下看看效果,这里需要用户名和密码,GitLab提示用户名用root,密码存到一个密码文件中,第一次需要登录去复制出来。
密码位置:
/etc/gitlab/initial_root_password
先浏览下GitLab吧
可能会遇到502错误,大概率端口设置不对,我的经验是设置大端口一般没问题,10000以后的很安全,如果8080、9090、8090这种很容易就冲突了。
成功登录说明安装没问题了,成功部署了GitLab服务,第一阶段完成了,下面咱看看怎么建库吧。
3、GitLab建库,存点小代码
建个代码仓库,这里非常简单,看到按钮按一按git登录,就创建了一个代码仓库。
New Project->Create blank project->Create project
我创建了一个mountain项目,这里配合Idea上传点代码。
测试项目
这里要上传ssh密钥,不然没有代码权限。
ssh-keygen -t rsa -C your@xx.com -b 4096,可以设置自己的密码,这样会生成密钥对在本地,找到生成的公钥,把里面的字符串配置到GitLab。
密钥对位置
在GitLab点击头像下的Preference进行设置
配置SSH密钥
到这里仓库和账户权限都设置差不多了,可以通过IDEA等IDE下载代码了。是不是到此为止了?就这?
4、CI与CD是个什么?能骗个女朋友?
完成了部署与代码库搭建,好像真的不算什么,拿这个找白菜貌似差了点啥。下班后我涌进拥挤的通勤车,看着谢顶的师弟挽着撒娇的白嫩师姐,貌似想到了什么:如果下班后能有人自动把我放到通勤车,再把车里容易和我发生冲突的师弟赶出去留下我喜欢的师姐岂不是很美?开到地方了直接把我放回家,我都不用走了。如果每天都这样,我还买什么私家车啊,通勤就是我的邂逅车,爱情早晚从这里开始。所以代码是不是会和爱情一样,有人从中推波助澜呢?
上车?
所以看了看CI/CD的概念,这个东西正好在GitLab中:
CI:Continuous Integration works by pushing small code chunks to your application’s codebase hosted in a Git repository, and to every push, run a pipeline of scripts to build, test, and validate the code changes before merging them into the main branch.
CD:Continuous Delivery and Deployment consist of a step further CI, deploying your application to production at every push to the default branch of the repository.
大概就是帮助我把代码创建、测试、部署一遍。CI可以实现持续集成,把各种开发者推送的代码自动测试、构建一遍,如果有问题会提示他们改好,没有问题就提示可以合并,这样就不用靠脑袋想起来了构建一遍,再解决冲突。而CD可以实现持续部署,可以把构建好的打包发布到应用服务器,这样就不用原始的手动拷贝了,这里和Jenkins很像。
概念理解很重要,这东西就像ppt,咱不会造电动车也要明白啥是特斯拉。
CI/CD
5、配置CI/CD
以我的这个测试项目代码为例,点击CI/CD configuration进入配置页。
这里其实是在项目根目录下要创建一个文件,名字为.gitlab-ci.yml,这个就是ci、cd的配置文件,点击这个Browse templates可以浏览模板。我用的gradle,但是浏览了大神的文档感觉不知所以,这东西应该我复制过来,还是学一遍?好吧,学一遍吧。。
stages:按顺序执行的阶段任务标签,一般都是三个,build、test、deploy,代表了构建、测试、部署
variables:定义变量,这里我定义了三个,GRADLE_OPTS关闭daemon功能,因为模板让关的,不过开了也没事,是加速构建的一个功能。upload_path定义了我之后要上传目标应用服务器的文件地址,jar_name是自定义的jar名称。
before_script:执行下面的阶段任务之前,要执行一些操作作为前置条件。这里是添加项目相对目录的一个配置,并且创建两个文件夹,不然后面会因为找不到文件报错。
.gitlab-ci.yml 配置全局变量
下面配置一下构建任务:
build-bootJar:任务名称,随便起
stage: build 对应阶段任务名
image: 定义使用gradle版本,这里是之前装好的
script:执行的脚本内容,这个非常重要,所有操作都在这里来写。
cache:设置缓存,不然每次都会下载依赖,非常慢
cache:key:设置缓存的文件名称,”$CI_PROJECT_NAME”这个是项目名称,GitLab内部设置的可识别变量,设置后会自动以这个来命名。
cache:paths:设置缓存位置
cache:policy:设置策略,这里pull-push是拉取和推送都要设置缓存。
artifacts:构建,生成的打包文件必须要用到这个命令来传输给下一个阶段任务,不然下面找不到文件。
only:设置master,只管master的打包,其他分支不管。
stage:build
设置好任务后,可以看到CI/CD菜单中,构建的过程。每个小绿点代表的每个任务阶段。
任务执行目录
限时特惠:本站每日持续更新海量设计资源,一年会员只需29.9元,全站资源免费下载
站长微信:ziyuanshu688