gitlab实现CI/CD自动化部署

news2024/9/23 6:25:02

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
  - deployProd

cache:
  paths:
    - node_modules/

# 安装依赖
install:
  stage: install
  # 此处的tags必须填入之前注册时自定的tag
  tags:
    - 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: buildDev
  tags:
    - buildDev
  # 规定仅在dev分支提交时才触发此阶段
  only:
    - dev
  script:
    - echo "start dev build"
    - rm -rf ./dist
    - npm run build:dev
  # 将此阶段产物传递至下一阶段
  artifacts:
    paths:
      - dist/

# 打包test分支
buildTest:
  stage: buildTest
  tags:
    - buildTest
  # 规定仅在test分支提交时才触发此阶段
  only:
    - test
  script:
    - echo "start test build"
    - rm -rf ./dist
    - npm run build:test
  # 将此阶段产物传递至下一阶段
  artifacts:
    paths:
      - dist/

# 打包prod分支
buildProd:
  stage: buildProd
  tags:
    - buildProd
  # 规定仅在prod分支提交时才触发此阶段
  only:
    - prod
  script:
    - echo "start prod build"
    - rm -rf ./dist
    - npm run build:prod
  # 将此阶段产物传递至下一阶段
  artifacts:
    paths:
      - dist/

# 部署dev项目
deployDev:
  stage: deployDev
  tags:
    - deployDev
  only:
    # 规定仅在dev分支提交时才触发此阶段
    - dev
  script:
    - 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: deployTest
  tags:
    - deployTest
  only:
    # 规定仅在test分支提交时才触发此阶段
    - test
  script:
    - 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: deployProd
  tags:
    - deployProd
  only:
    # 规定仅在prod分支提交时才触发此阶段
    - prod
  script:
    - 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.coloradmin.cn/o/2036799.html

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

相关文章

【MySQL数据库】单机、集群、分布式的区别

单机、集群和分布式是计算机系统中三种不同的架构模型,它们在资源管理、任务执行和性能优化方面有显著区别。 图片来源 1. 单机(Standalone) 单机指的是单一计算机系统,即所有的计算任务和数据都在一台计算机上处理。单机系统的特点包括: 硬件限制:受限于单台机器的计…

ARM处理架构中的PMU(Performance Monitoring Unit)和 AMU(Activity Monitors Unit)简介

在 ARM 架构中,PMU(Performance Monitoring Unit)和 AMU(Activity Monitors Unit)是用于性能分析和监控的硬件单元,但它们的功能和应用场景有所不同。以下是它们的主要区别: 1. PMU (Performance Monitoring Unit) 功能:PMU 是一种用于监控处理器性能的硬件单元。它可…

简述MYSQL聚簇索引、二级索引、索引下推

一丶聚簇索引 InnoDB的索引分为两种: 聚簇索引:一般创建表时的主键就会被mysql作为聚簇索引,如果没有主键则选择非空唯一索引作为聚簇索引,都没有则隐式创建一个索引作为聚簇索引;辅助索引:也就是非聚簇索…

Spring Web MVC入门(下)

1. 响应 1.1 返回静态页面 创建前端页面&#xff0c;如下图所示&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Index页面</title> </head> <body>Hello,Spring MVC…

利用栈去实现队列

利用栈实现队列 今天我们利用两个栈去实现队列&#xff08;因为是用c去实现队列没有c中的库函数所以我们要先手搓一个栈再去使用&#xff09; 没有实现的去看我的这篇文章&#xff1a;利用顺序表对栈的实现-CSDN博客 回顾一下特性&#xff1a;栈----先进后出、后进先出&…

我常用的几个傻瓜式爬虫工具,收藏!

爬虫类工具主要两种&#xff0c;一种是编程语言第三方库&#xff0c;比如Python的scrapy、selenium等&#xff0c;需要有一定的代码基础&#xff0c;一种是图形化的web或桌面应用&#xff0c;比如Web Scraper、后羿采集器、八爪鱼采集器、WebHarvy等&#xff0c;接近于傻瓜式操…

汇量科技Mintegral发布全新产品矩阵:助力广告主高效增长与变现

近期&#xff0c;汇量科技旗下程序化互动式广告平台Mintegral正式推出全新产品命名&#xff0c;期望通过简洁明确的产品名称&#xff0c;更好地传达Mintegral的品牌理念&#xff0c;使客户与平台的每一次接触都更加直接高效。 Mintegral AppGrowth(原Mintegral Self-Service Pl…

【idea】 已经commit还没push怎么修改commit信息?

前言&#xff1a; 有时候填写commit信息时手快确认了&#xff0c;要push时发现信息有误&#xff0c;此时想重新更改信息。 此方法适用于在idea里commit了的&#xff0c;且还未push。 &#xff08;u1s1&#xff0c;用idea来推送真的又快又方便&#xff0c;自此之后再也没碰过小乌…

Leetcode面试经典150题-112.路径总和

解法都在代码里&#xff0c;不懂就留言或者私信 超级简单的题&#xff0c;不过有隐形的坑 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.v…

算法定制与双光谱技术融合:提升巡检车入侵检测系统效能

一、应用背景 在当今数字化和信息化时代&#xff0c;算法已经成为企业提高效率、优化决策的重要工具。随着大数据、人工智能技术的迅速发展&#xff0c;客户对算法的需求呈现出爆发式增长。这种需求不仅体现在数量上&#xff0c;更体现在质量上&#xff0c;尤其是对算法定制化…

Dav_笔记13:SQL Access Advisor 之 1 Summary

SQL Access Advisor概述 SAA Summary 在调整数据库以实现复杂的数据密集型查询的最佳性能时&#xff0c;物化视图&#xff0c;分区和索引是必不可少的。 SQL Access Advisor通过为给定工作负载推荐适当的物化视图集&#xff0c;物化视图日志&#xff0c;分区和索引&#xff0c;…

macOS Sequoia 15 beta 5 (24A5309e) Boot ISO 原版可引导镜像下载

macOS Sequoia 15 beta 5 (24A5309e) Boot ISO 原版可引导镜像下载 iPhone 镜像、Safari 浏览器重大更新、备受瞩目的游戏和 Apple Intelligence 等众多全新功能令 Mac 使用体验再升级 请访问原文链接&#xff1a;https://sysin.org/blog/macOS-Sequoia-boot-iso/&#xff0c…

基于JAVA的外来人口管理系统设计与实现,源码、部署+讲解

摘 要 在新型冠状病毒性肺炎流行的背景下&#xff0c;我国数亿流动人口应该受到高度关注和保护。并让这一易感染人群离开成为“受害者传染源”的双重风险&#xff0c;的确是一项关键而富有挑战性的任务。因此&#xff0c;本毕业设计是以规模复杂的外来人口及居民群体为典例&am…

UI-无限循环列表

无限循环列表 创建 在任意节点上&#xff0c;添加Scroller&#xff0c;ScrollView组件&#xff0c;和RectMask2D组件&#xff1a; 其中列表的大小&#xff0c;依赖Rect的大小。 界面参数介绍 ViewPort&#xff1a;视口大小 SrollDirction:滚动方向 MovementType&#xff1a…

go语言后端开发学习(五)——如何在项目中使用Viper来配置环境

前言 在之前的文章中我们就介绍过用go-ini来读取配置文件,但是当时我们在介绍时说了他只能读取.ini格式的配置文件所以局限性较大,这里我们介绍一个适用范围更大的配置管理第三方库——Viper。 什么是Viper Viper是适用于Go应用程序&#xff08;包括Twelve-Factor App&#…

算法-差分, 二维前缀和, 离散化

文章目录 本节提要1. 一维差分1.1 一维差分原理分析1.2 一维差分例题应用 2. 等差数列差分2.1 等差数列差分原理分析 3. 二维前缀和3.1 二维前缀和原理分析3.2 二维前缀和例题应用 本节提要 本节的主要目标是一维差分的总结, 包括一维差分, 一维等差数列差分; 二维差分和二维前…

唐诡探案外传-MySQL误操作之“寻凶”

序幕&#xff1a;字符集被修改之谜 立秋后的第一天下午&#xff0c;太阳仍不知疲倦地炙烤着大地&#xff0c;办公室内的中央空调不停歇地鼓吹着冷风。某办公楼内&#xff0c;IT部门的阿祖被同事急匆匆地找来&#xff0c;说是系统出现了奇怪的bug&#xff0c;追查之下发现测试环…

搭建高可用OpenStack(Queen版)集群(十二)之启动一个实例

一、搭建高可用OpenStack&#xff08;Queen版&#xff09;集群之启动一个实例 创建实例之前&#xff0c;首先要创建虚拟网络 一、创建网络 建议命令行和web管理协同进行配置&#xff0c;这样不容易出错 在控制节点执行 1、创建公有网络部分 1、在命令行执行 . admin-openrc ne…

【SQL】平均售价

目录 题目 分析 代码 题目 表&#xff1a;Prices ------------------------ | Column Name | Type | ------------------------ | product_id | int | | start_date | date | | end_date | date | | price | int | ---------------…

技术研究:Redis 数据结构与 I/O 模型

数据结构 Redis之所以“快”&#xff0c;一方面因为它是内存数据库&#xff0c;所有操作都在内存上完成&#xff0c;内存的访问速度本来就快。另一方面则是因为高效的数据结构&#xff0c;使得操作键值效率较高。总体来说&#xff0c;Redis使用了一个用来保存每个Key/Value的全…