DevOps系列文章之 GitLabCI汇总

news2024/11/24 3:37:19

GitlabCI环境搭建

前提 先安装 docker

Docker容器化安装

docker pull gitlab/gitlab-ee:12.4.0-ee.0

在这里插入图片描述

创建挂载目录

mkdir -p /srv/gitlab   
mkdir -p /srv/gitlab/config # 映射到 Glitlab 容器中的配置目录
mkdir -p /srv/gitlab/logs # 映射到 Glitlab 容器中的日志目录
mkdir -p /srv/gitlab/data # 映射到 Glitlab 容器中的数据目录

在这里插入图片描述

启动容器

--publish 8929:8929 #/srv/gitlab/config/gitlab.rb里面添加端口这边也要改一致,也就是下面的配置

external_url ‘http://192.168.52.129:8929’ 不然默认是80端口

docker run --name gitlab2 -d \
--hostname=192.168.52.129 \
--publish 8929:8929 \
--publish 2224:22 \
--publish 2443:443 \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
--volume /etc/localtime:/etc/localtime:ro \
--env GITLAB_OMNIBUS_CONFIG="external_url 'http://192.168.52.129:8929'" \
--env GITLAB_OMNIBUS_CONFIG="gitlab_rails['gitlab_shell_ssh_port'] = 2224" \
--privileged=true \
--restart=always gitlab/gitlab-ee:12.4.0-ee.0
docker run --name gitlab2 -d \
--hostname=192.168.52.129 \
--publish 8929:8929 \
--publish 2224:22 \
--publish 2443:443 \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
--volume /etc/localtime:/etc/localtime:ro \
--privileged=true \
--restart=always gitlab/gitlab-ee:12.4.0-ee.0

在这里插入图片描述

查看启动日志 docker logs gitlab2

在这里插入图片描述

修改配置信息

vi /srv/gitlab/config/gitlab.rb

在这里插入图片描述

修改后重启容器

docker restart gitlab2

2749240)

访问Gitlab登录页面

在这里插入图片描述

使用模板创建一个项目

在这里插入图片描述

在这里插入图片描述

Docker-Compose安装Gitlab

前提:安装docker-compose

创建 docker-compose.yml

version: '3'
services:
  web:
    image: 'gitlab/gitlab-ee:12.4.0-ee.0'
    restart: always
    hostname: '192.168.52.129' # 此处填写所在服务器 ip
    environment:
      # 此处 ip 须与上面 hostname 一致,端口号自定义
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://192.168.52.129:8929' 
        gitlab_rails['gitlab_shell_ssh_port'] = 2224
    ports:
      - '8929:8929' # 此处端口号须与 external_url 中保持一致
      - '2224:22' # 同理
    volumes:
      - '/opt/gitlab/config:/etc/gitlab'
      - '/opt/gitlab/logs:/var/log/gitlab'
      - '/opt/gitlab/data:/var/opt/gitlab'

在这里插入图片描述

启动安装

cd /home/dukang

docker-compose -f docker-compose.yml up

在这里插入图片描述

在这里插入图片描述

访问Gitlab登录页面

在这里插入图片描述

在这里插入图片描述

安装Gitlab Runner

Gitlab实现CICD的方式有很多,比如通过Jenkins,通过Gitlab Runner等,今天主要介绍后者。Gitlab在安装的时候,就默认包含了Gitlab CI的能力,但是该能力只是用于协调作业,并不能真的去执行作业,因此需要搭配Gitlab Runner来作为执行器实现具体的CICD工作。Gitlab Runner可以被安装在任意支持的系统上,比如Linux、Windows、Mac,甚至也可以运行在Docker、Kubernetes集群上。

不同操作系统对应用不同版本Runner,这里演示Windows下的Runner使用

其他版本Runer下载

# Linux x86-64
 sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64

 # Linux x86
 sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-386

 # Linux arm
 sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-arm

https://docs.gitlab.com/runner/install/windows.html

在这里插入图片描述

首先在官网下载对应gitlab一致版本的windows安装包,放到某个文件夹下面,比如D:\gitlab-runner\gitlab-runner-windows-amd64.exe,然后依次执行如下注册和启动命令:

PS C:\Windows\system32> cd D:\gitlab-runner
# 执行注册命令
PS D:\gitlab-runner> .\gitlab-runner-windows-amd64.exe register
Runtime platform                                    arch=amd64 os=windows pid=15984 revision=bbcb5aba version=12.4.0
# 填写gitlab的地址,确保容器内能够顺利访问到该地址
Enter the GitLab instance URL (for example, https://gitlab.com/):
http://192.168.52.129/
# 填写需要注册的runner token,此处选择shared runner token
Enter the registration token:
BHRagrsztQAxdMPPhxGm
Enter a description for the runner:
[GLIC-IT-ZX02]: gitlab-runner-02
Enter tags for the runner (comma-separated):

Enter optional maintenance note for the runner:

Registering runner... succeeded                     runner=BHRagrsz
Enter an executor: custom, docker, docker-windows, docker-ssh, parallels, shell, ssh, docker+machine, kubernetes, virtualbox, docker-ssh+machine:
docker
Enter the default Docker image (for example, ruby:2.7):
docker:latest
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!

Configuration (with the authentication token) was saved in "D:\\gitlab-runner\\config.toml"
# 执行安装命令(作为windows系统服务)
PS D:\gitlab-runner> .\gitlab-runner-windows-amd64.exe install
Runtime platform                                    arch=amd64 os=windows pid=12800 revision=bbcb5aba version=12.4.0
# 执行启动命令
PS D:\gitlab-runner> .\gitlab-runner-windows-amd64.exe start
Runtime platform                                    arch=amd64 os=windows pid=9932 revision=bbcb5aba version=12.4.0

我这里下载 32位,在64位系统也可以运行的,先启动runner注册

在这里插入图片描述

在注册之前我们需要确认下必须的配置

在这里插入图片描述

ssh-keygen -t rsa -b 4096 -C “your_email@example.com”

其中,-t参数指定了要生成的密钥类型为RSA算法;-b参数设置了密钥长度为4096位;-C参数后面跟着的是注释信息,可根据需求进行修改。

运行该命令后,会提示输入保存密钥文件的路径和名称,默认情况下会将公钥保存到~/.ssh/id_rsa.pub文件中,私钥则保存到同目录下的id_rsa文件中。如果不想更改默认路径和名称,直接按Enter键即可。然后还会要求输入一个安全性高的密码,这样每次连接时都需要输入该密码才能使用相应的私钥。(直接回车忽悠不填密码)

完成上述操作后,就可以得到所需的SSH公钥和私钥了。

在用户目录下可以找到生成的文件

在这里插入图片描述

在这里插入图片描述

将 id_rsa.pub 中内容 复制到gitlab 如下位置

在这里插入图片描述

点击添加密钥

在这里插入图片描述

Gitlab Runner 拉取代码需要保证runner所在机器安装Git(官网下载一个windows安装包安装即可)

在这里插入图片描述

接下来回到注册runner操作

在这里插入图片描述

在这里插入图片描述

这里有三类Runner。我们这里演示使用specific Runner

Gitlab Runner分为三种类型,在注册Runner过程中使用不同类型的token就能区分不同的类型。

Shared Runners,共享Runner,可以被仓库里面的任意项目使用;token获取位置为全局管理中心-Runner-注册令牌;
Group Runners,组Runner,仅能被某个组中的任意项目使用;token获取位置为项目群组-CICD-Runner-注册令牌;
Specific Runners,特定Runner,仅能被指定的项目使用;token获取位置为项目-设置-CICD-Runner-注册令牌;

在这里插入图片描述

接下来会提示你输入一系列配置内容

注意,在要求输入tag时,想好tag的名字,这个就相当于你的runner的id

## 输入url
a、Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )
 
## 输入token
b、Please enter the gitlab-ci token for this runner
 
## 写个描述
c、Please enter the gitlab-ci description for this runner
 
## 这个tag很重要,好好想个名字并记住,随后在ci配置中需要对应上。
d、Please enter the gitlab-ci tags for this runner (comma separated)
 
## ci没有配置tags时是否执行这个runner?建议采用默认值。            
e、Whether to run untagged builds [true/false]
 
## 是否只对当前工程有效?理论上讲只有“Shared runners”才有效。选true。            
f、Whether to lock Runner to current project [true/false]
 
## 选择一个执行器。我们接来下的方案是基于shell的,输入shell。    
g、Please enter the executor: virtualbox, docker+machine, kubernetes, parallels, docker-ssh, shell, ssh, docker-ssh+machine, docker:

在这里插入图片描述

在这里插入图片描述

Gitlab Runner使用

我们首先准备一个项目,这个项目内容很简单,只是作为runner演示使用,总共两个文件:

  • index.html,用来表示项目的主页;
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CICD测试</title>
</head>
<body>
<h1>Gitlab CICD 测试!!!</h1>
</body>
</html>

在这里插入图片描述

Gitlab Runner的运行需要的.gitlab-ci.yml,定义CICD流程的文件;

build-job:
  stage: build
  tags:
   - demo
  script:
    - echo "Hello, $GITLAB_USER_LOGIN!"

test-job1:
  stage: test
  tags:
   - demo
  script:
    - echo "This job tests something"

test-job2:
  stage: test
  tags:
   - demo
  script:
    - echo "This job tests something, but takes more time than test-job1."
    - echo "After the echo commands complete, it runs the sleep command for 20 seconds"
    - echo "which simulates a test that runs 20 seconds longer than test-job1"
    - sleep 20

deploy-prod:
  stage: deploy
  tags:
   - demo
  script:
    - echo "This job deploys something from the $CI_COMMIT_BRANCH branch."

大致的意思是,build阶段启动一个作业,输出一段文本;test阶段并行启动两个作业,也是分别输出一段文本;deploy阶段启动一个作业,输出一段文本;这三个阶段分别模拟了构建、测试、部署流程,具体的语法关键词等内容不属于本文范畴,可以参考官网。

以上项目内容提交到gitlab后,显示如下,仅有master分支:

在这里插入图片描述

此时,任意的提交行为、合并行为都会触发流水线的执行,但是也可以手动执行,我们此时选择项目中的CICD,流水线,并点击运行流水线。

在这里插入图片描述

如下是运行中的流水线状态,可以查看各个阶段的任务,点击任务图标还可以查看具体的任务执行明细。

在这里插入图片描述

点击执行的圆圈就可以查看执行日志

在这里插入图片描述

如下是运行四次流水线,runner的任务执行数量统计:

在这里插入图片描述

在这里插入图片描述

至此,我们完成了runner的搭建和注册,并运行了示例项目中的流水线。

提示:配置项目流水线需要用户拥有项目的Maintainer权限

Gitlab-runner的配置

GitLab-CI会为这个Runner生成一个唯一的token,以后Runner就通过这个token与GitLab-CI进行通信。

那么,问题来了。注册好了的Runner的信息存放在哪儿了呢?

原来,Runner的信息是存放在一个配置文件里面的,配置文件的格式一般是.toml。这个配置文件的存放位置有以下几种情况:

  • 在类Unix操作系统下(0.5.0之后版本)
    • 如果是以root用户身份运行gitlab-runner register,那么配置文件默认是/etc/gitlab-runner/config.toml
    • 如果是以非root用户身份运行gitlab-runner register,那么配置文件默认是~/.gitlab-runner/config.toml
  • 在其他操作系统下以及0.5.0之前版本

配置文件默认在当前工作目录下./config.toml

在这里插入图片描述

Linux环境下Runner

下载runner,根据自己对应服务器的型号自行选择下载:

https://docs.gitlab.com/runner/install/linux-manually.html

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

# Linux x86-64
 sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64

 # Linux x86
 sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-386

 # Linux arm
 sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-arm

我选择对应Gitlab版本12.4.0的https://gitlab-runner-downloads.s3.amazonaws.com/v12.4.0/binaries/gitlab-runner-linux-amd64

下载完之后,需要给gitlab-runner执行权限,

sudo chmod +x /usr/local/bin/gitlab-runner

之后创建一个gitlab-runner用户,使用CI/CD时,都是在这个用户下进行的。

sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash

创建好了用户之后,接下来安装gitlab-runner

sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner

在这里插入图片描述

安装好以后,如上图所示

安装成功以后,启动gitlab-runner

sudo gitlab-runner start

如何注册使用gitlab-runner:

首先找到自己的gitlab项目下设置,CI/CD,Runner

img

可以看到如下:

在这里插入图片描述

URL,和注册令牌一会在注册runner的时候需要用到,

在自己的runner服务器上,输入如下命令,开始注册runner:

gitlab-runner register

填写刚刚上面看到的URL

回车后,输入URL下面的gitlab-ci token

输入完token后,回车

在这里插入图片描述

填写runner描述,这里自己填写

之后填写runner的tags,用于在之后CI/CD操作时标识使用哪个runner来进行流水线

在这里插入图片描述

之后选择需要以哪种方式运行runner,这里我选择用shell方式运行runner,大家可以自行根据自己需要选择

在这里插入图片描述

到此,runner就注册完毕了。可以到gitlab上看下,刚刚注册的runner是否存在

在这里插入图片描述

可以看到,这里就是我们刚刚注册的runner。

编写gitlab-ci.yaml验证

前提:安装Git、配置SSH密钥 (和上文windows操作类似)

build-job:
  stage: build
  tags:
   - demo
  script:
    - echo "Hello, $GITLAB_USER_LOGIN!"

test-job1:
  stage: test
  tags:
   - demo
  script:
    - echo "This job tests something"

test-job2:
  stage: test
  tags:
   - demo
  script:
    - echo "This job tests something, but takes more time than test-job1."
    - echo "After the echo commands complete, it runs the sleep command for 20 seconds"
    - echo "which simulates a test that runs 20 seconds longer than test-job1"
    - sleep 20

deploy-prod:
  stage: deploy
  tags:
   - demo
  script:
    - echo "This job deploys something from the $CI_COMMIT_BRANCH branch."

运行流水线

在这里插入图片描述

如果没有安装git 会报如下错误

在这里插入图片描述

安装Git后即可

在这里插入图片描述

在这里插入图片描述

配置文件位置(注册信息)

在这里插入图片描述

关于Gitlab-ci的yaml更多配置,可以参考官方参考文档:https://docs.gitlab.com/ee/ci/yaml/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1415780.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

换个思维方式快速上手UML和 plantUML——类图

和大多数朋友一样&#xff0c;Jeffrey 在一开始的时候也十分的厌烦软件工程的一系列东西&#xff0c;对工程化工具十分厌恶&#xff0c;觉得它繁琐&#xff0c;需要记忆很多没有意思的东西。 但是之所以&#xff0c;肯定有是因为。对工程化工具的不理解和不认可主要是基于两个逻…

最新国内GPT4.0使用教程,AI绘画-Midjourney绘画V6 ALPHA绘画模型,GPT语音对话使用,DALL-E3文生图+思维导图一站式解决方案

一、前言 ChatGPT3.5、GPT4.0、GPT语音对话、Midjourney绘画&#xff0c;文档对话总结DALL-E3文生图&#xff0c;相信对大家应该不感到陌生吧&#xff1f;简单来说&#xff0c;GPT-4技术比之前的GPT-3.5相对来说更加智能&#xff0c;会根据用户的要求生成多种内容甚至也可以和…

围棋的气 - 华为OD统一考试

OD统一考试&#xff08;C卷&#xff09; 分值&#xff1a; 100分 题解&#xff1a; Java / Python / C 题目描述 围棋棋盘由纵横各19条线垂直相交组成&#xff0c;棋盘上一共19x19361个交点&#xff0c;对弈双方一方执白棋&#xff0c;一方执黑棋&#xff0c;落子时只能将棋子…

智慧文旅:未来旅游业的数字化转型

随着科技的快速发展&#xff0c;数字化转型已经成为各行各业的必然趋势。旅游业作为全球经济的重要组成部分&#xff0c;也正经历着前所未有的变革。智慧文旅作为数字化转型的重要领域&#xff0c;正逐渐改变着旅游业的传统模式&#xff0c;为游客带来更加便捷、个性化的旅游体…

锐龙笔记本Windows 11休眠无法唤醒问题的解决(6800h, 7840H/Hs)

锐龙笔记本运行Windows 11时经常会遇到休眠后无法唤醒的问题&#xff0c;表现为休眠后 按键盘或鼠标无反应&#xff0c;只能长按电源开关关机后再开机。网上有很多说法&#xff0c;比如显卡问题或其它问题。但是本质 上这个是电源管理软硬件不兼容导致的&#xff0c;解决办法如…

2024 年 eBPF 和网络趋势预测

本文地址&#xff1a;2024 年 eBPF 和网络趋势预测 | 深入浅出 eBPF 1. eBPF 1.1 eBPF 将继续呈指数增长1.2 eBPF 应用市场1.3 eBPF 在手机中得到更广泛的应用1.4 eBPF 滥用带来的风险2. 可观测 2.1 最受欢迎的可观测性2.2 降低可观测性开销2.3 上下文感知的 Kubernetes 工作负…

python222网站实战(SpringBoot+SpringSecurity+MybatisPlus+thymeleaf+layui)-自定义帖子管理实现

锋哥原创的SpringbootLayui python222网站实战&#xff1a; python222网站实战课程视频教程&#xff08;SpringBootPython爬虫实战&#xff09; ( 火爆连载更新中... )_哔哩哔哩_bilibilipython222网站实战课程视频教程&#xff08;SpringBootPython爬虫实战&#xff09; ( 火…

力扣516. 最长回文子序列

动态规划 思路&#xff1a; 字符串最长回文子序列问题可以转换为原字符串 s 和逆串 s 的最长公共子序列长度问题&#xff0c;具体推断过程可以参考 力扣1312. 让字符串成为回文串的最少插入次数问题变成了求两个字符串最长公共子序列长度问题&#xff0c;具体思路可以参考 力扣…

每次请求sessionid变化【SpringBoot+Vue】

引言&#xff1a;花了一晚上的时间&#xff0c;终于把问题解决了&#xff0c;一开始后端做完后,用apifox所有接口测试都是可以的,但当前端跑起来后发现接收不到后端的数据。 当我写完前后端&#xff0c;主页面和获取当前页面信息接口后&#xff0c;配置了cros注解 CrossOrigin…

数据湖技术之发展现状篇

一. 大数据处理架构&#xff1a; 大数据处理架构的发展过程具体可以分为三个主要阶段&#xff1a;批处理架构、混合处理架构&#xff08;Lambda、Kappa架构&#xff09;、湖仓一体。首先是随着Hadoop生态相关技术的大量应用&#xff0c;批处理架构应运而生&#xff0c;借助离线…

QEMU源码全解析41 —— Machine(11)

接前一篇文章&#xff1a;QEMU源码全解析40 —— Machine&#xff08;10&#xff09; 本文内容参考&#xff1a; 《趣谈Linux操作系统》 —— 刘超&#xff0c;极客时间 《QEMU/KVM》源码解析与应用 —— 李强&#xff0c;机械工业出版社 特此致谢&#xff01; 时间过去了几…

MCU启动文件小解一下

GD32启动文件分析 启动文件的一些指令.s启动文件分析栈空间分配堆空间管理中断向量表定义堆空间定义Reset_Handler复位程序HardFault_Handler_main文件分析用户堆栈初始化 GD32启动文件主要做了以下工作&#xff1a; 初始化SP_initial_sp , PCReset_Handler指针&#xff0c;设置…

眼底增强型疾病感知蒸馏模型 FDDM:无需配对,fundus 指导 OCT 分类

眼底增强型疾病感知蒸馏模型 FDDM&#xff1a;fundus 指导 OCT 分类 核心思想设计思路训练和推理 效果总结子问题: 疾病特定特征的提取与蒸馏子问题: 类间关系的理解与建模 核心思想 论文&#xff1a;https://arxiv.org/pdf/2308.00291.pdf 代码&#xff1a;https://github.c…

C#调用SqlSugar操作达梦数据库报错“无效的表或视图名”

安装达梦数据库后&#xff0c;使用SqlSugar连接测试数据库并基于DBFirst方式创建数据库表对应的类&#xff0c;主要代码如下&#xff1a; SqlSugarClient db new SqlSugarClient(new ConnectionConfig(){DbType DbType.Dm,ConnectionString "Serverlocalhost; User Id…

Redis3-秒杀活动

秒杀 准备工作 我是参照下面这位大佬的i骄傲成下载的 csdn友情链接 Jmeter模拟多线程的压力测试工具 秒杀代码&#xff1a; package com.aaa.controller;import io.netty.util.internal.StringUtil; import org.apache.commons.lang.StringUtils; import org.springfram…

YoloV8改进策略:BackBone改进|DCNv4最新实践|高效涨点|多种改进教程|完整论文翻译

摘要 涨点效果:在我自己的数据集上,mAP50 由0.986涨到了0.993,mAP50-95由0.737涨到0.77,涨点明显! DCNv4是可变形卷积的第四版,速度和v3相比有了大幅度的提升,但是环境搭建有一定的难度,对新手不太友好。如果在使用过程遇到编译的问题,请严格按照我写的环境配置。 …

【GitHub项目推荐--不错的 TypeScript 学习项目】【转载】

在线白板工具 Excalidraw 标星 33k&#xff0c;是一款非常轻量的在线白板工具&#xff0c;可以直接在浏览器打开&#xff0c;轻松绘制具有手绘风格的图形。 如下图所示&#xff0c;Excalidraw 支持最常用的图形元素&#xff1a;方框、圆、菱形、线&#xff0c;可以方便的使用…

51-17 视频理解串讲— MViT 论文精读

继TimeSformer模型之后&#xff0c;咱们再介绍两篇来自Facebook AI的论文&#xff0c;即Multiscale Vision Transformers以及改进版MViTv2: Improved Multiscale Vision Transformers for Classification and Detection。 由于本司大模型组最近组织阅读的论文较多&#xff0c;…

文献翻译 || Ubuntu安装zotero文献管理软件,提高文献阅读效率

文章目录 前言安装方式选择apt方式snap方式 zotero的简单使用文献导入中文翻译插件下载并安装使用体验 前言 虽然在win下有很多文献管理软件和好用的文献翻译软件&#xff0c;但是如果平常有使用Ubuntu进行开发的需求&#xff0c;实际上很不愿意为了好好看文献专门切到Windows…

HarmonyOS鸿蒙学习基础篇 - 通用事件

一、引言 HarmonyOS鸿蒙是华为推出的分布式操作系统&#xff0c;旨在为各种智能设备提供统一的操作系统。鸿蒙系统的一大特色是其强大的分布式能力&#xff0c;而通用事件则是实现这一能力的关键技术之一&#xff0c;本篇博客将介绍HarmonyOS鸿蒙中的通用事件。 二、 点击事件…