gitlab实现CI/CD自动化部署

gitlab实现CI/CD自动化部署

  • 项目根目录中新增gitlab-ci.yml
  • 在gitlab上查看gitlab-runner配置方法
  • 配置服务器环境
  • 推送代码,触发runner,实现自动构建和部署
  • 参考

gitlab支持通过配置CI/CD实现自动化部署我们的代码项目,主要核心就是配置gitlab-ci.yml文件以及在目标服务器上配置gitlab-runner

项目根目录中新增gitlab-ci.yml

这是我配置前端项目自动化部署的,整体大差不差,大家可自行更加需要,修改对应的script

default:before_script:- echo "start deploy"- echo $CI_COMMIT_REF_NAME# 阶段
stages:- install- buildDev- buildTest- buildProd- deployDev- deployTest- deployProdcache:paths:- node_modules/# 安装依赖
install:stage: install# 此处的tags必须填入之前注册时自定的tagtags:- install# 规定仅在dev、test、prod分支提交时才触发此阶段only:- dev- test- prod# # 规定仅在package.json提交时才触发此阶段# changes:#   - package.json# 执行脚本script:- echo "start install"- rm -rf ./node_modules- npm install# 打包dev分支
buildDev:stage: buildDevtags:- buildDev# 规定仅在dev分支提交时才触发此阶段only:- devscript:- echo "start dev build"- rm -rf ./dist- npm run build:dev# 将此阶段产物传递至下一阶段artifacts:paths:- dist/# 打包test分支
buildTest:stage: buildTesttags:- buildTest# 规定仅在test分支提交时才触发此阶段only:- testscript:- echo "start test build"- rm -rf ./dist- npm run build:test# 将此阶段产物传递至下一阶段artifacts:paths:- dist/# 打包prod分支
buildProd:stage: buildProdtags:- buildProd# 规定仅在prod分支提交时才触发此阶段only:- prodscript:- echo "start prod build"- rm -rf ./dist- npm run build:prod# 将此阶段产物传递至下一阶段artifacts:paths:- dist/# 部署dev项目
deployDev:stage: deployDevtags:- deployDevonly:# 规定仅在dev分支提交时才触发此阶段- devscript:- echo "start deploy Dev"# 删除远端服务器的dist目录下的所有文件- ssh -p 33953 root@17.215.219.70 'rm -rf /home/web/appointment_h5/dist'# 把当前dist目录下的所有文件传输到远端服务器的dist目录- scp -r -P 33953 ./dist root@17.215.219.70:/home/web/appointment_h5- echo "deploy Dev successfully"# 部署test项目
deployTest:stage: deployTesttags:- deployTestonly:# 规定仅在test分支提交时才触发此阶段- testscript:- echo "start deploy Test"# 删除远端服务器的dist目录下的所有文件- ssh -p 33953 root@17.215.219.70 'rm -rf /home/web/appointment_h5/dist'# 把当前dist目录下的所有文件传输到远端服务器的dist目录- scp -r -P 33953 ./dist root@17.215.219.70:/home/web/appointment_h5- echo "deploy Test successfully"# 部署prod项目
deployProd:stage: deployProdtags:- deployProdonly:# 规定仅在prod分支提交时才触发此阶段- prodscript:- echo "start deploy Prod"- pwd# 删除远端服务器的dist目录下的所有文件- ssh -p 33953 root@17.215.219.70 'rm -rf /home/web/appointment_h5/dist'# 把当前dist目录下的所有文件传输到远端服务器的dist目录- scp -r -P 33953 ./dist root@17.215.219.70:/home/web/appointment_h5- echo "deploy Prod successfully"

在gitlab上查看gitlab-runner配置方法

setting~CI/CD
在这里插入图片描述
找到runner
在这里插入图片描述
点击配置指南
在这里插入图片描述
选择要配置服务器对应的系统,并根据提示在服务器上执行对应代码
在这里插入图片描述
以linux为例

  1. 在目标服务器执行下列命令下载gitlab-runner
sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
  1. 分配权限执行runner
sudo chmod +x /usr/local/bin/gitlab-runner
  1. 创建一个gitlab-runner用户
sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
  1. 安装runner
sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
  1. 启动runner
sudo gitlab-runner start
  1. 注册runner
sudo gitlab-runner register --url 你项目的仓库地址 --registration-token runner的token
例子:
sudo gitlab-runner register --url https://www.gitlab_abc.com/ --registration-token GR1348941mpAA965843DD8vpX

备注:这一步需要你输入项目描述、tags、以及部署的执行方式,大家根据情况自己填写,我选择的tags是buildDev, buildProd, buildTest, deployDev, deployProd, deployTest, install,执行方式是shell

  1. 执行完成之后,在仓库的CI/CD上就会出现一个runner

在这里插入图片描述

配置服务器环境

  1. nginx配置
  2. 创建打包后的代码存放地址
  3. 一些项目的启动环境,比如node之类的

推送代码,触发runner,实现自动构建和部署

向gitlab-ci.yml指定的分支推送代码,gitlab就会监听仓库指定分支的变化,从而触发runner,执行gitlab-ci.yml上的script脚本,这样就会把项目自动部署到服务器上
在这里插入图片描述
在这里插入图片描述
点击每一个节点进程,可以看到具体的执行日志输出
在这里插入图片描述
服务器上已经可以看到打包好并传输到指定目录的代码了
在这里插入图片描述

参考

https://www.cnblogs.com/05-hust/p/18081574
https://www.jianshu.com/p/8376ef8bafa6
https://blog.csdn.net/biubiubiuPlus/article/details/136644029
https://blog.csdn.net/weixin_39246554/article/details/130749673
https://www.jianshu.com/p/8376ef8bafa6
https://blog.csdn.net/yuan_jiaoyoung/article/details/131789769
https://blog.csdn.net/Mrxiao_bo/article/details/138863594
https://juejin.cn/post/6967570299336261646
https://www.jianshu.com/p/fd00a9cc87ef
https://blog.csdn.net/qq_30273575/article/details/127847751
https://www.jianshu.com/p/8d0a75dbd801
https://www.cnblogs.com/imgss/p/13746878.html
https://juejin.cn/post/6967570299336261646
https://blog.csdn.net/qq_40699305/article/details/82753506
https://juejin.cn/post/7037022688493338661

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【mamba学习】(一)SSM原理与说明

mamba输入输出实现与transformer几乎完全一样的功能,但速度和内存占用具有很大优势。对比transformer,transformer存在记忆有限的情况,如果输入或者预测的序列过长可能导致爆炸(非线性),而mamba不存在这种情…

【精通SDL之----SDL_RenderReadPixels截屏】

SDL_RenderReadPixels截屏 前言一、SDL_RenderReadPixels简介二、问题现象三、规避方案1. 离屏纹理2. ding! *灵光一现* 前言 最近使用SDL2在鸿蒙系统(Harmoney OS)上截取视频播放过程中的数据,发现捕获的数据为空,然在windows上却可以正常捕获&#xff…

Linux-软件管理

文章目录 19. 软件管理19.1 linux软件介绍19.2 RPM包概述19.3 RPM软件包安装19.4 RPM软件包依赖问题19.5 DPKG软件包19.6 linux 软件包前端工具19.7 windows 前端工具winget19.8 linux 前端工具yum概述19.9 设置yum远程仓库19.10 yum 软件包管理19.11 epel软件仓库19.12 yum本地…

海康相机二次开发学习笔记1-环境配置

因为最近可以用一段时间海康加密狗,Visionpro二次开发暂时停更一段时间,开始记录一下海康相机二次开发的学习笔记. 环境配置 1. 创建项目 打开Visual Studio,新建.NetFramework项目,选择WindowsForms,点击下一步,选择项目名称,点击下一步,点击确定打开项目属性,点击生成选项…

TED: 1靶场复现【附代码】(权限提升)

机下载地址: Ted: 1 ~ VulnHubTed: 1, made by Avraham Cohen. Download & walkthrough links are available.https://www.vulnhub.com/entry/ted-1,327/ 1. 主机发现端口扫描目录扫描敏感信息获取 1.1. 主机发现 nmap -sn 192.168.59.0/24|grep -B 2 00:0C…

面试题:什么是 Redis 的雪崩、穿透和击穿?Redis 崩溃之后会怎么样?该如何应对这种情况?如何处理 Redis 的穿透?

面试题:什么是 Redis 的雪崩、穿透和击穿?Redis 崩溃之后会怎么样?该如何应对这种情况?如何处理 Redis 的穿透? 面试题面试官心理分析面试题剖析缓存雪崩缓存穿透缓存击穿 面试题 了解什么是 Redis 的雪崩、穿透和击穿…

百度智能云发布3款轻量级+2款场景大模型

文心大模型ERNIE 3.5是目前百度智能云千帆大模型平台上最受欢迎的基础大模型之一。针对用户的常见通用的对话场景,ERNIE 3.5 在指令遵循、上下文学习和逻辑推理能力三方面分别进行了能力增强。 ERNIE Speed作为三款轻量级大模型中的“大个子”,推理场景…

微调LLama 3.1——七月论文审稿GPT第5.5版:拿早期paper-review数据集微调LLama 3.1

前言 对于llama3,我们之前已经做了针对llama3 早7数据微调后的测评 去pk llama2的早7数据微调后,推理测试集中的早期paper:出来7方面review去pk gpt4推理测试集中的早期paper:7方面reviewground truth是早期paper的7方面人工rev…

Mysql-B树和B+树的区别

当我们为ID去建立一个主键索引的时候,Mysql底层就会为我们去维护一棵树的结构,从而提升我们的数据检索效率,树的共同特性:小的索引在左边,大的索引在右边,每一次结点的寻址,都是一次磁盘的IO&am…

Linux 基本指令讲解 上

linux 基本指令 clear 清屏 Alt Enter 全屏/退出全屏 pwd 显示当前用户所处路径 cd 改变目录 cd /root/mikecd … 返回上级目录cd - 返回最近所处的路径cd ~ 直接返回当前用户自己的家目 roor 中:/root普通用户中:/home/mike mkdir 创建一个文件夹(d) …

简单的class.getResource与classLoader.getResource区别

简单的getClass().getResource()与ClassLoader.getResource()区别 1.简介 我们在springboot项目中,如果要获取到自己配置的资源或者配置类信息一般会用到Class.getResource()或ClassLoader.getResource(),这两种方式在使用的过程中很容易混淆&#xff…

智慧景区系统:科技赋能旅游新体验

随着信息技术的飞速发展,旅游业正经历着前所未有的变革,智慧景区系统作为这一变革的先锋,正以其独特的魅力重塑着游客的旅行方式。智慧景区系统,顾名思义,是运用物联网、大数据、云计算、人工智能等现代信息技术&#…

NFT 合约:部署 ERC 721 到 Testnet 并发布

目录 1. 创建智能合约2. 配置 Network3. 配置发布脚本4. 执行发布命令Refs1. 创建智能合约 访问: https://wizard.openzeppelin.com/#erc721 填入必要信息,勾选选项。然后点击【Download】下载 hardhat 开发版本。 2. 配置 Network 在 hardhat.config.ts 中添加网络配置:…

Golang面试题六(GMP)

目录 1.Go线程实现模型 1:1 关系 N:1关系 M:N关系 2.GM模型 3.GMP模型 概念 模型简介 有关P和M的个数问题 P和M何时会被创建 4.调度器的设计策略 5.go func() 调度流程 6.调度器的生命周期 7.Go work stealing 机制 8.Go hand off 机制 9.Go 抢占式调度 9.Sys…

外卖O2O系统开发源码开源介绍

外卖O2O系统开发源码开源介绍 开源外卖O2O系统源码可以为开发者提供快速搭建外卖平台的基础,节省从零开始的开发时间。 以下是几个推荐的开源项目: flash-waimai 是一个基于Spring Boot和Vue.js的前后端分离的外卖系统,包含手机端和后台管理…

spring boot 发送微信小程序订阅消息

首先我们需要订阅一个消息: 订阅教程本文章并未提起,感兴趣的同学自行百度。 我们可以看到订阅消息中【消息内容】有很多参数,我们在发送消息时就需要将这些参数进行填充,当然填充的时候要注意格式,如果格式不对还是会…

LDR6020在Type-C手机同时充电与USB2.0数据传输方案

随着科技的飞速发展,Type-C接口已成为智能手机等移动设备的主流充电和数据传输接口。为了满足用户对于高效充电与稳定数据传输的双重需求,乐得瑞科技推出的LDR6020芯片凭借其卓越的性能和丰富的功能,为Type-C手机提供了同时充电与USB2.0数据传…

关于归并排序:

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_urlhttps%3A%2F return 语句开始之后&#xff0c;会执行之前剩余遗留下的语句和状态#include<bits/stdc.h> using namespace std…

使用RestHighLevelClient进行Elasticsearch Function Score查询

简介 Function Score查询在Elasticsearch中是一个强大的工具&#xff0c;它允许我们根据一个或多个函数来调整查询结果的相关性得分。这使得我们可以基于某些条件对搜索结果进行更精细的控制。本文将介绍如何在Java应用程序中使用Elasticsearch的RestHighLevelClient执行Funct…

快速把文件名统计到excel表的方法

文件名统计到EXCEL表&#xff0c;这似乎很多人都没听说过&#xff0c;因为它与EXCEL表格不沾边&#xff0c;那么这个需求如何实现&#xff0c;用到什么方法&#xff0c;今天给大家介绍一个比较实用的方法&#xff0c;它可以把文件名或文件夹的名快速提取并统计到EXCEL表格上去。…