使用gitlab 自带 CI/CD 构建部署项目

news2024/11/25 12:37:00

首先是处理网络问题

这里我用的是桥接模式
桥接模式方便局域网内的小伙伴一起使用 如果没有这个打算可跳过这步

# 使用ip addr 查看网络
ip addr

在这里插入图片描述

编辑网络 vi /etc/sysconfig/network-scripts/ifcfg-你的网络名称

vi /etc/sysconfig/network-scripts/ifcfg-ens33

修改如下内容

BOOTPROTO=static #修改成static
ONBOOT=yes #修改成yes
IPADDR=192.168.0.200 # 自定义虚拟机的ip地址(主机是192.168.0.107),必须与主机在同一网段
NETMASK=255.255.255.0 #设置子网掩码,跟宿主一样
GATEWAY=192.168.0.1 #默认网关,跟宿主一样
DNS1=192.168.0.1 #DNS,跟宿主一样

这里我有句话要讲, 这些信息配置完成后出现"网络不可达" 需要把 BOOTPROTO 改为 dhcp

详情可参考 处理网络不可达
用过的人都说好 …
如有其他具体设置可参考Centos 7 VM 桥接网络完整设置

安装git

git一定一定要自己装 用gitlab自带的是 1.8.3.1 这个版本在初次构建的时候是没有问题的 二次构建会出现问题

## 安装源
yum install http://opensource.wandisco.com/centos/7/git/x86_64/wandisco-git-release-7-2.noarch.rpm

## 安装git

yum install git

## 更新git 如果是安装过的就跟新不是就不更新

yum update git

安装gitlab

版本:gitlab 14.3.0

yum -y install https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-14.3.0-ce.0.el7.x86_64.rpm

修改配置文件

vi /etc/gitlab/gitlab.rb

找到,external_url, 修改 gitlab 访问地址 , 端口设置一个自己喜欢的

external_url 'http://192.168.0.128:1998'

#重载配置文件,需要的时间比较长
gitlab-ctl reconfigure

gitlab 常用命令

# 启动gitlab服务
gitlab-ctl start

# gitlab服务停止
gitlab-ctl stop

# 重启gitlab服务
gitlab-ctl restart

访问 页面后没有提示修改密码 需设置密码
在这里插入图片描述

# 进入gitlab控制台
gitlab-rails console -e production
# 找到指定 root 账户
user = User.where(id: 1).first
# 修改密码
user.password = 'secret_pass'
# 确认密码
user.password_confirmation = 'secret_pass'
# 保存
user.save! 
# 退出
exit

进入控制台的时候会卡一下
在这里插入图片描述

然后 用户账号root 登录 密码就是上面设置的密码 详情可参考 gitlab登陆网页没有提示更改密码

在这里插入图片描述

安装 gitlab-runner

# 下载 这个会比较久
wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64

# 分配运行权限
chmod +x /usr/local/bin/gitlab-runner

# 创建用户
useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash

# 安装
gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner

# 运行
gitlab-runner start

新建 runner

# 注册 runner
gitlab-runner register

# 输入 gitlab 的访问地址
http://192.168.0.128:1998

# 输入 runner token,把开 http://192.168.0.128:1998/admin/runners 页面查看
TLSaJ3rPKzW8rt9UXhfk

# runner 描述,随便填
构建 java Demo

# runner tag
java-tag,my-tag,demo-tag

# 说明这个可以不填
xxx

# 输入(选择) shell
shell

在这里插入图片描述
在这里插入图片描述

新建变量 后面会用到

在这里插入图片描述
在这里插入图片描述
先在应用服务器上创建一个目录,用于上传存放项目 jar 包

	mkdir /home/demo

配置环境

安装 JDK1.8
安装 Maven
安装 sshpass 用户文件传输

    yum -y  install sshpass

创建 SpringBoot 项目

在这里插入图片描述在这里插入图片描述

这里修改一下端口 8080 在gitlab 中控制台服务Ruby 占用了

	server.port=9999 

项目启用 runner

在这里插入图片描述

这样就可以不用在配置文件里面写tag

在这里插入图片描述

创建 .gitlab-ci.yml 文件

这里直接用gitlab创建就可以了
在这里插入图片描述

编辑配置文件

在配置文件顶部添加如下参数
在这里插入图片描述

variables:
  server_ip: 192.168.0.128
  jar_name: demo-0.0.1-SNAPSHOT.jar
  java_path: /usr/local/java/jdk1.8.0_371/bin
  upload_path: /home/demo

# 定义执行的各个阶段及顺序
stages:
  - build
  - upload
  - deploy

# 使用 maven 镜像打包项目
maven-build:
  stage: build
  image: maven:3.5.0-jdk-8
  script:
    - mvn package -B -Dmaven.test.skip=true
  cache:
    key: m2-repo
    paths:
      - .m2/repository
  artifacts:
    paths: 
      - target/$jar_name

# 上传生成的 jar 包到你的应用服务器,这里使用 ictu/sshpass 这个镜像,是为了使用 sshpass 命令
upload-jar:
  stage: upload
  image: ictu/sshpass
  script: 
    - ls -l target/
    - sshpass -p $ssh_password scp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no target/$jar_name root@$server_ip:$upload_path/$jar_name

# 启动 SpringBoot jar包
deploy-test:
  stage: deploy
  image: ictu/sshpass
  script:
    - sshpass -p $ssh_password ssh -o StrictHostKeyChecking=no root@$server_ip "nohup $java_path/java -jar $upload_path/$jar_name >/dev/null 2>&1 &"

这里启动的时候是去掉了 UserKnownHostsFile=/dev/null

这里的启动命令可用替换成脚本系统命令 sudo bash 这样就可以循环启用不用管端口占用问题

#!/bin/sh
echo "停止demo服务"
pid=`ps -ef | grep "你的jar包名字" | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
   kill -9 $pid
fi
echo "停止demo服务成功"

source /etc/profile

nohup java -Xms256m -Xmx512m -XX:PermSize=256m -XX:MaxPermSize=1024m -jar /home/demo/demo.jar >/home/demo/demo.log 2>&1 &

tail -f /home/demo/demo.log

提交后可到流水线查看打包过程
在这里插入图片描述
在这里插入图片描述

具体参考文档

前端 Linux 到 GitLab 自动化部署(非常详细)
后端Gitlab CI-CD自动化部署SpringBoot项目

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

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

相关文章

数据结构与算法:栈和队列

1 栈 栈是一种后入先出(LIFO)的线性逻辑存储结构。只允许在栈顶进行进出操作。 1.1 栈基本操作 基本操作包括:入栈(push)/出栈(pop)/获取栈顶元素(peek)。 栈的实现主…

CNN卷积类型总结(标准卷积、空洞卷积、反卷积、深度可分离卷积、分组卷积等)

目录 标准卷积 卷积的运算 conv2d conv1d 其他卷积类型 空洞卷积(膨胀卷积) 反卷积(转置卷积) 深度可分离卷积 分组卷积 参考文章 上学时,卷积常在各个课程中出现,现代、信号与系统这些&#xff…

第45步 深度学习图像识别:Nasnet建模(Tensorflow)

基于WIN10的64位系统演示 一、写在前面 (1)Nasnet NASNet是由Google Brain团队在2017年提出的一种神经网络架构搜索(Neural Architecture Search,简称NAS)的结果。NAS是一种用于自动化设计深度学习模型的技术。在NA…

oracle字符集

1、查看oracle字符集 如果操作系统或者客户端的字符集设置和数据库设置不一样就会出现乱码 查询NLS_LANG即操作系统环境变量要设为 NLS_LANGUAGE_NLS_TERRITORY**.NLS_CHARACTERSET**,如: export NLS_LANG“AMERICAN_AMERICA.AL32UTF8”

Spring MVC处理响应附案例详解

目录 一、配置视图解析器 二、控制器方法的返回值 2.1 返回值为void 2.1.1 控制器方法 2.1.2 jsp页面 2.1.3 测试结果 2.2 返回值为String 2.2.1 控制器方法 2.2.2 测试结果 2.3 返回值为ModelAndView 2.3.1 控制器方法 2.3.2 JSP页面 2.3.3 测试结果 三、某些会…

基于蒙特卡罗法评估智能电网可靠性研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

python爬虫_django+vue+echarts可视化查询所有CSDN用户质量分

文章目录 ⭐前言⭐ 效果⭐django简介⭐vue3简介⭐vue引入echarts ⭐前后分离实现💖 django代码层💖 vue3代码层结束 ⭐前言 大家好,我是yma16,本文分享关于前后分离djangovueecharts可视化查询CSDN用户质量分。 该系列文章&#…

一种基于linux内核双向链表的移植

1.简介 双向链表(Doubly Linked List)是一种常见的数据结构,由一系列的节点组成,每个节点都包含两个指针,分别指向前一个节点和后一个节点。与单向链表不同,双向链表可以在 O(1) 的时间复杂度内向前或向后遍…

【Unity编辑器扩展】(三)PSD转UGUI Prefab, 一键拼UI解放美术/程序(完结)

工具效果: 第一步,把psd图层转换为可编辑的节点树,并自动解析UI类型、自动绑定UI子元素: 第二步, 点击“生成UIForm"按钮生成UI预制体 (若有UI类型遗漏可在下拉菜单手动点选UI类型): 验证一键生成UI效果: 书接上…

idea双击打不开怎么办?

今天在敲代码的时候,突然出现了一个bug,idea打不开了,这个问题怎么解决? 只要找到C:\Users\Administrator .IntelliJIdea2019.3这个文件把所有文件都给删了就可以重启了 哈哈,重启成功

Bayes贝叶斯定理

问题的关键在于:人们是否考虑过大背景/先验/问题的前提,从而做出一个大致的估计。这就引出了我们关于理性的探讨,理性不是说知道事实,而是认识到哪些因素是有关的。 x.1 一个关于贝叶斯定理的例子 引入一个steve假设。我们已知大…

开源进展 | WeIdentity v3.1.1发布,提供无存储依赖的纯功能接口

作为连接实体对象(人或物)的现实身份与链上身份的可信映射,实现实体对象之间安全可信的数据授权与交换,分布式身份技术解决方案在推动区块链应用繁荣及可信数据流转的过程中扮演着重要角色。 WeIdentity是由微众银行自主研发并完全…

parcel打包工具搭建热开发项目环境

parcel是一款WEB端打包工具 能够提供热开发的项目环境 使用了的话不然Webpack 但相对搭建项目会更快一些 我们现在本地创建一个目录 然后 用编辑器打开我们创建的目录 运行终端 在终端中输入 npm init 初始化一个项目 运行完毕之后 我们就会得到一个package.json文件 然后…

Spring Boot 中的 RedisCacheManager 是什么,原理,如何使用

Spring Boot 中的 RedisCacheManager 是什么,原理,如何使用 介绍 在现代应用程序中,缓存是提高应用程序性能的重要组成部分。Spring Boot 提供了一个强大的缓存框架,它支持多种缓存提供程序,包括 Redis、Ehcache、Ca…

国金QMT量化交易系统的Bug及应对策略

国金QMT量化交易系统中的 账号成交状态变化主推 deal_callback() , 当账号成交状态有变化时,这个函数被客户端调用。 我的策略是,在handlebar()里面挂单,等待成交,而判断成交的方式是根据系统主推deal_callback()通知…

数据结构与算法:查找、排序、动态规划、数学

1 查找表 查找表是同一数据类型构成的集合。只进行查找操作的称为静态查找表;在查找的同时进行插入和删除操作的称为动态查找表。 查找算法衡量好坏的依据为:查找成功时,查找的关键字和查找表中比较过的数据元素的个数的平均值,…

MKS SERVO4257D 闭环步进电机_系列10 arduino 例程

第1部分 产品介绍 MKS SERVO 28D/35D/42D/57D 系列闭环步进电机是创客基地为满足市场需求而自主研发的一款产品。具备脉冲接口和RS485/CAN串行接口,支持MODBUS-RTU通讯协议,内置高效FOC矢量算法,采用高精度编码器,通过位置反馈&a…

HiEV独家|余承东力推L3标准,华为ADS更高阶产品将至

作者 | 张祥威 编辑 | 德新 L3标准出台提速,智驾江湖的厮杀将更加惨烈。 近日,多位接近华为的人士告诉HiEV,余承东正在力推自动驾驶L3标准尽快出台,华为的多位技术专家深度参与了L3标准制定。 本月稍早前,余承东在重庆…

计算机网络-数据链路层下篇

目录 计算机网络 七、MAC地址,IP地址及ARP地址 (一)MAC地址 (二)IP地址 (三)ARP地址 八、集线器和交换机的区别 九、以太网交换机自学习和转发帧的流程 十、以太网交换机的生成树协议ST…

一步一步学OAK之十三:实现RGB相机上的空间对象跟踪

前面我们实现了在RGB相机上进行物体的对象跟踪,能够实时跟踪我们想要追踪的物探,但是,如果我们要想知道这个物体的三维空间坐标,该如何实现呢?要想实现这个功能,我们需要用到DepthAI API提供的MobileNetSpa…