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

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

zonemu3个月前 (07-08)技术文章57

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。

相关文章

Vue3 如何实现父子组件传值?(vue父子组件传值props)

在Vue 3中,要实现父子组件传值效果主要通过props和emit两种机制来实现,下面我们就来详细介绍一下这两种机制。父组件向子组件传值propsprops是Vue组件的一种机制,主要的作用就是实现从...

面试官:聊聊你知道的Vue与React的区别

最近面到很多大公司的时候,小编都会碰到一个很尴尬的问题,很多大公司的技术栈都是React,但是小编学的是Vue,其实从本质上来说两者都是比较优秀的前端框架,所以有些面试官会问到Vue和React的区别...

「2022」打算跳槽涨薪,必问面试题及答案——VUE篇

1、为什么选择VUE,解决了什么问题?vue.js 正如官网所说的,是一套构建用户界面的渐进式框架。与其它重量级框架不同的是,vue 被设计为可以自底向上逐层应用。vue 的核心库只关注视图层,不仅易...

同事git push到主分支上了,技术总监怒了

事情是这样的,同事前几天提交使用git提交代码的时候不小心提交到主分支上了,关键还提交成功了,这可是他自己开发的模块,还没测试的呢。技术总监也知道了,这下他慌乱了。最后还是技术总监给他兜底了。为了防止...

(一)熟练HTML5+CSS3,每天复习一遍

前言学习网页的概念和分类,了解静态网页和动态网页的不同;了解网页浏览器的工作原理。了解HTML,XHTML,HTML5的概念,制作简单的HTML页面的开发。什么是网页可以在internet上通过网页浏...

15款测试html5响应式的在线工具(测试类h5)

手机、平板灯手持设备的增多,网站要顺应变化,就必须要做响应式开发,响应式网站最大的特点在于可以在不同设备下呈现不同的布局,是基于html5+css3技术,目前越来越多的网站开始采用了响应式设计,而下面...