jenkins发布文件到远程服务器

jenkins安装

安装教程

后台启动脚本

创建脚本:start_jenkins.sh

ls
for pid in $(ps -ef|grep jenkins.war|grep -v grep|cut -c 10-16);
doecho $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.rhkb.cn/news/411860.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

游戏分享网站|基于SprinBoot+vue的游戏分享网站系统(源码+数据库+文档)

游戏分享网站 目录 基于SprinBootvue的游戏分享网站 一、前言 二、系统设计 三、系统功能设计 5.1系统功能模块 5.2后台登录 5.2.1管理员功能模块 5.2.2用户功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#x…

SpringCloud乐尚代驾学习笔记:环境搭建(二)

文章目录 1、前端环境1.1、注册微信开发者账号1.2、开通服务与插件1.3、微信开发者工具使用 2、服务器端环境2.1、安装mysql2.2、安装rabbitmq2.3、安装redis2.4、安装nacos2.5、安装minio 3、导入初始化项目 1、前端环境 1.1、注册微信开发者账号 虽然开发微信小程序可以使用…

牛客NC313 两个数组的交集 C++

牛客NC313 两个数组的交集 C 思路🤔: 用哈希表存储第一个数组,再和第二个数组对比,对比成功就添加到新的数组中,之后将哈希表的该位置变为false,防止重复添加。这里数据范围仅有1000,所以我们可…

nginx转发接口地址【非常实用】

使用场景 由于客户的需求是要访问一个外网接口 比如http://58.20.57.190:6652 实例 http://58.20.57.190:6652//uploadBasePatient?Barcode1000000073&customerCode1 比如外网才能访问,科室电脑是访问不了外网的 我们就需要中间在一个既有外网又有内网的前置…

少儿编程入门,Scratch、Python与C++,谁能成为孩子的首选语言?

编程已不再是专业人士的专利,而是成为了一项基本技能。对于孩子们来说,学习编程不仅能提高逻辑思维能力,还能为他们的未来职业生涯打下坚实基础。那么问题来了,面对Scratch、Python和C这三门编程语言,究竟哪一款更适合…

Datawhale AI夏令营

一、物体检测算法 物体检测算法主要分为两类:One-Stage(一阶段)和Two-Stage(两阶段)模型。 二、One-Stage目标检测算法 定义:One-Stage目标检测算法是一种直接在图像上进行目标检测的方法,无…

Docker原理及实例

目录 一 Docker简介及部署方法 1.1 Docker简介 1.1.1 什么是docker? 1.1.2 docker在企业中的应用场景 1.1.3 docker与虚拟化的对比 1.1.4 docker的优势 2 部署docker 2.1 容器工作方法 2.2 部署第一个容器 2.2.1 配置软件仓库 2.2.2 安装docker-ce并启动服…

8月28日

思维导图 作业&#xff1a; 使用C手动封装一个顺序表&#xff0c;包含成员数组一个&#xff0c;成员变量N个 代码&#xff1a; #include <iostream>using namespace std;using datatype int; #define MAX 30struct SeqList {private:datatype *data;int size 0;int l…

SpringBoot3与AOP完美结合:轻松追踪用户操作,实现精准日志记录

程序员必备宝典https://tmxkj.top/#/ 1.pom文件 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency><dependency><groupId>com.alibaba</groupId&g…

Spring八股文

重点 描述一下bean的生命周期 简述版 调用构造器 或者是通过工厂的方式创建Bean对象给bean对象的属性注入值调用初始化方法&#xff0c;进行初始化&#xff0c; 初始化方法是通过init-method来指定的.使用IOC容器关闭时&#xff0c; 销毁Bean对象 详细&#xff1a; 1. 实例化 …

Qt QCustomPlot画色阶图

工作中用到QCustomPlot画曲线图和色阶图&#xff0c;并且在色阶图上添加文字&#xff0c;圆圈或者几条线段画一些图形&#xff0c;这里写个简单的例子把这几个功能记录一下&#xff0c;代码在这里&#xff1a; https://download.csdn.net/download/Sakuya__/89681279https://…

ggml 简介

ggml是一个用 C 和 C 编写、专注于 Transformer 架构模型推理的机器学习库。该项目完全开源&#xff0c;处于活跃的开发阶段&#xff0c;开发社区也在不断壮大。ggml 和 PyTorch、TensorFlow 等机器学习库比较相似&#xff0c;但由于目前处于开发的早期阶段&#xff0c;一些底层…

『功能项目』怪物受击后显示受击状态UI【12】

本专栏每10章会做一次项目优化&#xff0c;但不影响具体功能 我们可以打开优化前的项目10也可以打开优化后的项目11 双击King或者怪物熊预制体 - 进入预制体空间后创建一个Image改名为StateUI01 代表第一个受击状态 修改Canvas的渲染模式 - 改为世界WorldSpace 调节Image&…

3分钟千人被裁,IBM中国 “灭霸式“裁员背后原因?

2024年8月23日&#xff0c;IMB即有员工传出“无法访问系统”&#xff0c;“无法连接到公司网络”的消息&#xff0c;后续传出裁员的传闻。 图片来源网络 2024年8月26日周一&#xff0c;IBM召开3分钟的会议&#xff0c;宣布彻底关闭IBM中国研发部门&#xff0c;之后直接切断会议…

【Go高性能】测试(单元测试、基准测试)

Go测试 一、分类1. 单元测试2. 基准测试 二、基准测试1. 介绍2. 基准测试基本原则3. 使用testing包构建基准测试3.1 执行基准测试3.2 基准测试工作原理3.3 改进基准测试的准确性3.3.1 -benchtime3.3.2 -count3.3.3 -cpu 4. 使用benchstat工具比较基准测试(可跳过&#xff09;4.…

SpringBoot日常:Spring之@PostConstruct解析

简介 spring的Bean在创建的时候会进行初始化&#xff0c;而初始化过程会解析出PostConstruct注解的方法&#xff0c;并反射调用该方法。 PostConstruct 的使用和特点 只有一个非静态方法能使用此注解&#xff1b;被注解的方法不得有任何参数&#xff1b;被注解的方法返回值必…

数据主权与隐私保护的深入探讨

随着数字化进程的加速&#xff0c;数据已成为当今世界的重要资源。数据主权和隐私保护这两个概念也越来越受到关注。数据主权涉及到国家对数据的控制权和管理权&#xff0c;而隐私保护则关乎个人数据的安全性和隐私权利。两者相互交织&#xff0c;共同塑造了数字时代的法律、经…

[RIS]GRES: Generalized Referring Expression Segmentation

1. BaseInfo TitleGRES: Generalized Referring Expression SegmentationAdresshttps://arxiv.org/pdf/2306.00968Journal/TimeCVPR2023Author南洋理工Codehttps://github.com/henghuiding/ReLARead20240829TableVisonLanguage 2. Creative Q&A 考虑结果多目标和无目标&…

2024软考:一场与“难”共舞的奇妙冒险,你值得拥有!

在这个时代&#xff0c;如果说有什么考试能让IT界的勇士们闻风丧胆&#xff0c;又爱又恨&#xff0c;那软考绝对能C位出道&#xff0c;成为众多技术大佬心中的“白月光”与“朱砂痣”。随着岁月悠悠&#xff0c;2024年的软考似乎又悄悄地在难度上动了点小心思&#xff0c;让人不…

【C++ Primer Plus习题】6.5

问题: 解答: #include <iostream> using namespace std;int main() {float salary 0;float tax 0;while (salary>0){cout << "请输入您的工资:";cin >> salary;if (cin.fail())break;if (salary < 5000){tax 0;}else if (salary < 15…