Docker搭建jenkins(Vue自动化部署)

news2024/9/21 4:35:22

前言

需要提前准备的条件
Docker环境

一、jenkins镜像

# 查询镜像
docker search jenkins

在这里插入图片描述

# 下载镜像
# lts稳定版
docker pull jenkins/jenkins:lts

在这里插入图片描述

#查看镜像
docker images

在这里插入图片描述

二、启动Jenkins容器

创建挂载文件夹,并且进行文件授予权限

#创建文件夹
mkdir -p /home/jenkins_home
#权限
chmod 777 /home/jenkins_home

创建容器并运行

docker run -d -uroot -p 10000:8080 -p 50000:50000 --name jenkins \
-v /home/jenkins_home:/var/jenkins_home \
-v /home:/home \
-v /etc/localtime:/etc/localtime \
jenkins/jenkins:lts

常见命令:docker exec -it jenkins bash 进入容器,可查看容器里面的文件

命令描述
-d后台运行容器,并返回容器ID
-uroot使用 root 身份进入容器,推荐加上,避免容器内执行某些命令时报权限错误
-p 10000:8080将容器内8080端口映射至宿主机10000端口,这个是访问jenkins的端口
-p 50000:50000将容器内50000端口映射至宿主机50000端口
–name jenkins设置容器名称为jenkins
-v /home/jenkins_home:/var/jenkins_home:/var/jenkins_home目录为容器jenkins工作目录,我们将硬盘上的一个目录挂载到这个位置,方便后续更新镜像后继续使用原来的工作目录
/home:/home将容器目录映射到宿主机,前面的是宿主机的真实目录,后面是容器里面的目录(在服务器里面是看不到的,通过命令进入)
-v /etc/localtime:/etc/localtime让容器使用和服务器同样的时间设置
jenkins/jenkins:lts镜像的名称,这里也可以写镜像ID

三、访问jenkins

在浏览器中输入:http://serverIp:port/访问jenkins,serverIp为docker宿主机的ip,port即为宿主机映射的端口。例如:http://43.143.108.57:10000

在这里插入图片描述
这里要求输入初始的管理员密码,根据提示密码在/var/jenkins_home/secrets/initialAdminPassword这个文件中,注意这个路径是Docker容器中的,所以我们通过如下命令获取一下

docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword

在这里插入图片描述
输入上面获取的密码,即可解锁

四、安装插件

选择自定义插件安装,根据自己需要安装所需插件,必备Git、GitLab、GitHub

在这里插入图片描述

插件安装完成,创建管理员用户

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

到这里,Jenkins已搭建完成,接下来安装及配置所需插件及环境

五、安装前端所需要的插件及发布需要的插件

5.1 安装NodeJS插件

在这里插入图片描述

5.2 安装连接SSH的插件

Publish Over SSH用于连接远程服务器

在这里插入图片描述

5.3 安装把应用发布到远程服务器的插件

Deploy to container插件用于把打包的应用发布到远程服务器

在这里插入图片描述

5.4 配置git和NodeJS环境

安装配置git

#服务器中输入
#安装git
yum install git
#查看git的执行文件位置, 默认是在 /usr/bin/git
whereis git

打开系统管理里面的全局工具配置、配置git执行命令目录

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

5.5 安装配置NodeJS

在这里插入图片描述

5.6 安装配置NodeJS

配置git账号密码信息
点击系统管理下面的 Manage Credentials

在这里插入图片描述
1、点击jenkins
在这里插入图片描述
2、点击全局凭据
在这里插入图片描述
3、设置连接git的账号密码信息,然后再设置凭据的唯一ID
在这里插入图片描述

六、以上配置完成,开始创建任务

6.1 新建任务,然后点构建一个自由风格的软件项目

在这里插入图片描述

6.2 配置git地址和凭证信息

在这里插入图片描述

6.3 指定代码分支

在这里插入图片描述

6.4 设置项目的自动发布的触发条件

目前使用的是轮询,
H/5 * * * * 表示每5分钟去查看git代码有没有更新,有更新自动发布

在这里插入图片描述

6.5 配置构建环境

在这里插入图片描述

6.6 发布项目到本机

设置构建命令
点击增加构建步骤,选择执行shell

在这里插入图片描述

把构建项目的命令放进去,然后点击保存就行

在这里插入图片描述

npm -v
node -v
npm i
rm -rf ./dist/* 
#打包命令
npm run build:stage
#如果文件夹不存在,则创建文件夹,这个文件夹在宿主机
#我这里为了规划统一 项目都放在了home/web下面,text是具体项目文件名称
tempPath="/home/web/test/"
if [ ! -d "$tempPath" ]; then
mkdir $tempPath
fi
#将容器里面/var/jenkins_home/workspace/test/dist下面文件复制到宿主机/home/web/test/下面
cp -r /var/jenkins_home/workspace/test/dist/* /home/web/test/
#打印容器目录
echo ${PWD}
echo "*************打包成功****************"
6.7 构建项目

进入刚刚创建的任务,点击立即构建

在这里插入图片描述

查看打包进度及日志

在这里插入图片描述
看到下面的Finished: SUCCESS代表着已经发布成功了
在这里插入图片描述

6.8 最后就可以看到/home/web/test里面就有打包文件了

在这里插入图片描述

七、扩展知识:发布项目到远程服务器

有2台服务器的情况下,将当前jenkins配置的服务器打包文件发送到另外一台服务器

1、需要先设置远程服务器的host,账号,密码,点击系统管理->点击系统配置,找到Publish over SSH选项

在这里插入图片描述2、需要配置Name,Hostname,Username,Remote Directory,账号认证可以使用密码,key文件,key内容
在这里插入图片描述

参数说明

字段描述
Passphrase服务器的密码
Path to key连接远程服务器密钥文件的路径
Key密钥文件的内容
Name自定义服务器名
HostName服务器IP外网地址
UserName服务器用户名
Remote Directory连接上ssh后的默认路径

3、设置构建命令

在这里插入图片描述

#加载依赖
npm install 
#构建程序
npm run build:stage
#切换了编译后的目录
cd dist
#移除之前的压缩包
rm -f product.tar.gz
#把当前目录的所有文件打包成product.tar.gz
tar -zcvf product.tar.gz *

构建后操作
点击增加构建后操作,选中Send build artifacts over SSH

在这里插入图片描述

在这里插入图片描述

# Source files
dist/product.tar.gz
#Remove prefix
dist
#Remote directory
usr/home/web/test
#Exec command
cd /home/web/test
tar -zxvf product.tar.gz
rm -f product.tar.gz 

参数说明

字段描述
Source files项目构建后在工作空间的相对目录(我这边构建时候打包的文件名是ocrweb,所以填写的 dist/product.tar.gz)
Remove prefix去前缀 (如果不去除的话,会在发布的目录后面新增dist目录)
Remote directoty发布的目录 (系统配置的路径/这个目录, 由于我配置ssh根路径写了/,所以我这里写的路径是home/web/test)
Exec command发布完执行的命令 (先cd切换到文件发布的目录,然后执行解压操作,然后删除压缩包)

配置完成后,保存,然后点击立即构建,查看控制台日志,看到SSH: Transferred 1 file(s)
Finished: SUCCESS就代表文件已经上传到远程服务了
在这里插入图片描述

参考博客:
1、https://blog.csdn.net/ming19951224/article/details/109633920
2、https://blog.csdn.net/BThinker/article/details/124178670

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

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

相关文章

2023年湖北武汉初级、中级工程师职称评审条件和评审流程是什么呢?

职称分三个级别:初级、中级、高级,原则是需要一级一级的,但是有的地方可以跨级申报。 一、湖北武汉初级、中级工程师职称评定条件: 助理职称评定条件: 1.大学本科毕业,从事专业技术工作1年以上。 2.大学专…

Java Web 实战 02 - 多线程基础篇(1)

Java Web 实战 02 - 多线程基础篇 - 1一 . 认识线程1.1 概念1.1.1 什么是线程?1.1.2 为什么要有多个线程?1.1.3 进程和线程的区别(面试题)1.2 第一个多线程程序1.3 创建线程1.3.1 继承Thread类1.3.2 实现Runnable接口1.3.3 继承 Thread 类 , 使用匿名内部类1.3.4 实现 Runnab…

Linux嵌入式开发 | 汇编驱动LED(1)

文章目录🚗 🚗Linux嵌入式开发 | 汇编驱动LED(1)🚗 🚗初始化IO🚗 🚗STM32🚗 🚗使能GPIO时钟🚗 🚗设置IO复用🚗 &#x1f6…

3.5多线程

一.线程的状态1.NEW安排了工作,还未开始行动把Thread对象创建好了,但是还没有调用startjava内部搞出来的状态,与PCB的状态没什么关系2.TERMINATED工作完成了操作系统的线程执行完毕,销毁了,但是Thread对象还在,获取的对象3.RUNNABLE可以工作的,又可以分为正在工作中和即将开始工…

聊聊内存那些事(基于单片机系统)

单片机的RAM和ROM单片机的ROM,叫只读程序存储器,是FLASH存储器构成的,如U盘就是FLASH存储器。所以,FLASH和ROM是同义的。单片机的程序,就是写到FLASH中了。而RAM是随机读/写存储器,用作数据存储器&#xff…

SpringBoot笔记(一)入门使用

一、为什么用SpringBootSpringBoot优点创建独立Spring应用内嵌web服务器自动starter依赖,简化构建配置自动配置Spring以及第三方功能提供生产级别的监控、健康检查及外部化配置无代码生成、无需编写XMLSpringBoot缺点人称版本帝,迭代快,需要时…

电路基础(1)电路模型和电路定律

电路中的电压、电流之间具有两种约束,一种是由电路元件决定的元件约束;另一种是元件间连接而引入的几何约束(就是拓扑约束),后者由基尔霍夫定律来表达。基尔霍夫定律是集总参数电路的基本定律。 1.电路和电路模型电源又…

电路模型和电路定律(2)——“电路分析”

各位CSDN的uu们你们好呀,好久没有更新电路分析的文章啦,今天来小小复习一波,之前那篇博客,小雅兰更新了电路的历史以及电压电流的参考方向,这篇博客小雅兰继续!!! 电阻元件 电压源和…

FFMPEG 安装教程windowslinux(CentOS版)

ps: 从笔记中迁移至blog 版本概述 Windows 基于win10 Linux 基于CentOS 7.6 一.Windows安装笔记 1.下载安装 https://ffmpeg.org/download.html 2 解压缩,拷贝到需要目录,重命名 3 追加环境变量 echo %PATH%setx /m PATH "%PATH%;F:\dev_tools\…

用C/C++制作一个简单的俄罗斯方块小游戏

用C/C制作一个简单的俄罗斯方块小游戏 用C/C制作一个简单的俄罗斯方块小游戏 0 准备1 游戏界面设计 1.1 界面布局1.2 用 EasyX 显示界面1.3 音乐播放 2 方块设计 2.1 方块显示2.2 随机生成一个方块2.3 方块记录 3 方块移动和旋转 3.1 方块的移动3.2 方块的旋转3.3 方块的碰撞和…

基于 WebSocket、Spring Boot 教你实现“QQ聊天功能”的底层简易demo

目录 前言 一、分析 1.1、qq聊天功能分析 1.2、WebSocket介绍 1.2.1、什么是消息推送呢? 1.2.2、原理解析 1.2.3、报文格式 二、简易demo 2.1、后端实现 2.1.1、引入依赖 2.1.2、继承TextWebSocketHandler 2.1.3、实现 WebSocketConfigurer 接口 2.2、…

LeetCode096不同的二叉搜索树(相关话题:卡特兰数)

目录 题目描述 解题思路 代码实现 进出栈序列理解卡特兰数分析策略 相关知识 参考文章 题目描述 给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。 示例 1: …

《程序员面试金典(第6版)》面试题 02.07. 链表相交

题目描述 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返回结果…

socket本地多进程通信基本使用方法和示例

目录 前言: socket是什么 socket基本原理框图 socket基本函数 1 socket() 函数 2 bind()函数 3 connect()函数 4 listen() 函数 5 accept() 函数 6 read() write() send() recv()函数 7 close()函数 8 字节序转换(hton) 示例代码 …

使用 Pulumi 打造自己的多云管理平台

前言在公有云技术与产品飞速发展的时代,业务对于其自身的可用性提出了越来越高的要求,当跨区域容灾已经无法满足业务需求的情况下,我们通常会考虑多云部署我们的业务平台,以规避更大规模的风险。但在多云平台部署的架构下&#xf…

埃安自研版图扩至夸克电驱,动力研发团队已超1000人

埃安的三电自研版图正在扩大。3月3日,广汽集团旗下埃安发布了一项名为“夸克电驱”的技术产品,相比主流电驱体积减少一倍,同时电机功率密度比主流电驱增加了一倍。此前,比亚迪刚刚发布易四方动力系统,特斯拉也在投资者…

HTML常见标签

文章目录一、HTML基础标签注释标签标题标签段落标签换行标签格式化标签图片、音频、视频标签超链接标签列表标签表格标签布局标签表单标签表单标签概述form标签属性表单项标签综合案例一、HTML基础标签 基础标签就是和文字相关的标签 标签描述<h1> ~ <h6>定义标题…

【项目管理】晋升为领导后,如何开展工作?

兵随将转&#xff0c;作为管理者&#xff0c;你可以不知道下属的短处&#xff0c;却不能不知道下属的长处。晋升为领导后&#xff0c;如何开展工作呢&#xff1f; 金九银十&#xff0c;此期间换工作的人不在少数。有几位朋友最近都换了公司&#xff0c;职位得到晋升&#xff0c…

前端——1.相关概念

这篇文章主要介绍前端入门的相关概念 1.网页 1.1什么是网页&#xff1f; 网站&#xff1a;是指在因特网上根据一定的规则&#xff0c;使用HTML等制作的用于展示特定内容相关的网页集合 网页&#xff1a;是网站中的一“页”&#xff0c;通常是HTML格式的文件&#xff0c;它要…

JAVA后端部署项目三步走

1. JAVA部署项目三步走 1.1 查看 运行的端口 lsof -i:8804 &#xff08;8804 为端口&#xff09; 发现端口25111被监听 1.2 杀死进程,终止程序 pid 为进程号 kill -9 pid 1.3 后台运行jar包 nohup java -jar -Xms128M -Xmx256M -XX:MetaspaceSize128M -XX:MaxM…