Jenkins(本地Windows上搭建)上传 Pipeline构建前端项目并将生成dist文件夹上传至指定服务器

news2024/11/29 11:48:01
  1. 下载安装jdk
    https://www.oracle.com/cn/java/technologies/downloads/#jdk21-windows
    在这里插入图片描述

  2. 下载jenkins window版 双击安装
    https://www.jenkins.io/download/thank-you-downloading-windows-installer-stable/
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  3. 网页输入 http://localhost:8088/

  4. 输入密码、设置账号、安装推荐插件即可

  5. 下载Jenkins插件 Gitee Publish Over SSH SSH Agent
    在这里插入图片描述

  6. 配置插件-Gitee
    在这里插入图片描述
    在这里插入图片描述

  7. 在本地电脑上生成ssh秘钥
    ssh-keygen -t rsa -b 4096
    在这里插入图片描述

  8. 将公钥上传至服务器并测试连接
    ssh -p 22000 root@1.117.121.53
    echo your_public_key_string >> ~/.ssh/authorized_keys
    配置文件权限:
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys
    在这里插入图片描述
    在这里插入图片描述

  9. jenkins上添加刚才生成的私钥
    在这里插入图片描述
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/bf803c920a0a43178b7d85f36aecb6af.png

  10. 配置 SSH Servers
    11.
    在这里插入图片描述
    在这里插入图片描述

  11. 新建Item Pipeline 编写PipeLine脚本
    添加一个gitee username password凭据 并复制凭据ID
    在这里插入图片描述

pipeline {
    agent any
    stages {
        stage('Checkout') {
            steps {
              //复制gitee 凭据 id
                git credentialsId: 'ec383d79-875e-4499-916f-0ac6146bde4b', 
                url: 'https://gitee.com/e-react-temp.git',
                branch: 'master'
            }
        }
        stage('Build') {
            steps {
                bat 'npm install'
                bat 'npm run build'
                //复制ssh 私钥凭据 id
                 sshagent(credentials: ['8e0f86d7-3d69-47d5-b820-ec728a1279ee']) {
                   bat "ssh -p 22000 root@1.117.121.53 'rm -rf /www/wwwroot/qg-iterative-react-temp/*'"
                   bat "tar czf - -C C:/ProgramData/Jenkins/.jenkins/workspace/qg-iterative-react-temp/dist . | ssh -p 22000 root@1.117.121.53 'tar xzf - -C /www/wwwroot/qg-iterative-react-temp'"
                }
                }
            }
        }
    }
    post {
        always {
            echo 'Build complete.'
        }
    }
}
  1. 开始构建
    在这里插入图片描述

在这里插入图片描述

(1)不推荐的做法 关闭ssh秘钥检查
修改脚本执行代码处 -o StrictHostKeyChecking=no

ssh  -o StrictHostKeyChecking=no -p 22000 root@.117.121.53

(2)删掉这个
在这里插入图片描述

还不行继续baidu、 bing.com

虽然踩了一些坑,但是中途还会遇到一些问题,比如安全组放行端口,防火墙配置等, 还需要根据特定问题查一些资料。

祝大家学习和工作愉快

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

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

相关文章

张维迎《博弈与社会》威胁与承诺(3)承诺行为

承诺的作用 上一节,我们探讨了如何在求解博弈时把不可置信的威胁或许诺排除出去,从而对参与人的行为做出合理的预测。如前所述,其中一个隐含的前提条件是,参与人要具有理性共识。而理性共识是一个要求很高的条件,现实生…

Zoho Projects与Jira:中国市场的理想替代品之争?

在软件开发生命周期中,项目管理一直是一个非常重要的环节。为了更好地协作、追踪项目的进程和管理任务,许多公司选择了Jira这款著名的项目管理工具,它是个非常强大的工具,但是作为一款纯国外产品,他可能不适合中国市场…

Leetcode—535. TinyURL 的加密与解密【中等】

2024每日刷题&#xff08;110&#xff09; Leetcode—535. TinyURL 的加密与解密 实现代码 class Solution { public:// Encodes a URL to a shortened URL.string encode(string longUrl) {while(!urlToCode.count(longUrl)) {string code;for(int i 0; i < 6; i) {code…

Day3.

1.信号 #include <head.h> //定义自定义信号处理函数 void handler(int signo) {if(signo SIGINT){printf("按下ctrl c键\n");}return; }int main(int argc,const char *argv[]) {if(signal(SIGINT, handler) SIG_ERR){perror("error\n");return…

Codeforces Beta Round 11 D. A Simple Task 【状压DP + 环计数】

D. A Simple Task 题意 给定一个简单图&#xff08;无重边无自环&#xff09;&#xff0c;求出其中的环的数量&#xff08;一个环除了起点和终点一样以外&#xff0c;没有另外的两个相同的点&#xff09; 思路 为了区分不同的环&#xff0c;我们可以统一地用环内编号最小来区…

论文阅读-CARD:一种针对复制元数据服务器集群的拥塞感知请求调度方案

论文名称&#xff1a;CARD: A Congestion-Aware Request Dispatching Scheme for Replicated Metadata Server Cluster 摘要 复制元数据服务器集群&#xff08;RMSC&#xff09;在分布式文件系统中非常高效&#xff0c;同时面对数据驱动的场景&#xff08;例如&#xff0c;大…

oracle主库增加redo组数

redo log&#xff08;重做日志&#xff09;&#xff1a; 重做日志&#xff1a;简单来说就是&#xff0c;将oracle数据库的DML、DDL&#xff08;数据库操作语言&#xff0c;数据库定义i语言&#xff09;操作记录在日志中&#xff0c;方便恢复及备库使用&#xff0c;以组的方式管…

【消息队列】kafka整理

kafka整理 整理kafka基本知识供回顾。

yo!这里是单例模式相关介绍

目录 前言 特殊类设计 只能在堆上创建对象的类 1.方法一&#xff08;构造函数下手&#xff09; 2.方法二&#xff08;析构函数下手&#xff09; 只能在栈上创建对象的类 单例模式 饿汉模式实现 懒汉模式实现 后记 前言 在面向找工作学习c的过程中&#xff0c;除了基本…

简易计算器的制作(函数指针数组的实践)

个人主页&#xff08;找往期文章&#xff09;&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 前期思路&#xff08;菜单的制作等&#xff09;&#xff1a;利用C语言的分支循环少量的函数知识写一个猜数字的小游戏-CSDN博客 计算器的制作其实与游戏没有很大的区别。 #include <st…

JupyterLab 更换内核 使用 conda 虚拟环境

未有conda虚拟环境default先创建环境 conda create -n default python3.8 ipykernel已有conda虚拟环境default激活后安装ipykernel conda activate defaultpip install ipykernel将虚拟环境写入 jupyter notebook 的 kernel 中 python -m ipykernel install --user --name 虚…

详解洛谷P2912 [USACO08OCT] Pasture Walking G(牧场行走)(lca模板题)

题目 思路 一道模板题&#xff0c;没啥好说的&#xff0c;直接见代码 代码 #include <bits/stdc.h> using namespace std; int n,q,a,to[100001][22],b,deep[100001],c,t[1000001]; struct ff {int id,len; }; vector<ff> vec[100001]; void dfs(int x,int fa,i…

<设计模式>单例模式懒汉和饿汉

目录 一、单例模式概述 二、懒汉模式和饿汉模式 1.饿汉模式 1.1代码实现 1.2实现细节 1.3模式优劣 2.懒汉模式 2.1代码实现 2.2实现细节 2.3模式优劣 三、多线程下的线程安全问题 1.懒汉和饿汉线程安全问题分析 1.1安全的饿汉模式 1.2不安全的懒汉模式 2.懒汉线程…

牛客周赛 Round 31

D. 思路&#xff1a;使用map构造两个链表。 #include <bits/stdc.h> using namespace std;map<int,int> l,r; int main() {int q;cin>>q;int op-1e9-1;int ed1e91;r[op]ed;l[ed]op;while(q--){int a;cin>>a;if(a1){int x,y;cin>>x>>y;int…

SpringBoot:实例一

一、实现的效果 在浏览器地址栏输入http://localhost:8080/hello&#xff0c;当前页面显示hello world 实例一代码&#xff1a;点击查看LearnSpringBoot01 点击查看更多的SpringBoot教程 二、 效果图 三、 pom.xml代码 <?xml version"1.0" encoding"UTF-…

JS(react)图片压缩+图片上传

上传dome var fileNodeTakeStock: any createRef();<inputref{fileNodeTakeStock}onChange{showPictureTakeStock}style{{ display: "none" }}id"fileInpBtn"type"file"accept"image/*" //限制上传格式multiple{false}capture&qu…

JS 基本语句

函数调用&#xff0c;分支&#xff0c;循环&#xff0c;语句示例。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"&g…

20240203在WIN10下安装Anaconda

20240203在WIN10下安装Anaconda 2024/2/3 20:45 缘起&#xff1a;最近学习stable-diffusion-webui.git&#xff0c;在Ubuntu20.04.6下配置SD成功。 不搞精简版本&#xff1a;Miniconda了。直接上Anacoda&#xff01; 百度搜索&#xff1a;Anaconda 下载 https://www.anaconda.c…

Django的web框架Django Rest_Framework精讲(一)

文章目录 Django Rest_Framework1. DRF介绍2.DRF特点3.环境安装与配置&#xff08;1&#xff09;DRF需要以下依赖&#xff08;2&#xff09;创建django项目 4.序列化器的使用&#xff08;1&#xff09;创建序列化器 5. 反序列化器使用 Django Rest_Framework 1. DRF介绍 Djan…

特种作业题不会怎么搜答案?推荐你使用这六个公众号和工具 #其他#学习方法特种作业题不会怎么搜答案?推荐你使用这六个公众号和工具 #其他#学习方法

作为当代大学生&#xff0c;我们常常面临着繁重的学业压力和众多的学习任务。在这个信息爆炸的时代&#xff0c;如何高效地进行搜题和学习成了我们迫切需要解决的问题。幸运的是&#xff0c;随着科技的不断进步&#xff0c;我们拥有了许多方便、实用的日常搜题和学习软件。 1.…