【OpenSSH+Jenkins搭建项目自动化部署】

news2024/12/23 16:58:26

OpenSSH+Jenkins搭建项目自动化部署

  • 一、Windows安装OpenSSH
    • 1.下载
    • 2.解压
    • 3.安装
    • 4.启停服务
    • 5.SSH免密登录
  • 二、Jenkins安装
    • 1.下载
    • 2.安装启动
    • 3.登录
  • 三、项目自动化部署
    • 1.SSH配置
    • 2.项目配置
    • 3.权限控制

一、Windows安装OpenSSH

1.下载

https://github.com/PowerShell/Win32-0penSSH/releases
下载最新的 OpenSSH安装包,如:openSSH-Win64.zip

2.解压

将压缩包解压到 C:\Program Files\OpenSSH

3.安装

管理员运行cmd 进入目录C:\Program Files\OpenSSH
执行命令

powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1

4.启停服务

#停止服务
net stop sshd

#启动服务
net start sshd

5.SSH免密登录

管理员运行cmd 进入目录C:\Program Files\OpenSSH
执行命令

ssh-keygen

生成密钥对
在当前用户的文件夹下会生成一对秘钥
在这里插入图片描述
将文件名 id_ed25519.pub 修改成 authorized_keys

修改 authorized_keys 文件权限,保留system和用户
在这里插入图片描述
修改配置文件
文件路径 C:\ProgramData\ssh\sshd config

# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options override the
# default value.

#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

#HostKey __PROGRAMDATA__/ssh/ssh_host_rsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_dsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_ecdsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_ed25519_key

# Ciphers and keying
#RekeyLimit default none

# Logging
#SyslogFacility AUTH
#LogLevel INFO

# Authentication:

#LoginGraceTime 2m
#PermitRootLogin prohibit-password
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

PubkeyAuthentication yes
PubkeyAcceptedKeyTypes  +ssh-rsa

# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
# but this is overridden so installations will only check .ssh/authorized_keys
AuthorizedKeysFile	.ssh/authorized_keys

#AuthorizedPrincipalsFile none

# For this to work you will also need host keys in %programData%/ssh/ssh_known_hosts
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes

# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication no
#PermitEmptyPasswords no

# GSSAPI options
#GSSAPIAuthentication no

#AllowAgentForwarding yes
#AllowTcpForwarding yes
#GatewayPorts no
#PermitTTY yes
#PrintMotd yes
#PrintLastLog yes
#TCPKeepAlive yes
#UseLogin no
#PermitUserEnvironment no
#ClientAliveInterval 0
#ClientAliveCountMax 3
#UseDNS no
#PidFile /var/run/sshd.pid
#MaxStartups 10:30:100
#PermitTunnel no
#ChrootDirectory none
#VersionAddendum none

# no default banner path
#Banner none

# override default of no subsystems
Subsystem	sftp	sftp-server.exe

# Example of overriding settings on a per-user basis
#Match User anoncvs
#	AllowTcpForwarding no
#	PermitTTY no
#	ForceCommand cvs server

#Match Group administrators
#       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

防火墙打开 22 端口,并将生成的秘钥对里面的私钥拷贝到客户端中(更换秘钥后需要重启SSH服务),路径同服务端。

二、Jenkins安装

1.下载

Jenkins由Java语言编写而成,安装包即是一个war包。因此,Jenkins的运行启动依赖于Java环境,同时,它是免安装的。
https://www.jenkins.io/download/

2.安装启动

命令行:切换到jenkins.war所在目录,执行命令

java -jar jenkins.war

如果出现端口冲突相关报错,则可以修改jenkins的端口

java -jar jenkins.war --httpPort=8088

出现以下信息表示启动成功
在这里插入图片描述

3.登录

根据自己使用的端口,在浏览器界面打开,可以加载出jenkins的登录界面,如果没有指定端口,默认是8080端口,打开后页面如下,需要初始化密码。
在这里插入图片描述
进入到指定的用户文件夹中

C:\Users\XXX\.jenkins\secrets\initialAdminPassword

打开这个文件,里面会有一串密码,把它复制出来,回到解锁Jenkins页面。

输入密码后点击继续,这时候来到了新手入门界面,自定义Jenkins
在这里插入图片描述
点击安装之后,会让你创建第一个管理员用户,这里可以根据你的实际需求来设置,也可以点击使用admin账户继续。
在这里插入图片描述
点击保存并完成后,我们的Jenkins就已经准备就绪了,可以愉快地使用了。

三、项目自动化部署

1.SSH配置

jenkins安装SSH插件:Manage Jenkins > Plugins
在这里插入图片描述
插件装好后重启jenkins , 进入 Manage Jenkins > System
找到 Publish over SSH
在这里插入图片描述
SSH Servers里面配置SSH的服务端信息,包括自定义的服务器名称服务器IP地址服务器登录用户名、高级选项中的SSH客户端私钥(跟本机SSH公钥成对生成的秘钥中的私钥);配置完成后可以点击右下角的 “Test Configuration” 测试是否能够连接成功。
在这里插入图片描述

2.项目配置

新建Item,选择构建一个自由风格的软件项目 Freestyle project
在这里插入图片描述
源码管理,添加git仓库信息以及用户账号密码信息。
在这里插入图片描述
Build Steps 构建步骤配置
我们是windows服务器环境,所以选择windows相关的执行命令Execute Windows batch command

#下载依赖
npm i

#打包
npm run build:pro

#进入项目文件夹
cd C:\ProgramData\Jenkins\.jenkins\workspace\EnergyAllInOne.client.beta

#删除原有的压缩包
del ZTEnergyAllInOneWeb.zip

#构建新的压缩包
zip -r ZTEnergyAllInOneWeb.zip ZTEnergyAllInOneWeb

在这里插入图片描述
图中是前端项目的打包相关命令,其他项目可以自行配置。

构建后步骤配置 选择执行命令类型Send build artifacts over SSH
配置SSH Server 服务器选择(SSH配置中配置的)
Transfer Set
在这里插入图片描述
信息填写完成后保存即可回到首页进行构建。
在这里插入图片描述
如果构建失败,可以点击构建历史进入查看具体的构建信息
在这里插入图片描述

3.权限控制

参考博客:jenkins 权限控制(用户只能看指定的项目)

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

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

相关文章

Redis篇----第六篇

系列文章目录 文章目录 系列文章目录前言一、Redis 的持久化机制是什么?各自的优缺点?二、Redis 常见性能问题和解决方案:三、redis 过期键的删除策略?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章…

ORM中常用的字段和参数,正反向概念

django表查询测试环境搭建 首先,在此之前我们先来回顾一下之前学习的orm内容 1. django自带一个小型的sqlite3的小型数据库 但是这个数据库的功能非常有限,并且针对日期类型的数据兼容性很差 2. 切换数据库数据(MySQL) 2.1 在django1.x版本中你需要在_…

win10编译openjdk源码

上篇文章作者在ubuntu系统上实践完成openjdk源码的编译,但是平常使用更多的是window系统,ubuntu上编译出来JDK无法再windows上使用。所以作者又花费了很长时间在windows系统上完成openjdk源码的编译,陆续花费一个月的时间终于完成了编译。 本…

简单mock server模拟用户请求给小程序提供数据

整理小程序代码时发现一此小程序离开了mock-server基本上没有办法显示了,因此用node,express来满足给小程序提供演示数据的功能 const express require(express); const { createCanvas, Image } require(canvas); const fs require(fs); const path require(path);…

Sora横空出世!AI将如何撬动未来?

近日,OpenAI 发布首个视频生成“Sora”模型,该模型通过接收文字指令,即可生成60秒的短视频。 而在2022年末,同样是OpenAI发布的AI语言模型ChatGPT,简化了文本撰写、创意构思以及代码校验等任务。用户仅需输入一个指令&…

uni-app 经验分享,从入门到离职(四)——页面栈以及页面跳转的 API(开发经验总结)

文章目录 📋前言⏬关于专栏 🎯什么是页面栈🧩页面跳转方法📌 uni.navigateTo(OBJECT)📌 uni.redirectTo(OBJECT)📌 uni.reLaunch(OBJECT)📌 uni.switchTab(OBJECT)📌 uni.navigateBa…

WPF 启动项目 Grid、StackPanel 布局

WPF 启动项目 <!--x:Class"WPF_Study.App" 对应类&#xff1a;WPF_Study.App--> <!--xmlns:local"clr-namespace:WPF_Study" 命名空间&#xff1a;WPF_Study--> <Application x:Class"WPF_Study.App"xmlns"http://schema…

船运物流管理系统|基于springboot船运物流管理系统设计与实现(源码+数据库+文档)

船运物流管理系统目录 目录 基于springboot船运物流管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员登录 2、货运单管理 3、公告管理 4、公告类型管理 5、新闻管理 6、新闻类型管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 …

WebServer -- 定时器处理非活动连接(上)

目录 &#x1f34d;函数指针 &#x1f33c;基础知识 &#x1f419;整体概述 &#x1f382;基础API sigaction 结构体 sigaction() sigfillset() SIGALRM, SIGTERM 信号 alarm() socketpair() send() &#x1f4d5;信号通知流程 统一事件源 信号处理机制 &#x…

政安晨:【示例演绎机器学习】(一)—— 剖析神经网络:学习核心的Keras API

打开这篇文章&#xff0c;相信您已经了解了TensorFlow的一些基础知识&#xff0c;可以用它从头开始实现一个简单模型。 如果您对这些概念还不是太清晰&#xff0c;可以浏览一下我这个栏目中的相关文章&#xff1a; 政安晨的机器学习笔记http://t.csdnimg.cn/DHcyL 尤其是其中…

Android进阶(二十九) 走近 IntentFilter

文章目录 一、什么是IntentFilter &#xff1f;二、IntentFilter 如何过滤隐式意图&#xff1f;2.1 动作测试2.2 类别测试2.3 数据测试 一、什么是IntentFilter &#xff1f; 如果一个 Intent 请求在一片数据上执行一个动作&#xff0c; Android 如何知道哪个应用程序&#xf…

ArcgisForJS如何访问Arcgis Server?

文章目录 0.引言1.准备ArcGIS相关工具2.创建含有ArcSDE地理数据库的MXD文件3.注册ArcSDE地理数据库4.发布数据到Arcgis Server5.ArcgisForJS访问ArcGIS Server数据 0.引言 ArcGIS API for JavaScript 是一个用于在Web和移动应用程序中创建交互式地图和地理空间分析应用的库。它…

OceanBase数据迁移-从MySQL导入数据到OceanBase

把MySQL中的数据导入到OceanBase&#xff0c;分两个步骤&#xff1a; 1.准备一份MySQL测试数据集2.使用mydumper工具导出数据3.使用myloader工具导入到OceanBase4.验证测试数据集在OceanBase下的执行情况 1.准备一份MySQL测试数据集 1.1.从github下载mysql测试数据集&#x…

【hoare基础版】快速排序算法(1)

目录 交换排序 QuickSort快速排序 Hoare整体思路 图解分析 ​ Hoare版本代码 总代码 时间复杂度 交换排序 基本思想&#xff1a;所谓交换&#xff0c;就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置&#xff0c;交换排序的特点是&#xff1a;将键…

安装unget包 sqlsugar时报错,完整的报错解决

前置 .net6的开发环境 问题 ? 打开unget官网&#xff0c;搜索报错的依赖Oracle.ManagedDataAccess.Core unget官网 通过unget搜索Oracle.ManagedDataAccess.Core查看该依赖的依赖 发现应该是需要的依赖Oracle.ManagedDataAccess.Core(>3.21.100)不支持.net6的环境 解…

代码随想录算法训练营第一天

● 今日学习的文章链接和视频链接 ● 自己看到题目的第一想法 1. 704二分法&#xff1a; 方法一&#xff1a; 整个数组是 左闭右闭区间 [ ] left指针指向数组开始下标&#xff0c; right 指针指向数组最后下表nums.size()-1, mid为 (leftright) /2循环条件 left<rightnu…

Django使用Celery异步

安装包 pip install celerypip install eventlet 1.在项目文件的根目录下创建目录结果 2. 在main.py文件中 # !/usr/bin/env python # -*-coding:utf-8 -*-""" # Author &#xff1a;skyTree # version &#xff1a;python 3.11 # Description&#…

浅谈maven的生命周期

正文: 在Maven中,生命周期定义了项目构建过程的不同阶段以及在每个阶段中执行的插件目标。Maven的生命周期是由一系列阶段组成的,每个阶段都有一个唯一的标识符。 Clean生命周期:用于清理项目的构建目录。它包含以下阶段: pre-clean:执行在清理操作之前的任何操作。clea…

Eclipse的Java Project的入口main函数

在使用Eclipse创建java project项目的时候&#xff0c;一个项目里面通常只有一个main&#xff0c;那么一个项目里面是否可以有多个main函数呢&#xff1f;其实可以的&#xff0c;但是运行java application的时候要选择执行哪个main函数。 下面举个例子&#xff1a; 1、创建一个…

二进制方式安装MySQL并备份数据库

一、openEuler二进制方式安装MySQL 8.0.28版本 1.1 获取软件包 [rootopenEuler3 ~]# wget -c https://mirrors.aliyun.com/mysql/MySQL-8.0/mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz 1.2 解压软件包 [rootopenEuler3 ~]# dnf install -y tar xz [rootopenEuler3 ~]# t…