华为云云耀云服务器L实例评测|使用华为云云耀云服务器L实例部署 GitLab Runner实现GitLab CI/CD,项目的DevOps

2023-09-19 14:59:15

应用场景

GitLab Runner 介绍

GitLab Runner是一个用于执行GitLab CI/CD任务的工具,它可以在Linux、macOS和Windows上使用,并且可以通过包管理器、二进制文件或Docker镜像进行安装。它与GitLab CI结合使用,能够在最少的手动干预下帮助团队实现CI/CD流程的自动化。

GitLab Runner支持多种Runner类型,包括Shell Runner、Docker Runner和Kubernetes Runner。Shell Runner是最基本的Runner类型,它会在Runner所在机器上打开一个终端并执行作业中定义的命令。Docker Runner则是在Docker容器中执行作业的Runner类型,这意味着作业可以在特定的容器环境中运行,而不需要在主机上安装软件或依赖项。Kubernetes Runner则是在Kubernetes集群中执行作业的Runner类型,它通过创建Pod来运行作业,并自动清理资源。

以下流程解释了GitLab Runner 与GitLab 实例之间的关系
在这里插入图片描述

使用GitLab Runner运行的项目CI/CD流水线
在这里插入图片描述

在这里插入图片描述

以下就给大家演示一下如何在华为云云耀云服务器L实例,部署GitLab Runner服务,以及简单的使用。
该方法是在使用Portainer应用镜像进行的。

资源和成本规划

本次实践使用Portainer镜像。
本实践以如下资源规划为例,你可根据实际需要进行调整。

资源配置说明
云耀云服务器L实例- CPU:2核 - 内存:2GB - 系统盘:40GiBPortainer应用镜像运行的最低配置为2核2GB、系统盘40GiB,建议根据你的需求选择云耀云服务器L实例。
镜像Portainer选择Portainer应用镜像。
安全组入方向规则:- 协议:TCP- 端口:80、443、8093 - 源地址:0.0.0.0/0- 80:允许使用HTTP协议访问网站。- 443:允许使用HTTPS协议访问网站。- 8093:允许访问GitLab Runner 服务
域名domaintest.com- 如果你仅为个人开发或测试使用,可以不添加域名。- 如果你的应用对外开放,请为云服务器添加并解析域名。

操作流程

购买并配置云耀云服务器L实例

  1. 登录云耀云服务器L实例控制台
  2. 单击“购买资源”,在下拉列表中选择“购买 云耀云服务器L实例”或选择“购买 云耀服务组合”。
  3. 对云服务器进行资源配置。本例以选择“购买 云耀云服务器L实例”为例。
参数说明
区域不同区域的云耀云服务器L实例之间内网互不相通。请就近选择靠近你业务的区域,可减少网络时延,提高访问速度。
场景镜像选择Portainer应用镜像。
套餐规格选择套餐规格。最低配置为2核2GB、系统盘40GiB。
实例名称请自定义方便你识别的实例名称,例如Portainer-Example。
附加服务(可选)仅选择“购买 云耀云服务器L实例”时支持。根据需要任意选择数据盘、主机安全、云备份附加服务。
购买时长单次购买最短为1个月,最长为3年。
购买数量设置你购买的云耀云服务器L实例数量。
  1. 单击“立即购买”,进入订单详情页面。根据界面提示,请确认配置信息,阅读并勾选协议。
  2. 单击“去支付”,根据页面提示完成支付。
  3. 单击“返回华为云云耀云服务解决方案控制台”,查看已创建的云耀云服务器L实例。
设置云耀云服务器L实例密码
  1. 单击云耀云服务器L实例卡片。
  2. 在“概览”页“镜像信息”中,单击“管理”登录管理界面,检查应用镜像是否正常启动。

**须知:**在应用镜像启动期间,对云耀云服务器L实例进行重置密码、重启或开关机操作将导致应用镜像管理界面登陆异常。如果管理界面显示正常的引导或登陆界面表示应用镜像已经正常启动。否则请耐心等待1~2分钟,稍后重试。
4. 请参考设置/重置密码,设置云耀云服务器L实例管理员root的密码。

配置安全组

配置安全组的入方向访问规则,确保可以正常访问应用镜像。

  1. 单击云耀云服务器L实例卡片,进入资源页面。
  2. 在左侧列表中单击“云耀云服务器L实例”,单击云服务器名称,进入云服务器详情页面。
  3. 选择“安全组”页签,单击“添加规则”,添加如下规则。本例只添加基本规则,你可根据需要添加更多规则。
优先级策略类型协议端口源地址描述
100允许IPv4TCP:80930.0.0.0/0允许访问GitLab Runner服务。
100允许IPv4TCP:4430.0.0.0/0允许使用HTTPS协议访问应用管理界面。
100允许IPv4TCP:800.0.0.0/0允许访问HTTP协议访问应用管理界面。
  1. **图1 **配置结果 为了方便,我这里将所有的端口都已放开。生产环境请勿这样配置。不太安全。

初始化Portainer

  1. 在服务器“概览”页“镜像信息”中,单击“管理”登录管理界面。初始化Portainer有一定时效性,如果未能快速创建用户,会出现如下图提示。请登录云服务器执行命令sudo docker restart portainer重启Portainer,随后快速创建用户。
  2. 设置Portainer管理员用户名密码,单击“Create user”。如果你有备份的数据,在“Restore Portainer from backup”配置项中,你可以从本地上传备份数据以便快速搭建Portainer环境。
  3. 选择“Home”菜单,单击Local项目就可以开始使用Portainer进行Docker可视化管理 。

至此,你已获得一台完备的Portainer应用云耀云服务器L实例。你可以开始使用Portainer,下面我们继续在该平台上部署GitLab Runner平台

使用Portainer部署GitLab Runner容器

下面我们以部署GitLab Runner容器为例,介绍如何使用Portainer进行Docker可视化管理。更多操作详见官网指导

创建GitLab Runner容器
  1. 选择“Contaners”菜单,单击“Add container”添加GitLab Runner容器。
  2. 按图示配置GitLab Runner容器参数。
  • ①Name:自定义的容器名称
  • ②Image:容器镜像名称,例如设置 GitLab Runner/tb-postgres,系统将自动在DockerHub中拉取GitLab Runner最新镜像。
  • ③单击“publish a new network port”,添加8093端口,确保可以正常访问GitLab Runner服务。
  • ④Restart policy:建议选择“Always”,使得容器无论在什么情况下停止总会自动重新启动。
  1. 在这里插入图片描述
    在这里插入图片描述

相比其他服务,GitLab Runner的服务并没有一个web访问页面,其次我们需要指定目录的挂载。
以上的配置基本相当于以下指令

docker run -d --name gitlab-runner -p 8093:8093 --restart always \
	-v /srv/gitlab-runner/config:/etc/gitlab-runner \
	-v /var/run/docker.sock:/var/run/docker.sock \
	gitlab/gitlab-runner:latest
  1. 单击“Deploy the container”创建GitLab Runner容器。
使用GitLab Runner 服务

在部署好GitLab Runner 后,我们除了在Portainer平台上看到容器的状态,还可以进入服务器使用 docker ps -a 命令查看所有运行的容器。
在确认GitLab Runner 容器正常启动后,下面为我们的git仓库注册Runner。
在GitLab 点击左侧菜单中的Setting,接着点击CI/CD
在这里插入图片描述
然后打开Runner菜单面板,复制注册Runner要使用的token。
在这里插入图片描述
使用ssh 进入服务,执行一些命令,为我们的项目注册一个token。

docker run --rm -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register \
	--non-interactive \
	--executor "docker" \
	--docker-image alpine:latest \
	--url "https://gitlab.com/" \
	--registration-token "YOUR_TOKEN" \
	--description "docker-runner" \
	--tag-list "docker,global" \
	--run-untagged="true" \
	--locked="false" \
	--access-level="not_protected"

注册成功后,我们会在该页面看到一个可以使用的绿色状态的Runner。

接着我们编写CI/CD 流水线文件,该文件默认在项目的根目录,名字为.gitlab-ci.yml

variables:
  USER_NAME: 'fizz'

default:
  tags:
    - docker

job1:
  variables:
    USER_NAME: 'Tom'
  script: echo 'hello' $USER_NAME

提交后,会自动一条流水线。
打开日志可以看到。
在这里插入图片描述
更多的内容可以看我的GitLab CI/CD 专栏
https://blog.csdn.net/github_35631540/category_10804590.html

更多推荐

CSS 字体:Font

文章目录CSS字体serif和sans-serif字体之间的区别CSS字型字体系列字体样式字体大小设置字体大小像素用em来设置字体大小使用百分比和EM组合CSS字体属性CSS字体CSS字体属性可以定义文本的字体系列、大小、加粗、风格(如斜体)和变形(如小型大写字母)。具体来说,CSS字体属性包括以下这些:font-fa

CSS 浮动布局

浮动的设计初衷float:left/right/both;浮动是网页布局最古老的方式。浮动一开始并不是为了网页布局而设计,它的初衷是将一个元素拉到一侧,这样文档流就能够包围它。常见的用途是文本环绕图片:浮动元素会被移出正常文档流,并被拉到容器边缘。清除浮动的原因及方法浮动元素的高度不会追加到父元素上。如果浮动的元素比容

CSS 链接:Link

文章目录CSS链接链接样式常见的链接样式文本修饰背景颜色案例1,添加不同样式的超链接2,高级-创建链接框CSS链接CSS可以用来设置链接的样式,包括未访问的链接(a:link)、已访问的链接(a:visited)、鼠标悬停在链接上时(a:hover)和链接被点击时(a:active)这四种状态。以下是一个例子:/*未被

全球汽车安全气囊芯片总体规模分析

安全气囊系统是一种被动安全性的保护系统,它与座椅安全带配合使用,可以为乘员提供有效的防撞保护。在汽车相撞时,汽车安全气囊可使头部受伤率减少25%,面部受伤率减少80%左右。汽车安全气囊芯片是整个系统的控制核心,并将所有外围系统的功能集于一身:数字碰撞传感器接口、展开气囊的点火回路驱动、大量的安全和诊断机制以供持续监测系

使用VSCode SSH实现公网远程连接本地服务器开发的详细教程

文章目录前言1、安装OpenSSH2、vscode配置ssh3.局域网测试连接远程服务器4.公网远程连接4.1ubuntu安装cpolar内网穿透4.2创建隧道映射4.3测试公网远程连接5.配置固定TCP端口地址5.1保留一个固定TCP端口地址5.2配置固定TCP端口地址5.3测试固定公网地址远程前言远程连接服务器工具

汽车OTA

汽车OTA(Over-The-Air)技术是指通过无线网络对汽车进行软件升级、数据传输和远程诊断等功能的技术。随着汽车行业的数字化和智能化发展,OTA技术在汽车领域的应用越来越广泛,对于提高汽车性能、降低维修成本和提升用户体验具有重要意义。一、汽车OTA技术的主要功能软件升级:通过OTA技术,汽车制造商可以为汽车提供实

Go 异常处理

代码在执行的过程中可能因为一些逻辑上的问题而出现错误functest1(a,bint)int{result:=a/breturnresult}funcmain(){resut:=test1(10,0)fmt.Println(resut)}panic:runtimeerror:integerdividebyzerogor

汽车红外夜视系统行业发展总体概况

汽车红外夜视系统是一种技术,旨在帮助驾驶员在夜间或低光条件下提供更好的视觉能力。它利用红外光谱的特性来检测和显示在正常光线下难以察觉的热能辐射。这使驾驶员能够在夜间或恶劣天气条件下更好地识别和辨别道路上的物体、行人、动物或其他车辆。汽车红外夜视系统通常包括以下主要组件:红外摄像机:这是系统的核心部件,它使用红外传感器来

简单聊聊G1垃圾回收算法整个流程 --- 理论篇 -- 下

简单聊聊G1垃圾回收算法整个流程---理论篇--下软实时性预测转移时间预测可信度GC暂停处理的调度并发标记中的暂停处理分代G1GC模式不同点新生代区域分代对象转移具体转移流程分代选择回收集合设置最大新生代区域数GC的切换GC执行的时机总结上一篇文章我们简单看了一下G1整个垃圾回收流程,但是关于G1如何计算区域回收价值和

ActiveMQ面试题(一)

文章目录前言一、什么是ActiveMQ二、ActiveMQ服务器宕机怎么办?三、丢消息怎么办四、持节化消息非常慢五、消息的不均匀消费总结前言什么是ActiveMQActiveMQ服务器宕机怎么办?丢消息怎么办持节化消息非常慢消息的不均匀消费一、什么是ActiveMQactiveMQ是一种开源的,实现了JMS1.1规范的

NPM 常用命令(八)

1、npminstall1.1命令使用npminstall[<package-spec>...]别名:add,i,in,ins,inst,insta,instal,isnt,isnta,isntal,isntall此命令安装一个包和它所依赖的任何包。如果包有一个package-lock文件,或者一个npm-shrink

热文推荐