前言
近期因为降级部署工具,顺便捋了一下构建流程。gitlabCI是代码提交后比拟重要的一个环节,因为我这边ubuntu本地电脑也部署了一套gitlab服务,顺便看下自动化部署都须要做哪些工作,对于咱们前端来说对web工程化也有更进一步的理解。
OS环境搭建
我这边是选用的一台比拟老的笔记本(刚刚达标4g内存)试验,选用了ubuntu 20.04.4 X64的零碎
- 拜访 https://cn.ubuntu.com/downloa...下载ubuntu桌面版的镜像
- u盘通过https://www.laomaotao.net/老毛桃制作为U盘启动工具
- 将ubuntu.iso镜像文件拷贝到U盘LMT根目录后插到笔记本上
- 启动笔记本抉择U盘启动,抉择载入Ubuntu.iso镜像
- 装置结束后启动ubuntu零碎
gitlab装置
- ctrl+a/t+t疾速关上Ubuntu的终端窗口
更新apt工具
sudo apt update
装置openssh(可选,次要是配置邮件发送性能)
sudo apt install ca-certificates curl openssh-server postfix
gitlab有社区版和企业版,企业版须要付费,那么就选社区版(CE)吧
sudo apt install gitlab-ce
这里遇到一个坑就是如果没有迷信上网的话下载会特地特地慢,遇到同样状况的同学倡议尽早切换下apt的源(https://blog.csdn.net/qq_2109...)
装置结束后,在/etc/gitlab/gitlab.rb目录中会有gitlab配置项,比方:
- external_url 更改http为https,会主动将用户重定向到受加密证书爱护的站点
- letsencrypt['contact_emails'] 设置定义一个电子邮件地址列表
如果有配置批改,则需重新配置
sudo gitlab-ctl reconfigure
在启动前咱们须要吧默认的root用户明码备份下,关上initial_root_password
sudo gedit /etc/gitlab/initial_root_password
启动gitlab服务
sudo gitlab-ctl restart
gitlab应用
胜利启动后就能够通过浏览器拜访127.0.0.1关上gitlab治理页面,输出root和initial_root_password的初始密码就能够进入相熟的界面了
- 在root身份进入页面后,点击左上角的menuAdmin-->settings --> Sign-in Restrictions目录内能够开启和敞开开放注册,如果注册敞开则每次注册都须要管理员通过才能够创立账户。
- 局域网内通过输出这台机器的ip就能够间接拜访gitlab页面,我这里是172.17.88.138
- 试着在gitlab中创立我的项目test_1,当然也能够通过绑定token通过OPEN API来创立
gitlab CI配置
Gitlab CI 是gitlab的一部分,最大的作用是治理各个我的项目的构建状态,因而,运行构建工作这种浪费资源就交给了gitlab runner 来做了。 gitlab runner能够装置到不同的机器上,所以在构建工作运行期间并不会影响到gitlab的性能。现实状况下,不应将GitLab Runner与GitLab装置在同一台机器上。我这边测试机器就一台,就暂且都装到一起吧。
runner类型
runner简略说次要有三种 gitlab-runner:
- share runner 能够为所有gitlab内的我的项目应用
- group runner 能够为特定项目组下的我的项目应用
- specific runner 只能为指定我的项目应用
在gitlab admin area中能够治理你gitlab所有注册的runners,share runner能够转为group runner或者specific runner,然而不能够逆转。
装置
装置runner须要先增加gitlab的存储库
sudo apt-get install curl // 如果没有装置curl工具执行curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash
装置最新版本的GitLab Runner
sudo apt-get install gitlab-runner
注册/配置
执行如下命令,并填入根本信息
gitlab-ci-multi-runner register Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):http://172.17.88.138/ #输入您的GitLab实例URL#输入您取得的令牌以注册Runner:Please enter the gitlab-ci token for this runner:Gvcpo9H8fMxSykFspvG6#输出Runner的形容,您能够稍后在GitLab的UI中进行更改:Please enter the gitlab-ci description for this runner:[localhost.localdomain]: demo#输出与Runner关联的标签,您能够稍后在GitLab的UI中进行更改:Please enter the gitlab-ci tags for this runner (comma separated):vue-tag#是否运行未加标签的构建Whether to run untagged builds [true/false]:[false]: true#是否锁定以后我的项目RunnerWhether to lock Runner to current project [true/false]:[false]: trueRegistering runner... succeeded runner=Gvcpo9H8#在这里须要输出runner的执行形式,因为我的Gitlab和runner是装置在同一台服务器上的,间接输出shellPlease enter the executor: docker+machine, docker-ssh+machine, docker, parallels, ssh, virtualbox, kubernetes, docker-ssh, shell:shell#呈现这样信息示意服务端的配置就曾经胜利完结了,如果须要应用到主动构建,还须要再增加一个配置文件,上面说说这个。Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
- 初始化后的配置能够通过root身份,关上adminArea菜单,在overview=>runners中抉择对应的runner进行配置,当然也能够将runner进行我的项目调配
- 在具体调配的我的项目中就能够看到运行中的runner了,如图
运行
在拉取我的项目到本地后,咱们简略的创立一个ci配置(.gitlab-ci.yml)
stages: - build - deployjob_build: stage: build only: - master script: - echo "测试 打包"job_build: stage: deploy only: - master script: - echo "测试 部署"
- 因为我这边runner没有配置tag,所以脚本内没有注明tag。推送到master后,会看到我的项目pipelines曾经运行起来了,在打印中能够看到脚本内的输入
我在部署期间遇到了一些坑
- 报错:This job is stuck, because you don't have any active runners that can run this job,因为注册时抉择了不在没有tag标记的job上运行,在runner设置中改为true就好了
Can run untagged jobs: [false/true]
- 另外一个可能就是gitlab runner默认运行时user mode,须要晋升权限
sudo gitlab-ci-multi-runner run
总结
em。。。。其实部署OS环境搭建,gitlab服务部署还算是比较顺利。在runner启动后的配置里会有比拟多的问题,runner启动实例会心跳调用指标gitlab服务的API,一直的获取gitladeb推送状态,而后执行相应的.gitlab-ci.yml脚本。捕捉到对应脚本后依照串行stage=>并行job=>串行job内的script实现所有工作。