jenkins发布文件到远程服务器

jenkins安装

安装教程

后台启动脚本

创建脚本:start_jenkins.sh

powershell 复制代码
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:

bash 复制代码
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 "中

生成秘钥

bash 复制代码
ssh-keygen -t rsa

生成远程服务器的key

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

bash 复制代码
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,这次是真的真的结束了。。。

相关推荐
oMcLin1 天前
如何在Rocky Linux 8.5上部署并优化Jenkins流水线,支持跨平台CI/CD自动化与容器化构建?
linux·ci/cd·jenkins
无心水1 天前
【分布式利器:腾讯TSF】7、TSF高级部署策略全解析:蓝绿/灰度发布落地+Jenkins CI/CD集成(Java微服务实战)
java·人工智能·分布式·ci/cd·微服务·jenkins·腾讯tsf
记得开心一点嘛2 天前
Elasticsearch
运维·jenkins
oMcLin2 天前
如何在 Ubuntu 22.04 上部署并优化 Jenkins 2.x 流水线,提升持续集成与自动化测试的效率?
ubuntu·ci/cd·jenkins
世界尽头与你2 天前
CVE-2024-43044_ Jenkins agent connections 文件读取漏洞
安全·网络安全·渗透测试·jenkins
tianyuanwo2 天前
TERM变量迷思:从Jenkins节点连接差异看终端仿真与构建系统的微妙关系
运维·ssh·jenkins·java web·term
一勺菠萝丶2 天前
Jenkins 打包显示 SUCCESS 但产物不全?日志出现 Killed 的排查与解决(小白版)
运维·jenkins
Anakki2 天前
企业级 Elastic Stack 集成架构:Spring Boot 3.x 与 Elasticsearch 8.x 深度实践指南
运维·jenkins·springboot·elastic search
一只往上爬的蜗牛2 天前
【Jenkins】Jenkins 中如何在 Build Artifacts 显示自动化测试生成的文件
运维·jenkins
2501_906150563 天前
开源问卷平台DWSurvey开发配置记录
运维·开源·jenkins