使用GitHub Actions 来进行项目远程服务器部署

由于项目源码是托管在github的,而部署是放在远程服务器上,并且使用nginx部署。
现在的部署流程时,需要更新时,在本地切换到master分支,执行构建操作,拿到构建出的dist目录,将其上传到远程服务的某个nginx目录,重启nginx服务。 基于以上,使用GitHub Actions做CI/CD流程。

推送代码到master分支,或者master分别合并了pr时,执行流水线.
流水线文件存放在 .github/workflows/deploy.yml
基于node16.x版本,全局安装pnpm,并安装项目依赖,并进行构建。
构建完成后,使用Actions ssh-scp-ssh-pipelines https://github.com/marketplace/actions/ssh-scp-ssh-pipelines

使用该插需要配置三个密钥
DC_HOST:远程主机ip
DC_PASS:密码
DC_USER:用户名

在这里插入图片描述

在这里插入图片描述

# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-nodejs

name: ssh deploy 

on:
  push:
    branches: [ "master" ]
  pull_request:
    branches: [ "master" ]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3
    - name: Use Node.js Build
      uses: actions/setup-node@v3
      with:
        node-version: 16.16.0
        cache: 'npm'
    - run: npm i -g pnpm
    - run: pnpm install
    - run: pnpm run build
    - run: ls -l
    - name: scp ssh pipelines
      uses: cross-the-world/ssh-scp-ssh-pipelines@latest
      env:
        LASTSSH: "Doing something after copying"
      with:
        host: ${{ secrets.DC_HOST }}
        user: ${{ secrets.DC_USER }}
        pass: ${{ secrets.DC_PASS }}
        scp: |
          ./dist/* => /usr/share/nginx/visual-editor/dist
        last_ssh: |
          echo $LASTSSH 
          nginx -t
          nginx -s reload

需要做的事,配置三个密钥,检查路径和重启指令。调试。

运行完成示意图
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【HTTP】HTTP协议 HTTPS 协议

目录 一、HTTP 🌷1、HTTP是什么? 🌷2、HTTP的工作过程 🌷3、 抓包工具Fiddler的使用 🌷4、HTTP的协议格式(重点) 🌷5、HTTP请求 5.1 请求地址URL 5.2 方法method 5.3 认识 …

常见面试题之垃圾收回

1. 简述Java垃圾回收机制?(GC是什么?为什么要GC?) 为了让程序员更专注于代码的实现,而不用过多的考虑内存释放的问题,所以,在Java语言中,有了自动的垃圾回收机制&#x…

权限管理系统后端实现1-SpringSecurity执行原理概述

spring security的简单原理: SpringSecurity有很多很多的拦截器,在执行流程里面主要有两个核心的拦截器 1,登陆验证拦截器AuthenticationProcessingFilter 2,资源管理拦截器AbstractSecurityInterceptor 但拦截器里面的实现需要…

Android Studio实现内容丰富的安卓公交线路查询平台

如需源码可以添加q-------3290510686,也有演示视频演示具体功能,源码不免费,尊重创作,尊重劳动。 项目编号084 1.开发环境 android stuido jdk1.8 eclipse mysql tomcat 开发语言:java 2.功能介绍 安卓端: …

前端:运用html+css+js实现虎牙直播上的轮播图效果

前端:运用htmlcssjs实现虎牙直播上的轮播图效果 1. 我的实现效果2. 前端界面设置3. 图片动画效果实现4. 总的代码 1. 我的实现效果 近段时间看虎牙直播看的多,发现这上面的一个轮播图效果不错,如是打算运用纯htmlcssjs实现一下上述那个运行效果&#xff…

spring boot项目如何自定义参数校验规则

spring boot项目对参数进行校验时,比如非空校验,可以直接用validation包里面自带的注解。但是对于一些复杂的参数校验,自带的校验规则无法满足要求,此时需要我们自定义参数校验规则。自定义校验规则和自带的规则实现方式一样&…

LangChain大型语言模型(LLM)应用开发(三):Chains

LangChain是一个基于大语言模型(如ChatGPT)用于构建端到端语言模型应用的 Python 框架。它提供了一套工具、组件和接口,可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。LangChain 可以轻松管理与语言模型的交互&#x…

IP 协议(网络层协议)

IP协议 IP 协议作用地址管理动态分配 IP 地址NAT 机制IPv6IP 地址的组成 路由选择 IP 协议作用 主要有两点 : 地址管理 为每个上网的设备分配一个唯一地址. 路由选择 两台主机间的信息交互, 具体走哪条线路. 地址管理 先来看看 IP协议 报文格式 : IP 协议最主要就是 32 位的…

香橙派4和树莓派4B构建K8S集群实践之七: Jenkins

目录 1. 说明 2. 步骤 2.1 准备工作 2.2 安装 2.2.1 用jenkins原站for k8s的安装仓方法安装 2.2.2 Helm 安装 3. 相关命令 4. 遇到的问题 5. 参考 1. 说明 在k8s上部署jenkins,并用 jenkins.k8s-t2.com访问在namespace为devops下安装在指定节点k8s-master-…

任天堂 Switch 六月销量破纪录,极有可能成为日本市场销量冠军

任天堂于2017年发布的游戏机Switch已进入第六个年头。虽然该游戏机在硬件性能和品控方面受到一些评价不佳,但销售数据表明绝大多数玩家仍然乐意购买Switch游戏机。 根据日本经济新闻报道,今年6月Switch在日本销售了380,000台机器,同比增长68%…

【KingbaseES】如何查看表结构

SELECT column_name, data_type, is_nullable, column_default FROM information_schema.columns WHERE table_name test_szie;

ArcGIS、ENVI、InVEST、FRAGSTATS等多技术融合提升环境、生态、水文、农业、大气等领域数据分析

查看原文>>> ArcGIS、ENVI、InVEST、FRAGSTATS等多技术融合提升环境、生态、水文、农业、大气等领域数据分析 【内容简述】: 注:请提前自行配置上课环境 【其它相关推荐】: GEE遥感云大数据林业应用典型案例实践及GPT模型应用 基…

TCP的十个核心机制

目录 前言一 到 三四. 滑动窗口五. 流量控制六. 拥塞控制七. 延时应答八. 捎带应答九. 面向字节流十. 异常处理总结 前言 TCP协议是传输层的重点协议, 负责将数据从发送端传输到接收端. TCP协议是传输控制协议, 顾名思义也就是对数据的传输进行控制的协议. TCP 协议有很多, 我…

云端安全由繁到简,亚马逊云科技护航业务创新新局面

数字化愿景与现实存在的差距困扰着诸多企业,但造成这种差距的一个重要因素却一直被很多管理者所忽视,那就是企业未能建立应有的数字安全与合规体系。应用迭代的速度加快、数据快速膨胀、企业云原生道路上遭遇的种种困境,与数字安全部门有限的…

Kubernetes的Pod中进行容器初始化

Kubernetes的Pod中进行容器初始化 在很多应用场景中,应用在启动之前都需要进行如下初始化操作: 等待其他关联组件正确运行(例如数据库或某个后台服务)。 基于环境变量或配置模板生成配置文件。 从远程数据库获取本地所需配置,或者将自身注…

【网络技术】计算机网络介绍

写在前面 计算机网络是指将多台计算机连接起来,使它们能够相互通信和共享资源的系统。 它是现代计算机科学中的重要分支之一,为全球范围内的信息交流和数据传输提供了基础。 本文将介绍计算机网络的基础概念、体系结构、协议、常见问题等的知识。 一、基…

[LeetCode]2178.拆分成最多数目的偶整数之和

2178.拆分成最多数目的偶整数之和 题目 思路 首先,奇数是不可拆分成多数目的偶整数,这种情况返回一个空数组。 累加2以组合一个最多不同数目偶整数,当拆分的最后一个偶整数,总和大于原数时,将差值累加到最后一位偶整…

flutter RepaintBoundary 截屏图片下载,保存图片不清晰的问题

flutter RepaintBoundary 截屏图片下载,保存图片不清晰的问题 前言一、什么是RepaintBoundary二、RepaintBoundary 能干什么三、RepaintBoundary 保存图片模糊的问题四、RepaintBoundary 使用小demo总结 前言 最近工作中,突然遇到截屏保存图片的问题&…

超细,设计一个“完美“的测试用例,用户登录模块实例...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 好的测试用例一定…

Vite按需引入自定义组件unplugin-vue-components

1.安装插件 npm i unplugin-vue-components -D 2.vite.config.ts文件加如下代码 plugins: [vue({reactivityTransform: true}),Components({extensions: [vue, md],include: [/\.vue$/, /\.vue\?vue/, /\.md$/],dts: src/components.d.ts,deep: true, // 搜索子目录dirs: [s…
最新文章