jenkins发布文件到远程服务器

news2024/9/30 23:04:01

jenkins安装

安装教程

后台启动脚本

创建脚本:start_jenkins.sh

ls
for pid in $(ps -ef|grep jenkins.war|grep -v grep|cut -c 10-16);
do
    echo $pid;
    kill -9 $pid;
done;

nohup  java -Djava.awt.headless=true -jar /usr/local/jenkins/jenkins.war --webroot=/var/cache/jenkins/war --httpPort=8080 > test.log 2>& 1 &

关于权限

可以使用插件:Role-based Authorization Strategy
安装成功后,按照如下图配置:

基础配置

在这里插入图片描述

角色管理

在这里插入图片描述

管理角色

在这里插入图片描述

项目角色

注意:正则问题
在这里插入图片描述

授权

在这里插入图片描述

关于配置(Manage Jenkins)

工具(Tools)

因为我这里是,在服务器安装了需要的工具,如jdk,maven,git,nodejs等,所以这里要配置自定义路径,如果选择自动安装也可以。
安装工具之后,尽量把命令行全都配置进系统变量中,/etc/profile:
在这里插入图片描述

因为需要前端打包,所以可以提前全局进行一些前端的命令的配置,这样就不需要配置进每个项目中了,例如,pnpm:

npm config set registry https://registry.npmjs.org
npm install -g pnpm

Maven 配置

在这里插入图片描述

JDK安装

在这里插入图片描述

Git 安装

在这里插入图片描述

Maven 安装

在这里插入图片描述

系统配置(System),重点

因为,不是本地发布,所以需要将打包好的文件,上传到远程服务器(连接可以使用密码,也可以使用ssh-key),此处使用的是ssh-key。
里面有一些例如管理员邮件,或者其他非重要信息,就不贴图了。。。
配置入口如下:
在这里插入图片描述

Publish over SSH(重点)

这里的配置是重点,主要配置Jenkins服务器的key和远程服务器的相关信息
安装插件:Publish Over SSH

Jenkins本机的信息

生成ssh-key的时候,如果有密码,可以将密码填入到“Passphrase”,否则可以将生成的“私钥”填入“Key”中,格式如下:
在这里插入图片描述

SSH Servers

这里配置远程的服务器
可以看到没有任何Key或者密码的填写,放心,Jenkins会帮我们搞定一切,如果不想用key的方式,大家可以去“高级”里面,把“Use password authentication, or use a different key”勾上,自己去填写服务器的密码等信息,当然里面还有一些服务器的基础配置信息,都是默认的。
Remote Directory:远程文件夹,默认会把文件传输到这个文件夹底下
在这里插入图片描述

Ok,到这里,Jenkins相关的所有配置就完成了。。。
嗯?是不是忘了一件很重要的事,Jenkins跟服务器连接的key去哪里了?
So,接下来的重点就是在key的生成

System-Publish over SSH 的相关key

确保权限

查看Jenkins用户的权限是否正确:vim /etc/passwd
在这里插入图片描述

生成本机的公钥,私钥,远程服务器的key

默认的文件夹应该是在:/var/lib/jenkins/.ssh,生成的一些文件可以在这里查看,上面配置的Jenkins服务器的秘钥,就在文件"id_rsa"中
在这里插入图片描述

生成秘钥

ssh-keygen -t rsa

生成远程服务器的key

与远程服务器免密,这一次需要输入密码,若有多个,就执行多次,会把key写入到默认的known_hosts中

ssh-copy-id -i id_rsa.pub 用户名@服务器IP 

OK,OK,到这里真的所有基础配置都完成了,后面就愉快的去打包部署吧。。。哈哈哈,牛马拿到一个趁手的工具,也是相当开心的

后端打包部署

源码管理

在这里插入图片描述

Build Steps

在这里插入图片描述

构建后操作

下面的是Jenkins服务器中的操作和配置
在这里插入图片描述
Exec command是远程服务器中要执行的命令
app2是我在Publish over SSH 中配置的远程服务器的默认文件夹,test代表的是在app2中还会创建一个远程文件夹

下面的命令很重要:
source /etc/profile
因为可能连接过去后会丢失命令的环境,所以需要刷新一次系统变量

在这里插入图片描述

前端打包部署

源码管理

和后端的一样,都是配置git信息

Build Steps

在这里插入图片描述

构建后操作

下面的是Jenkins服务器中的操作和配置
在这里插入图片描述
Exec command是远程服务器中要执行的命令
html2是我在Publish over SSH 中配置的远程服务器的默认文件夹,test代表的是在html2中还会创建一个远程文件夹
在这里插入图片描述

OK,OK,OK,这次是真的真的结束了。。。

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

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

相关文章

Linux入门攻坚——30、sudo、vsftpd

su:Switch User,即切换用户 su [-l user] -c ‘COMMAND’ 如:su -l root -c ‘COMMAND’ 如果没有指定-l user,则默认是root sudo:可以让某个用户不需要拥有管理员的密码,而可以执行管理员的权限。 需…

RabbitMQ练习(Topics)

1、RabbitMQ教程 《RabbitMQ Tutorials》https://www.rabbitmq.com/tutorials 2、环境准备 参考:《RabbitMQ练习(Hello World)》和《RabbitMQ练习(Work Queues)》。 确保RabbitMQ、Sender、Receiver、Receiver2容器…

云原生向量数据库 PieCloudVector 助力多模态大模型 AI 应用

全球 AGI(人工通用智能)市场快速增长的背景下,企业应用成为推动这一领域发展的主要力量,企业如何选择合适的技术来支撑其智能化转型显得尤为重要。在墨天轮《数据库技术如何增强 AI 大模型?》数据库沙龙活动中&#xf…

C语言典型例题55

《C程序设计教程(第四版)——谭浩强》 题目: 例题4.7 兔子的繁殖。这是一个有趣的古典问题:有一对兔子,从出生后的第3个月开始起每个月都生一对兔子。小兔子长到第3个月又生一对兔子。假设所有兔子都不死,…

深度解读SGM41511电源管理芯片I2C通讯协议REG08寄存器解释

REG08 是 SGM41511 的第九个寄存器,地址为 0x08。这是一个只读(R)寄存器,用于报告各种状态信息。上电复位值(PORV)为 xxxxxxxx,表示上电时的初始状态是不确定的。这个寄存器提供了充电器当前状态…

HarmonyOS--合理使用页面间转场

一、概述 页面间转场是用户从一个页面切换到另一个页面时的过程,一个无缝流畅的转场动效可以提升用户的交互体验。从主页到详情页、从列表页到结果页都需要去设置一些转场动效使得用户体验更加流畅。基于用户行为和应用设计模式,我们总结出了一些常见的转…

C#/.net core “hello”.IndexOf(“\0”,2)中的坑

先想想看,你认为下面代码返回值是多少? "hello".IndexOf("", 2); "hello".IndexOf("\0", 2); "hello".IndexOf(\0, 2); 今天和大家分享关于.net core中与字符相关的一些奇怪问题。 首先我们先以.N…

Golang | Leetcode Golang题解之第383题赎金信

题目&#xff1a; 题解&#xff1a; func canConstruct(ransomNote, magazine string) bool {if len(ransomNote) > len(magazine) {return false}cnt : [26]int{}for _, ch : range magazine {cnt[ch-a]}for _, ch : range ransomNote {cnt[ch-a]--if cnt[ch-a] < 0 {r…

大模型知识检索RAG业务实践实践(初级篇)

大模型知识检索RAG业务实践实践(初级篇) 1.知识检索大图 大模型是现在一个非常热门的话题,大模型表现出的生成能力也是非常惊艳。但是强如 GPT4 这样的大模型,它在知识更新和幻觉上也会存在问题。比如说我们问互联网行业有什么大事,GPT4 的回答是三年前的内容。主要是说疫…

机械学习—零基础学习日志(如何理解概率论12)

假设检验 假设检验是有一些参数&#xff0c;已知条件&#xff0c;让你检验某种假设是否成立。 我们通过具体的题目来说明&#xff1a; 这里我们需要确认使用什么公式&#xff1a; 使用下面的公式如下图&#xff1a; 题目中&#xff0c;以21作为分界线&#xff0c;所以我们将是…

用manim证明函数的左右极限

http://t.csdnimg.cn/2pVdFhttp://t.csdnimg.cn/2pVdF在上一节的最后两个示例中&#xff0c;我们看到了两个不存在的限制。然而&#xff0c;对于每个例子来说&#xff0c;每个限制不存在的原因是不同的。 我们看一下下面的例子&#xff1a; 极限不存在&#xff0c;因为函数没有…

Redis基本全局命令

文章目录 get和setkeysexistsdelexpirettltype redis全局命令&#xff1a; redis支持很多种数据结构&#xff0c;整体上来说。redis是键值对结构&#xff0c;key固定就是字符串&#xff0c;value实际上就会有很多种&#xff0c;比如说&#xff1a; 字符串哈希表列表有序集合 …

linux系统编程-网络-tcp(29)

C/S B/S P2p模型 在Linux系统编程中&#xff0c;C/S&#xff08;Client/Server&#xff0c;客户端/服务器&#xff09;和B/S&#xff08;Browser/Server&#xff0c;浏览器/服务器&#xff09;模型是两种常见的架构模式&#xff0c;用于构建分布式应用程序。它们在设计和实现上…

C语言 | Leetcode C语言题解之第384题打乱数组

题目&#xff1a; 题解&#xff1a; typedef struct {int* num;int* src;int numsize; } Solution;Solution *obj NULL;Solution* solutionCreate(int* nums, int numsSize) {if (obj ! NULL) {return obj;}Solution *obj (Solution*)malloc(sizeof(Solution));obj->nums…

#C++ 笔记二

四、运算符重载 1.友元 1.1 概念 类实现了数据的隐藏和封装&#xff0c;类的数据成员一般定义为私有成员&#xff0c;仅能通过类的公有成员函数才能进行读写。 如果数据成员定义成公共的&#xff0c;则又破坏了封装性。但是在某些情况下&#xff0c;需要频繁的读写数据成员…

Java 7.3 - 分布式 id

分布式 ID 介绍 什么是 ID&#xff1f; ID 就是 数据的唯一标识。 什么是分布式 ID&#xff1f; 分布式 ID 是 分布式系统中的 ID&#xff0c;它不存在于现实生活&#xff0c;只存在于分布式系统中。 分库分表&#xff1a; 一个项目&#xff0c;在上线初期使用的是单机 My…

2-80 基于matlab-GUI,实现kalman滤波对目标物的位置进行检测跟踪

基于matlab-GUI,实现kalman滤波对目标物的位置进行检测跟踪。检测汽车中心和最大半径&#xff0c;与背景差分选择较大差异的区域进行形态学处理&#xff0c;用冒泡法对目标面积从大到小排序。程序已调通&#xff0c;可直接运行。 2-80 kalman视频跟踪滤波 - 小红书 (xiaohongsh…

光学涡旋Talbot阵列照明器的matlab模拟与仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 光学涡旋 Talbot 阵列照明器是一种利用光学涡旋&#xff08;Optical Vortex&#xff09;和 Talbot 效应&#xff08;Talbot Effect&#xff09;相结合的技术&…

【HTML源码】上传即可使用的在线叫号系统源码

这个叫号系统的过程是这样的 接了一个任务&#xff0c;某学校要对学生进行逐个面试&#xff0c;希望能有类似医院门诊那种叫号系统。 条件&#xff1a;首先说硬件&#xff0c;就是教室里边一台笔记本电脑&#xff0c;同屏到教室外面的电视机。 需求&#xff1a;软件需求是可…

汉诺塔递归解决思路图解分析,python代码实现

目录 4.假设四层汉诺塔&#xff0c;n4&#xff0c;利用整体思想分解为两层的情况 3.分解到n3 3.1 分解上面n4时第一个步骤&#xff1a; 3.2 分解上面n4时第三个步骤&#xff1a; 2.继续分解到n2 &#xff08;同理略&#xff09; 1.当分解到n1 python代码 问题&#xff1…