当前位置:首页 > 技术文章 > 正文内容

10分钟搞定gitlab-ci自动化部署(gitlab ci 配置)

gitlab-ci 是持续集成工具/自动化部署工具,类似 jenkins。

持续集成 是将代码集成到共享存储库并尽可能早地自动构建/测试每个更改的实践 - 通常一天几次。

概述

在编码完成时都会进行打包发布过程,如果每次都手动操作这一步骤就会浪费时间,效率低下。所以就有了持续集成。

准备事项

请提前安装以下软件,本文不介绍如何安装。

  • gitlab
  • git

配置SSH Key

这一步至关重要,如果已配置可直接跳过。 如果不配置的话每次git pull都会要求输入密码,这样就做不到自动化了。

输入以下命令,一直回车即可

ssh-keygen -t rsa -b 4096 -C "你的邮箱@example.com"

查看生成的公钥, 并复制下来

cat ~/.ssh/id_rsa.pub

在gitlab上添加 SSH Key, 至此完成

新建git仓库

这一步可选,如果你已经有项目可直接跳过,只是为了照顾新人

1、在gitlab上新建项目

2、克隆仓库, 服务器和本地机器都要克隆,位置随意。 我把仓库克隆到了 /home/test/

git@localhost:root/test.git

安装 gitlab-runner

1、使用gitlab官方提供的仓库

curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash

2、使用yum进行安装

sudo yum install gitlab-runner

查看Runners配置信息

将 url 和 token复制保存下来,接下来的配置需要用到这2个。

位置 工程项目 -> Settings -> CI/CD -> Runners(点击右侧Expand展开起来就能看到)

url: http://localhost:8088/

token: LquGyHsNbzB2uBBxQMMj

注册gitlab-runner

安装完gitlab-runner还需要进行注册

1、输入以下命令进行注册

sudo gitlab-runner register

2、提示 Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):

将url粘贴并回车(不要说不知道~)

http://localhost:8088/

3、提示 Please enter the gitlab-ci token for this runner:

token粘贴并回车(不要说不知道~)

LquGyHsNbzB2uBBxQMMj

4、提示 Please enter the gitlab-ci description for this runner:

描述,随便输入

test build

5、提示 Please enter the gitlab-ci tags for this runner (comma separated):

输入标签, 可随意输入, 我就叫做 build

build

6、提示 Please enter the executor: docker, parallels, shell, ssh, docker+machine, custom, docker-ssh, virtualbox, docker-ssh+machine, kubernetes:

这一步根据自己的需求选择,这里选择 shell, 然后回车

shell

注册完成!~

注册 gitlab-ci-multi-runner

这一步和注册 gitlab-runner 一模一样,输入同样的信息即可

sudo gitlab-ci-multi-runner register

运行 gitlab-runner

查看是否运行成功,就在查看配置信息这里, 绿色圆点表示运行成功

如果上述没有运行,就执行这一步,否则跳过

gitlab-runner run

编写 gitlab-ci.yml

在本机项目根目录新建 .gitlab-ci.yml 然后写入:

stages:
 - build
# task-1 名字随意,代表一个工作
task-1:
 stage: build
 # 执行脚本, 这段脚本会在服务器执行
 script:
 - mkdir -p /home/temp_dir
 tags: 
 # 标签名字,注册runner时所填写的tag
 - build
 only:
 # 只有 master 分支才会执行
 - master

提交到远程仓库, gitlab 会侦测项目根目录下是否有 .gitlab-ci.yml, 如果有就会执行内容里面的任务。

查看本次任务是否执行成功, 如果出现 passed 表明成功执行

不过呢,并非都是那么好运气的,有以下几种情况出现:

  • pending 系统资源可能不足
  • canceled 取消执行 或 根目录没有 .gitlab-ci.yml
  • failed 任务失败, 基本上是 .gitlab-ci.yml 编写有误

上面的任务只是每次提交会在 home 目录下新建 temp_dir

如果想每次提交进行自动打包/重启呢?例如node服务端

只要在 script 字段编写一系列命令即可, 或者执行 shell 脚本

stages:
 - build
# task-1 名字随意,代表一个工作
task-1:
 stage: build
 # 执行脚本, 这段脚本会在服务器执行
 script:
 - cd /home/test
 - git pull
 - npm run build
 - pm2 restart all
 tags: 
 # 标签名字,注册runner时所填写的tag
 - build
 only:
 # 只有 master 分支才会执行
 - master

.gitlab-ci.yml 配置信息非常多,可参考 官方yaml配置

gitlab-runner其他命令

运行 gitlab-runner

gitlab-runner run

查看 gitlab-runner 状态

gitlab-runner status

查看注册列表

gitlab-ci-multi-runner list

删除注册信息

gitlab-ci-multi-runner unregister --name "名称"

最后

gitlab-ci 基本上是可以满足大部分自动化部署场景的,如果想功能强大点的可上 jenkins。

相关文章

linux发行版-openSUSE Agama 15安装程序发布:带来多项可用性升级

openSUSE旗下仍在开发中的全新Linux安装工具Agama,于近日推出v15版本,带来了界面增强、实用新功能等一系列改进,为用户带来更顺畅的系统安装体验!界面优化:细节之处见用心新版本在本地化设...

Ubuntu 24.10发行版登场:Linux 6.11内核、GNOME 47桌面环境

IT之家 10 月 11 日消息,Canonical 昨日发布新闻稿,正式推出代号为 Oracular Oriole 的 Ubuntu 24.10 发行版。新版在内核方面升级到最新 6.11 版本,并...

2023 年 10 个最佳 Linux 桌面发行版

Linux 操作系统在桌面领域的发展已经不再被忽视,越来越多的用户正在考虑切换到 Linux 上。在 2023 年,我们可以期待更多的 Linux 桌面发行版的推出和发展。这里列举了 10 个最佳的...

Garuda Linux:现代化、注重性能与美观的Linux发行版

什么是 Garuda Linux?Garuda Linux 是一个基于 Arch Linux 的现代化、注重性能与美观的桌面操作系统。它面向对性能有较高要求的用户,尤其受到 Linux 爱好者、游戏玩...

2024前端面试真题之—VUE篇(前端面试题vuex)

添加图片注释,不超过 140 字(可选)1.vue的生命周期有哪些及每个生命周期做了什么? beforeCreate是new Vue()之后触发的第一个钩子,在当前阶段data、methods、com...

Vue父子组件参数传递方法(vue父子组件传参方式)

在 Vue 中,父子组件之间的参数传递是常见的需求,主要通过 Props 和 自定义事件 实现。以下是详细说明和代码示例:一、父组件向子组件传递参数(Props)父组件通过 属性 向子组件传递数据,子...