gitlab-cicd部署安装与具体操作

、安装

本例中是用安装包直接在ubuntu下安装的,也可以用docker镜像。

curl -LJO https://gitlab-runner-downloads.s3.amazonaws.com/latest/rpm/gitlab-runner_amd64.rpmrpm -i gitlab-runner_amd64.rpm

安装runner后,需要跟在runner所在服务器安装jdkmaven

安装完成后,目录/home/gitlab-runner/

、注册Runner

1、打开gitlab项目

2、在服务器中输入:gitlab-runner register

3、出现以下提示: Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )

复制第一步中的URL粘贴。

4、Please enter the gitlab-ci token for this runner

复制第一步中的token粘贴。

5、Enter a description for the Runner, you can change this later in GitLab’s UI(添加Runner描述):

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

这个相当于runner的标识,需要认真起名,因为同一个项目可以用不同tag的runner启动。Tag不同使用的runner会变化。

7、Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:

一般都选择shell。

8、注册完成

、注意

如果多个项目用同一个服务器上安装的runner,且多个项目同时提交运行runner的时候,则会按项目提交的顺序运行具体的CICD流程,其余的项目CICD流程会处于停滞状态。

运行gitlab-ci.yml中没写tag的流程,需要如图操作。(不推荐)

四、更改cicd执行权限为root

如果不更改的话,很多命令无法执行

编辑修改 /etc/systemd/system/gitlab-runner.service 文件,将 --user 修改为 root

重启服务

执行如下命令重启 gitlab-runer 服务

systemctl daemon-reloadsystemctl restart gitlab-runner

五、gitlab-ci.yml文件ssh执行不了

如果登录失败,则在最后面加上<< remotessh

ssh root@XXXX << remotessh

六、删除runner

每一个项目都对应有一个runner,删除操作如图所示,点进需要删除runner的项目中。

七、后端项目.gitlab-ci.yml文件编写示例

在后端项目的根目录下新建一个名为.gitlab-ci.yml的文件,如图:

内容:

stages:- build- deploy- sonarqube-check#测试# 定义安装包的存放位置和Tomcat服务器的地址的变量,便于后续部署使用.
variables:CIDEMO_PACKAGE_DIR: '/home/gitlab-runner/packages'SERVER_IP_ADDRESS: 'root@192.168.0.23'SERVER_HOME_DIR: '/home/citc/test'##编译和测试
build:tags:- wgtagstage: buildbefore_script:- echo "开始打包"after_script:- echo "打包结束"script:- mvn clean package -Dmaven.test.skip=true- rm -rf $CIDEMO_PACKAGE_DIR/test.jar- cp -a target/test.jar $CIDEMO_PACKAGE_DIR/test.jarsonarqube-check:tags:- wgtagstage: sonarqube-checkvariables:SONAR_USER_HOME: "${CI_PROJECT_DIR}/.sonar"  # Defines the location of the analysis task cacheGIT_DEPTH: "0"  # Tells git to fetch all the branches of the project, required by the analysis taskcache:key: "${CI_JOB_NAME}"paths:- .sonar/cachescript: - mvn verify sonar:sonar -Dsonar.projectKey=test_sys_backend_hivemqclient_Aassasas1ZtbIXauvX  -Dsonar.login=$SONAR_TOKENallow_failure: trueonly:- master # or the name of your main branch    #打包任务:
deploy:tags:- wgtagstage: deployscript:- echo '准备将最新的jar包复制、保存到192.168.0.23服务器下.'- scp  $CIDEMO_PACKAGE_DIR/test.jar   $SERVER_IP_ADDRESS:$SERVER_HOME_DIR- ssh root@192.168.0.23 << remotessh- cd $SERVER_HOME_DIR#先删除容器,再删除镜像,直接删除运行中的容器的镜像会产生虚悬镜像- docker rm -f test-cicd- docker rmi -f test-cicd:1.0- docker build -t test-cicd:1.0 .- docker run -d --name test-cicd -p 1008:1088test-cicd:1.0

注意:rm -rf node_modules是删除原有的前端依赖包,rm -rf package-lock.json是删除原有的依赖版本文件,不然可能依赖下载会有问题。

九、gitlab-cicd运行结果查看

点击status

点击具体的job则会显示执行的日志。

十、为何配置免密

1、如果gitlab-runner和部署服务的服务器不同,则使用命令切换到另外一台服务器前,必须配置免密登录,不然会导致部署失败。

2、yml文件中stage执行的顺序则是stage定义的顺序(从上到下)

3yml文件中编写命令请先删除容器,再删除镜像,直接删除运行中的容器的镜像会产生虚悬镜像

十一、视频学习(仅供参考)

kk 2022-10-18 20-40-47-gitlab-ci-cd-后部分-整体流程_哔哩哔哩_bilibili

十二、gitlab-ci.yml配置详解

关键字

是否必须

描述

script

必须

定义Runner需要执行的脚本或命令

image

非必须

需要使用的docker镜像,请查阅该文档

services

非必须

定义了所需的docker服务,请查阅该文档

stage

非必须

定义了工作的场景阶段,默认是test

type

非必须

stage的别名,不赞成使用

variables

非必须

在job级别上定义的变量

only

非必须

定义哪些git引用(分支)适用该job

except

非必须

定义了哪些git引用(分支)不适用该job

tags

非必须

定义了哪些runner适用该job(runner在创建时会要求用户输入标签名来代表该runner)

allow_failure

非必须

允许任务失败,但是如果失败,将不会改变提交状态

when

非必须

定义job什么时候能被执行,可以是on_success,on_failure,always或者manual

dependencies

非必须

定义了该job依赖哪一个job,如果设置该项,你可以通过artifacts设置

artifacts

非必须

所谓工件。。就是在依赖项之间传递的东西,类似cache,但原理与cache不同

cache

非必须

定义需要被缓存的文件、文件夹列表

before_script

非必须

覆盖在根元素上定义的before_script(如果写在某一个阶段中,则在此阶段脚本执行前会执行;如果独立于每个阶段,则是在每个阶段运行前都会运行)

after_script

非必须

覆盖在根元素上定义的after_script(如果写在某一个阶段中,则在此阶段脚本执行后会执行;如果独立于每个阶段,则是在每个阶段运行后都会运行)

environment

非必须

定义让job完成部署的环境名称

retry

非必须

定义job失败后的自动重试次数

更多描述:gitlab-ci配置详解(二)_gitlab ci dependencies-CSDN博客

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

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

相关文章

PETR:Position Embedding Transformation forMulti-View 3D Object Detection

全文摘要 本文介绍了一种名为“位置嵌入变换&#xff08;PETR&#xff09;”的新方法&#xff0c;用于多视角三维物体检测。该方法将三维坐标的位置信息编码为图像特征&#xff0c;并产生具有三维位置感知能力的特征。通过对象查询可以感知这些特征并进行端到端的目标检测。在…

使用 postman 传递 binary 类型的图片到后端接口遇到的坑

使用 psotman 传 binary 类型图片报错&#xff1a; -2024-12-04 [http-nio-9090-exec-1] WARN org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver Resolved [org.springframework.http.converter.HttpMessageNotReadableException: Required r…

Pyside6 --Qt设计师--简单了解各个控件的作用之:Layouts,Spaces

目录 一、Layouts1.1 Vertical Layout说明1.1.1 Qt设计师图1.1.2 py代码 1.2 Horizontal Layout说明1.2.1 Qt设计师图1.2.2 py代码 1.3 Grid Layout说明1.3.1 Qt设计师图1.3.2 py代码 1.4 Form Layout说明1.4.1 Qt设计师图1.4.2 py代码 二、Spaces&#xff08;空格&#xff09;…

利用红黑树封装map,和set,实现主要功能

如果不知道红黑树是什么的时候可以去看看这个红黑树 思路 首先我们可以把封装分为两个层面理解&#xff0c;上层代码就是set,和map&#xff0c;底层就是红黑树 就相当于根据红黑树上面套了两个map,set的壳子&#xff0c;像下面这张图一样 对于map和set&#xff0c;map里面存…

自动化测试之等待方式详解

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 在自动化测试中&#xff0c;等待是一个重要的技术&#xff0c;用于处理页面加载、元素定位、元素状态改变等延迟问题。 等待能够确保在条件满足后再进行后续操…

重学SpringBoot3-WebClient配置与使用详解

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞&#x1f44d;收藏⭐评论✍ 重学SpringBoot3-WebClient配置与使用详解 1. 简介2. 环境准备2.1 依赖配置 3. WebClient配置3.1 基础配置3.2 高级配置3.3 retrieve()和exchange()区别 4. 使用示例4.1 …

8.16DEBUG——DOCKER相关,DOCKER启动异常

DOCKER启动异常 问题一 WSL启动出现异常&#xff0c;导致DOCKER都无法运行 首先执行wsl --shutdown&#xff0c;再重启 但是重启时依然出现如上问题 首先按照网上教程&#xff0c;尝试去掉环境变量中冗余错误的变量定义 但是并没有解决&#xff0c;执行如下命令&#xff0c…

如何利用内链策略提升网站的整体权重?

内链是谷歌SEO中常常被低估的部分&#xff0c;实际上&#xff0c;合理的内链策略不仅能帮助提升页面间的关联性&#xff0c;还可以增强网站的整体权重。通过正确的内链布局&#xff0c;用户可以更流畅地浏览你的网站&#xff0c;谷歌爬虫也能更快地抓取到更多页面&#xff0c;有…

2021数学分析【南昌大学】

2021 数学分析 求极限 lim ⁡ n → ∞ 1 n ( n + 1 ) ( n + 2 ) ⋯ ( n + n ) n \lim_{n \to \infty} \frac{1}{n} \sqrt [n]{(n+1)(n+2) \cdots (n+n)} n→∞lim​n1​n(n+1)(n+2)⋯(n+n) ​ lim ⁡ n → ∞ 1 n ( n + 1 ) ( n + 2 ) ⋯ ( n + n ) n = lim ⁡ n → ∞ ( n + …

【金猿CIO展】复旦大学附属中山医院计算机网络中心副主任张俊钦:推进数据安全风险评估,防范化解数据安全风险,筑牢医疗数据安全防线...

‍ 张俊钦 本文由复旦大学附属中山医院计算机网络中心副主任张俊钦撰写并投递参与“数据猿年度金猿策划活动——2024大数据产业年度优秀CIO榜单及奖项”评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 数据要素时代&#xff0c;医疗数据已成为医院运营与决策的重要基石…

Cocos Json

类定义&#xff1a; export class PersonalInformation {public name: string;public age: number;public nationality: string;public gender: string;public height: number;public constructor(name: string, age: number, nationality: string, gender: string, height: n…

Qt开发技巧(二十四)滚动部件的滑动问题,Qt设置时区问题,自定义窗体样式不生效问题,编码格式问题,给按钮左边加个图,最小化后的卡死假象

继续记录一些Qt开发中的技巧操作&#xff1a; 1.滚动部件的滑动问题 再Linux嵌入式设备上&#xff0c;有时候一个页面的子部件太多&#xff0c;一屏放不下是需要做页面滑动&#xff0c;可以使用“QScrollArea”控件&#xff0c;拖来一个“QScrollArea”控件&#xff0c;将子部件…

Prime1_解法一:cms渗透 内核漏洞提权

Prime1_解法一&#xff1a;cms渗透 & 内核漏洞提权 文章目录 Prime1_解法一&#xff1a;cms渗透 & 内核漏洞提权信息收集主机发现nmap扫描tcp扫描tcp详细扫描22&#xff0c;80端口udp扫描漏洞脚本扫描 目录爆破dirsearch Web渗透wfuzz常见的 wfuzz 过滤器&#xff1a; …

保护数字资产:iOS 加固在当前安全环境中的重要性

随着互联网和手机的发展&#xff0c;APP在我们的日常生活中已经变得无处不在&#xff0c;各大平台的应用程序成为了黑客攻击的主要目标。尤其在 2024 年&#xff0c;随着数据泄露和隐私侵犯事件的频发&#xff0c;手机应用的安全问题再次成为公众关注的焦点。近期&#xff0c;多…

Qt Designer Ui设计 功能增加

效果展示 输入密码&#xff0c;密码错误&#xff0c;弹出提示 密码正确&#xff0c;弹出提示并且关闭原窗口 代码&#xff08;只提供重要关键主代码&#xff09;lxh_log.py代码&#xff1a; import sysfrom PySide6.QtWidgets import QApplication, QWidget, QPushButtonfrom …

基于Transformer的编码器-解码器图像描述模型在AMD GPU上的应用

Transformer based Encoder-Decoder models for image-captioning on AMD GPUs — ROCm Blogs 图像描述&#xff0c;即基于生成式人工智能&#xff08;GenAI&#xff09;自动生成简洁的图像文本描述&#xff0c;在现实世界中有着非常重要的应用。例如&#xff0c;图像描述可以为…

AI技术在电商行业中的应用与发展

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

项目-02-数学学院后台项目开发过程中的问题总结

目录 一、后台&#xff08;pc端&#xff0c;vue2&#xff09;1. dialog对话框被黑色蒙层盖住2. 将前端表格导出为word文档3. 在线查看、下载 .docx、.doc、.pdf文档 一、后台&#xff08;pc端&#xff0c;vue2&#xff09; 1. dialog对话框被黑色蒙层盖住 问题&#xff1a; d…

大语言模型技术相关知识-笔记整理

系列文章目录 这个系列攒了很久。主要是前段之间面试大语言模型方面的实习&#xff08;被拷打太多次了&#xff09;&#xff0c;然后每天根据面试官的问题进行扩展和补充的这个笔记。内容来源主要来自视频、个人理解以及官方文档中的记录。方便后面的回顾。 文章目录 系列文章…

【计算机网络】实验11:边界网关协议BGP

实验11 边界网关协议BGP 一、实验目的 本次实验旨在验证边界网关协议&#xff08;BGP&#xff09;的实际作用&#xff0c;并深入学习在路由器上配置和使用BGP协议的方法。通过实验&#xff0c;我将探索BGP在不同自治系统之间的路由选择和信息交换的功能&#xff0c;理解其在互…