从部署ubuntu到gitlab-ci实战
前言
近期由于升级部署工具,顺便捋了一下构建流程。gitlabCI是代码提交后比较重要的一个环节,因为我这边ubuntu本地电脑也部署了一套gitlab服务,顺便看下自动化部署都需要做哪些工作,对于我们前端来说对web工程化也有更进一步的了解。
OS环境搭建
【从部署ubuntu到gitlab-ci实战】我这边是选用的一台比较老的笔记本(刚刚达标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系统
- 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
- 在root身份进入页面后,点击左上角的menuAdmin-->settings --> Sign-in Restrictions目录内可以开启和关闭开放注册,如果注册关闭则每次注册都需要管理员通过才可以创建账户。
文章图片
- 局域网内通过输入这台机器的ip就可以直接访问gitlab页面,我这里是172.17.88.138
文章图片
- 试着在gitlab中创建项目test_1,当然也可以通过绑定token通过OPEN API来创建
文章图片
runner类型
runner简单说主要有三种 gitlab-runner:
- share runner 可以为所有gitlab内的项目使用
- 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 registerPlease 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 #是否锁定当前项目Runner Whether to lock Runner to current project [true/false]: [false]: true Registering runner... succeededrunner=Gvcpo9H8 #在这里需要输入runner的执行方式,因为我的Gitlab和runner是安装在同一台服务器上的,直接输入shell Please 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
推荐阅读
- TASKCTL的单机/分布式部署,启动服务/代理节点监听事件
- 从构建到使用,openLooKeng 如何实现 Hash Join ()
- 使用|使用 Rancher 进行首次金丝雀部署
- android|IntelliJ Plugin 开发之调试运行、部署、本地安装和发布项目到仓库(三)
- 手写|手写 Vue 系列 之 从 Vue1 升级到 Vue2
- 从零开始,开发一个|从零开始,开发一个 Web Office 套件(9)(拖动鼠标选中文字 Edge Case)
- 同事提出个我从未想过的问题,为什么Kubernetes要"多此一举"推出静态Pod概念()
- python学习小技巧|简单的python项目fastapi在云服务器的部署
- 【.NET6+WPF+Avalonia】开发支持跨平台的WPF应用程序以及基于ubuntu系统的演示
- 二进制部署1.23.4版本k8s集群-5-部署Master节点服务