当前位置: 首页 > news >正文

【Jenkins】持续集成部署学习

【Jenkins】持续集成部署学习

  • 【一】安装部署
    • 【1】Jenkins所处位置
    • 【2】Docker安装Gitlab
      • (1)首先准备一台空的虚拟机服务器
      • (2)安装服务器所需的依赖
      • (3)Docker的安装
      • (4)阿里云镜像加速
      • (5)安装Gitlab
    • 【3】Gitlab使用
      • (1)Gitlab创建项目
      • (2)Idea工具创建本地仓库
      • (3)选择此项目根目录作为发布的仓库
      • (4)把项目ADD添加到git缓冲区
      • (5)再将项目COMMIT提交到本地仓库
      • (6)把项目PUSH推送到远程仓库
      • (7)查看commit的几次,就是看版本
      • (8)创建分支
    • 【4】Docker安装Jenkins
    • 【5】Docker安装Maven
    • 【6】Jenkins使用

【一】安装部署

【1】Jenkins所处位置

在这里插入图片描述

【2】Docker安装Gitlab

(1)首先准备一台空的虚拟机服务器

Gitlab用的端口是80,可能会跟其它应用冲突,并且Gitlab所需内存也很大,所以还是单独放在一个服务器上比较好。
用原来空的虚拟机服务器克隆一个,注意内存要选大一点,6G左右

(2)安装服务器所需的依赖

(1)ip a / ip addr / ifconfig 不显示ip问题

(3)Docker的安装

(1)查看系统的内核版本

uname -r 4.18.0-80.11.2.el8_0.x86_64

执行命令:uname -r
注意:x86 64位系统,如果是32位是不能安装 docker 的

(2)yum更新到最新版本

sudo yum -y update

执行命令:sudo yum update
注意:看到显示 Complete 就代表完成了,整个过程需要 5-10 分钟左右

更新gcc(C语言的编译环境)

yum -y install gcc
yum -y install gcc-c++

(3)安装Docker所需的依赖包

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

执行命令:sudo yum install -y yum-utils device-mapper-persistent-data lvm2
注意:看到显示 Complete 就代表完成了,整个过程需要 1-3 分钟左右

(4)设置Docker的yum的源

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

(5)更新yum软件包索引

yum makecache fast

(6)查看仓库所有Docker版本

yum list docker-ce --showduplicates | sort -r

(7)安装Docker
安装默认最新版本的Docker

yum -y install docker-ce docker-ce-cli containerd.io

(8)启动Docker并添加开机自启动
启动Docker

sudo systemctl start docker

设置开机启动Docker

systemctl enable docker

重启docker

systemctl restart docker

停止docker

systemctl stop docker

(9)查看Docker版本

docker --version

(10)测试

ps -ef|grep docker
docker version

(11)卸载Docker

systemctl stop docker
yum remove docker-ce docker-ce-cli containerd.io
rm -rf /var/lib/docker
rm -rf /var/lib/containerd

(12)Docker常用命令

[root@CodeGuide ~]# docker --help				#Docker帮助
[root@CodeGuide ~]# docker --version			#查看Docker版本
[root@CodeGuide ~]# docker search <image>		#搜索镜像文件,如:docker search mysql
[root@CodeGuide ~]# docker pull <image>		#拉取镜像文件, 如:docker pull mysql
[root@CodeGuide ~]# docker images				#查看已经拉取下来的所以镜像文件
[root@CodeGuide ~]# docker rmi <image>		#删除指定镜像文件
[root@CodeGuide ~]# docker run --name <name> -p 80:8080 -d <image>		#发布指定镜像文件
[root@CodeGuide ~]# docker ps					#查看正在运行的所有镜像
[root@CodeGuide ~]# docker ps -a				#查看所有发布的镜像
[root@CodeGuide ~]# docker rm <image>			#删除执行已发布的镜像

(13)如何创建自启动的容器
(1)还没run创建容器的
使用 docker run 命令运行时,增加 --restart=always 参数即可

(2)已运行的容器修改其自启动策略
执行命令:
docker update --restart=always 容器名或容器ID
docker container update --restart=【容器策略】 容器名称

# no 容器退出时不重启容器
# on-failure 只有在非零状态退出时才重新启动容器
--restart=on-failure:【重启次数】
# always 无论退出状态如何都

(4)阿里云镜像加速

(1)获取阿里云加速器地址
登陆阿里云,点击控制台,然后点击菜单,找到“容器镜像服务”
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YRAD3MdN-1672584376343)(evernotecid://9B99E324-7852-4A64-95A3-727CD2F9CB64/appyinxiangcom/12234224/ENResource/p1677)]

创建个人容器镜像托管服务

然后点击镜像工具,进入镜像加速器,即可看到阿里云加速器地址,把这个加速器地址配置到docker容器里
在这里插入图片描述

(2)创建文件夹并执行脚本
先创建文件夹

mkdir -p /etc/docker

执行脚本

tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://xqybwad5.mirror.aliyuncs.com"]
}
EOF

(3)重新加载配置文件

systemctl daemon-reload

(4)重新启动docker

systemctl restart docker

(5)查看 daemon.json 是否已经生效了

tail /etc/docker/daemon.json

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w2MT66LX-1672584376344)(evernotecid://9B99E324-7852-4A64-95A3-727CD2F9CB64/appyinxiangcom/12234224/ENResource/p1679)]

(5)安装Gitlab

关闭所有防火墙
service firewalld status
service firewalld stop
重启docker:systemctl restart docker

(1)拉取镜像,创建容器
直接使用创建命令,系统会自动进行拉取

# 添加容器
docker run --detach \--hostname 192.168.19.8  \--publish 443:443 --publish 80:80 \--name gitlab \--restart always \--volume $GITLAB_HOME/config:/etc/gitlab \--volume $GITLAB_HOME/logs:/var/log/gitlab \--volume $GITLAB_HOME/data:/var/opt/gitlab \--shm-size 256m \registry.gitlab.cn/omnibus/gitlab-jh:latestgitlab/gitlab-ce:latest

(2)启动容器

docker start gitlab

查看已经存在的容器

docker ps -a

(3)进入容器

docker exec -it gitlab /bin/bash

(4)外网访问测试
首先保证前面关闭防火墙
访问下面连接(注意http不加s):http://192.168.19.8/
要稍微等一会

查看内存使用情况

free -m

等内存加载的差不多了,就可以打开网页了
在这里插入图片描述
在这里插入图片描述
(5)管理员账号密码登录
密码是进入容器后查找的

cat /etc/gitlab/initial_root_password

登录名是root,密码直接复制过来使用
在这里插入图片描述
(6)修改默认密码
启动 gitlab-rails console要等一会

进入容器:
~/files/code/gitlab$ docker exec -it gitlab bash
启动 gitlab-rails console:root@gitlab:/# gitlab-rails console
--------------------------------------------------------------------------------Ruby:         ruby 2.7.5p203 (2021-11-24 revision f69aeb8314) [x86_64-linux]GitLab:       14.7.2 (89599212ee6) FOSSGitLab Shell: 13.22.2PostgreSQL:   12.7
--------------------------------------------------------------------------------
Loading production environment (Rails 6.1.4.4)
irb(main):001:0> user =User.find(1)
=> #<User id:1 @root>
irb(main):002:0> user.password = '111111admin'
=> "111111admin"
irb(main):003:0> user.password_confirmation = '111111admin'
=> "111111admin"
irb(main):004:0> user.send_only_admin_changed_your_password_notification!
=> true
irb(main):005:0> user.save!
=> true
irb(main):006:0> exit
root@gitlab:/# exit

【3】Gitlab使用

(1)Gitlab创建项目

首先创建一个空白的项目
在这里插入图片描述

(2)Idea工具创建本地仓库

在IDEA中创建好项目,点击VCS,按照下图指示先给项目创建本地Git仓库
在这里插入图片描述

(3)选择此项目根目录作为发布的仓库

(4)把项目ADD添加到git缓冲区

选择最右侧的 “add”
在这里插入图片描述

(5)再将项目COMMIT提交到本地仓库

选择最右侧第一个 “Commit Directory…”
在这里插入图片描述点击之后,在弹窗里填写备注信息
在这里插入图片描述

(6)把项目PUSH推送到远程仓库

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
URL复制下面这个
在这里插入图片描述连接的时候输入root和对应的密码就行了

这样就可以提交上去了
在这里插入图片描述

更新项目的话,commit的时候选择你修改的文件,push的时候,对应的url就是你要更新项目仓库的url。这样,gitlab上面仓库里面的项目就是你选择的文件进行修改了。也就是只是局部进行修改。

(7)查看commit的几次,就是看版本

在这里插入图片描述

看到以上commit了3次;

我们想要回到某一次,我们可以右击想要回到的版本
在这里插入图片描述
只要点击了以上的这个,就回去了

【Checkout Revision】和【Reset Current Branch to Here】的区别?

(8)创建分支

我们想要在当前的项目的基础上面,创建一个分支,相当于对于当前的项目复制一份,变为一个分支
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

如何查看是不是切换过去了

idea右下角,就可以看到当前的项目在哪个分支

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

也可以直接在右下角进行点击创建
在这里插入图片描述

【4】Docker安装Jenkins

(1)拉取镜像

docker pull jenkins/jenkins

(2)修改目录权限

需要修改下目录权限,因为当映射本地数据卷时,/data/jenkins_home/目录的拥有者为root用户,而容器中jenkins用户的 uid 为 1000。我们创建一个jenkins目录
# mkdir /var/jenkins_home
# chown -R 1000:1000 /var/jenkins_home/

(3)运行镜像

docker run -d -p 10240:8080 -p 10241:50000 -v /var/jenkins_home:/var/jenkins_home -v /etc/localtime:/etc/localtime --name myjenkins jenkins/jenkins

(4)浏览器访问Jenkins页面
输入http://192.168.XX.XX:10240
IP是服务器IP地址
端口号是我们刚刚设置的端口号
在这里插入图片描述

(5)获取管理员密码

vim /var/jenkins_home/secrets/initialAdminPassword

复制密码然后登录

(6)安装插件
选择安装推荐的插件
在这里插入图片描述
(7)创建管理员
在这里插入图片描述
(8)实例配置
在这里插入图片描述
配置完成
在这里插入图片描述http://192.168.19.7:10240/

(9)通过docker安装的jenkins自带git和JDK,就不需要再安装了
在这里插入图片描述

【5】Docker安装Maven

【6】Jenkins使用

相关文章:

【Jenkins】持续集成部署学习

【Jenkins】持续集成部署学习 【一】安装部署【1】Jenkins所处位置【2】Docker安装Gitlab&#xff08;1&#xff09;首先准备一台空的虚拟机服务器&#xff08;2&#xff09;安装服务器所需的依赖&#xff08;3&#xff09;Docker的安装&#xff08;4&#xff09;阿里云镜像加速…...

Redis数据结构之List

Redis 中列表&#xff08;List&#xff09;类型是用来存储多个有序的字符串&#xff0c;列表中的每个字符串成为元素 Eelement&#xff09;&#xff0c;一个列表最多可以存储 2^32-1 个元素。 在 Redis 中&#xff0c;可以对列表两端插入&#xff08;push&#xff09;和弹出&am…...

SpringCloud Alibaba实战和源码(7)Skywalking

什么是SkyWalking Skywalking是由国内开源爱好者吴晟开源并提交到Apache孵化器的产品&#xff0c;它同时吸收了Zipkin /Pinpoint /CAT 的设计思路。特点是&#xff1a;支持多种插件&#xff0c;UI功能较强&#xff0c;支持非侵入式埋点。目前使用厂商最多&#xff0c;版本更新较…...

MySQL索引可能失效之or、is null、is not null、不等于(!=,<>)、联合索引

1、如果 A,B 两列都有索引&#xff0c;那么 select * from Table where Aa or Bb; 会走索引吗&#xff1f; 答案&#xff1a;会&#xff0c;因为 A,B都有索引&#xff1b; 2、如果 A,B有索引&#xff0c;但是C没有索引&#xff1b; select * from Table where Aa or Bb …...

无人机电力巡检:探索电力设施维护的新模式

电力巡检一直是电力行业中关键的环节&#xff0c;它的目的是确保电力设施的正常运行和安全稳定&#xff0c;对提高电力设施的可靠性、确保电力供应的稳定性和提高电力企业的管理水平具有重要的意义。传统的电力巡检方式通常采用人工的方式进行&#xff0c;这种方式存在很多的问…...

ethers.js1:ethers的安装和使用

ethers官方文档&#xff1a;Documentation 1、ethers简介&#xff1a; ethers.js是一个完整而紧凑的开源库&#xff0c;用于与以太坊区块链及其生态系统进行交互。如果你要写Dapp的前端&#xff0c;你就需要用到ethers.js。 与更早出现的web3.js相比&#xff0c;它有以下优点…...

小程序中的页面配置和网络数据请求

页面配置文件和常用的配置项 1.在msg.json中配置window中的颜色和背景色 "navigationBarBackgroundColor": "#efefef","navigationBarTextStyle": "black" 2.可以看到home中的没有发生变化但是msg的发生变化了&#xff0c;这个和前面的…...

使用ImageMagick实现多张图片拼接为gif(多线程版)

官网: https://imagemagick.org/ 直接上代码 ExecutorService es Executors.newFixedThreadPool(10); List<File> images getImageFiles(sceneDir); CountDownLatch cdl new CountDownLatch(images.size()); // 拷贝图片 for (File file : images) {System.out.prin…...

解释 RESTful API,以及如何使用它构建 web 应用程序。

RESTful API是一种利用HTTP协议进行通信的Web API设计风格&#xff0c;它采用了一组统一且可缓存的操作&#xff0c;包括GET、POST、PUT、DELETE等&#xff0c;通过URL来定位资源&#xff0c;以及使用JSON、XML等格式来传输数据&#xff0c;以实现系统之间的数据交互和资源共享…...

远程端口转发 实践 如何将物理机某一端口的服务转发到vps上,使得外网能访问到

以本机1470端口&#xff08;我的sqli-labs&#xff09;与vps的9023端口为例。 SSH基本的连接命令是&#xff1a; ssh usernamehostname这里牵扯到了两台主机&#xff0c;一是执行命令、运行SSH客户端的主机&#xff0c;我们称为本地主机A【Host A】&#xff1b;二是接收连接请…...

【uniapp 监听键盘弹起与收回】

在uniapp中&#xff0c;可以通过使用小程序提供的API来监听键盘弹起与收回。 首先&#xff0c;在页面的onLoad函数中注册监听事件&#xff1a; onLoad() {uni.onKeyboardHeightChange(this.onKeyboardHeightChange); },然后&#xff0c;在页面的onUnload函数中取消注册监听事…...

【Unity】如何制作小地图

我们为什么要制作小地图呢&#xff1f; 原因很简单&#xff1a; 导航和定位&#xff1a;小地图可以显示玩家当前位置以及周围环境的概览。这使得玩家能够更好地导航和定位自己在游戏中的位置&#xff0c;找到目标或避开障碍物。场景了解&#xff1a;通过小地图&#xff0c;玩…...

基于IMX6ULLmini的linux裸机开发系列八:按键处理实验

目录 GIC相关寄存器 GPIO中断相关寄存器 中断服务函数表 中断向量表偏移位置 make有报错 解决方法&#xff1a;error: for loop initial declarations are only allowed in C99 mode_‘for’ loop initial declarations are only allowed i_Young_2717的博客-CSDN博客 GIC…...

数据结构好题总结

Cut Inequality Down 题解 https://blog.csdn.net/lzh_naive/article/details/103340568 概括&#xff1a;st表倍增类st表 考虑如果没有UL限制的话&#xff0c;相当于是前缀和 我们发现&#xff0c;如果某次到了U/L&#xff08;相当于是一次碰壁&#xff09;那么这个值已知…...

Java串口开发

网上搜索了关于java串口开发的资料,发现都不是特别的全,故写下一些心得以帮助其他人能快速上手java串口开发,如有错漏之处&#xff0c;敬请指正 串口开发会用到一个javax.comm和RXTXcomm库,&#xff0c;javax.comm库不支持64位操作系统。该库仅适用于32位操作系统,所以接下来主…...

Python nohup 启动python脚本,后台没有日志

一、情况 1.linux上运行python脚本&#xff0c;前台运行打印日志&#xff0c;后台使用nohup不打印日志。 前台运行 ./xxx.py 后台运行 nohup python ./xxx.py > xxx.log 2>&1 &二、排查思路 2.1 脚本是否有问题 首先看自己写的python脚本是否存在问题。因为…...

完美解决微信小程序使用复选框van-checkbox无法选中

由于小程序使用了vant-ui框架&#xff0c;导致checkbox点击无法选中问题 <van-checkbox value"{{ checked }}" shape"square"><view class"check-content"><view class"checktext">我已阅读并同意>《用户协议》…...

IDEA报错:类文件具有错误的版本 61.0,应为52.0

springboot项目启动报错&#xff1a; 类文件具有错误的版本 61.0,应为52.0 请删除该文件或确保该文件位于正确的类路径子目录中 查阅了网上的很多资料&#xff0c;普遍原因说是springboot版本过高&#xff0c;高于3.0 需要在pom文件中降低版本 也有说是idea的maven配置java版…...

Linux 挂载局域网内共享目录

Linux 挂载局域网内共享目录 1、安装samba服务端2、samba服务端配置3、添加samba服务访问账户4、防火墙5、重启服务6、windows访问7、linux访问 1、安装samba服务端 sudo apt-get install -y samba yum install -y samba2、samba服务端配置 vim /etc/samba/smb.conf在文档尾部…...

FFmpeg解码32k大分辨率出现如下错误:Picture size 32768x32768 is invalid

最近找到一张32k的jpeg图片&#xff0c;尝试用ffmpeg来进行解码&#xff0c;命令如下&#xff1a; ffmpeg -i enflame_32768-32768-420.jpg 32.yuv结果出现Picture size 32768x32768 is invalid的错误&#xff1a; 找到报错的代码文件imgutils.c&#xff0c;以及函数&#x…...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容&#xff1a;参考网站&#xff1a; PID算法控制 PID即&#xff1a;Proportional&#xff08;比例&#xff09;、Integral&#xff08;积分&…...

golang循环变量捕获问题​​

在 Go 语言中&#xff0c;当在循环中启动协程&#xff08;goroutine&#xff09;时&#xff0c;如果在协程闭包中直接引用循环变量&#xff0c;可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下&#xff1a; 问题背景 看这个代码片段&#xff1a; fo…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

初探Service服务发现机制

1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能&#xff1a;服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源&#xf…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能

1. 开发环境准备 ​​安装DevEco Studio 3.1​​&#xff1a; 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK ​​项目配置​​&#xff1a; // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...

Leetcode33( 搜索旋转排序数组)

题目表述 整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转&#xff0c;使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...

鸿蒙HarmonyOS 5军旗小游戏实现指南

1. 项目概述 本军旗小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;采用DevEco Studio实现&#xff0c;包含完整的游戏逻辑和UI界面。 2. 项目结构 /src/main/java/com/example/militarychess/├── MainAbilitySlice.java // 主界面├── GameView.java // 游戏核…...

MySQL体系架构解析(三):MySQL目录与启动配置全解析

MySQL中的目录和文件 bin目录 在 MySQL 的安装目录下有一个特别重要的 bin 目录&#xff0c;这个目录下存放着许多可执行文件。与其他系统的可执行文件类似&#xff0c;这些可执行文件都是与服务器和客户端程序相关的。 启动MySQL服务器程序 在 UNIX 系统中&#xff0c;用…...

深入理解 React 样式方案

React 的样式方案较多,在应用开发初期,开发者需要根据项目业务具体情况选择对应样式方案。React 样式方案主要有: 1. 内联样式 2. module css 3. css in js 4. tailwind css 这些方案中,均有各自的优势和缺点。 1. 方案优劣势 1. 内联样式: 简单直观,适合动态样式和…...