前言由于最近升级了部署工具,简单回顾一下搭建过程。gitlabCI是代码提交后比较重要的一个环节,因为我的ubuntu本机也部署了一套gitlab服务。顺便看看自动化部署需要做哪些工作。对于我们的前端,还有更进一步的web工程的学习。OS环境搭建,我选择了一台比较老的笔记本(刚好达到标准4g内存)进行测试,选择了ubuntu20.04.4X64系统,访问https://cn.ubuntu.com/downloa...下载ubuntu桌面版镜像U盘通过https://www.laomaotao.net/Laomaotao。制作U盘启动工具,将ubuntu.iso镜像文件复制到U盘LMT根目录下,插入笔记本启动笔记本,选择U盘启动,选择LoadtheUbuntu.isoimage安装完成后,启动ubuntu系统和gitlab。安装ctrl+a/t+t可以快速打开Ubuntu终端窗口。更新apt工具sudoaptupdate安装openssh(可选,主要是配置邮件发送功能)sudoaptinstallca-certificatescurlopenssh-serverpostfixgitlab有社区版和企业版,企业版需要付费,所以选择社区版(CE)sudoaptinstallgitlab-ce这里有一个坑,就是如果没有科学上网,下载会非常非常慢,遇到同样情况的同学建议转源尽快的apt的(https://blog.csdn.net/qq_2109...)安装完成后在/etc/gitlab/gitlab.rb目录下会有gitlab的配置项,例如:external_url将http改为https,会自动将用户重定向到受加密证书保护的站点letsencrypt['contact_emails']设置定义了一个邮箱地址列表如果有配置修改,需要重新配置sudogitlab-ctlreconfigurein开始之前,我们需要备份默认的root用户密码,打开initial_root_passwordsudogedit/etc/gitlab/initial_root_passwordstartgitlabservicesudogitlab-ctlrestartgitlab使用成功后,可以通过浏览器访问127.0.0.1打开gitlab管理页面,输入root和初始密码initial_root_password即可进入熟悉的界面。以root身份进入页面后,点击左上角的menuAdmin-->settings-->Sign-inRe可以在限制目录中打开和关闭开放注册。如果关闭注册,管理员需要通过每个注册创建一个帐户。在局域网中,输入本机ip即可直接访问gitlab页面。这里我尝试172.17.88.138在gitlab中创建项目test_1,当然你也可以通过绑定token通过OPENAPI创建gitlabCI配置。GitlabCI是gitlab的一部分。它最大的作用是管理各个项目的构建状态。因此,运行构建任务是一种资源浪费。交给gitlabrunner去做。gitlabrunner可以安装在不同的机器上,因此在构建任务运行过程中不会影响gitlab的性能。理想情况下,GitLabRunner不应与GitLab安装在同一台机器上。我这里只有一台测试机,暂时先一起安装吧。runner类型gitlab-runner主要分为三种类型:sharerunner可用于gitlab中的所有项目;grouprunner可用于特定项目组下的项目;特定的跑步者只能用于指定的项目;你可以在gitlab管理区管理你的gitlab所有注册跑者和分享跑者都可以转换为组跑者或特定跑者,但不能撤消。要安装runner,需要先添加gitlab仓库。sudoapt-getinstallcurl//如果没有安装curl工具,执行curl-L"https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh"|sudobash安装最新版本的GitLabRunnersudoapt-getinstallgitlab-runnerregistration/configuration执行以下命令并填写基本信息gitlab-ci-multi-runnerregister请输入gitlab-cicoordinatorURL(e.g.https://gitlab.com/):http://172.17.88.138/#EnteryourGitLabinstanceURL#EnterthetokenyougettingtoregistertheRunner:Pleaseenterthegitlab-citokenforthisrunner:Gvcpo9H8fMxSykFspvG6#EnterThedescriptionRunner的,您可以稍后在GitLabUI中更改它:Pleaseenterthegitlab-cidescriptionforthisrunner:[localhost.localdomain]:demo#EnterthetagassociatedwiththeRunner,youcanchangeitlaterintheGitLabUIMakechangesin:Pleaseenterthegitlab-citagsforthisrunner(commaseparated):vue-tag#Whethertorununtaggedbuilds是否运行untaggedbuilds[true/false]:[false]:true#WhethertolockthecurrentProjectRunner是否锁定Runner到当前项目[true/false]:[false]:trueRegisteringrunner...成功ceededrunner=Gvcpo9H8#这里需要输入runner的执行方式,因为我的Gitlab和runner安装在同一台服务器上,直接进入shell请输入executor:docker+machine,docker-ssh+machine,docker,parallels,ssh,virtualbox,kubernetes,docker-ssh,shell:shell#如果出现这样的信息,说明服务器的配置已经成功完成。如果需要使用自动构建,需要另外添加配置文件。说说这个注册成功的Runner。随意启动它,但如果它已经在运行,配置应该会自动重新加载!初始化后的配置可以通过root身份进行,打开adminArea菜单,在overview=>runners中选择对应的runner进行配置,当然你也可以配置runnerProjectallocation可以在具体assigned中看到运行的runner项目,如图,拉取项目到本地后,我们简单创建一个ci配置(.gitlab-ci.yml)stages:-build-deployjob_build:stage:buildonly:-masterscript:-echo"Testpackaging"job_build:stage:deployonly:-masterscript:-echo"Testdeployment"因为我的运行器没有配置标签,所以脚本中没有指定标签。push到master后,会看到项目pipelines正在运行,在print中可以看到脚本中的输出。我在部署的时候遇到了一些陷阱:这个作业卡住了,因为你没有任何可以运行这个作业的活跃的运行器,因为你在注册时选择了不在没有标签的作业上运行,只需在运行器中将其更改为true设置。Canrununtaggedjobs:[false/true]另一种可能是gitlabrunner的默认用户模式,需要提升权限sudogitlab-ci-multi-runnerrunsummarizeem。...其实OS环境的部署还是比较顺利的,gitlab服务的部署也是比较顺利的。runner启动后配置问题会比较多。runner启动实例并心跳调用目标gitlab服务的API,不断获取gitladeb的推送状态,然后执行对应的.gitlab-ci.yml脚本。抓取对应的脚本后,在serialstage=>paralleljob=>serialjob中根据脚本完成所有任务。
