利用Github Actions实现自动化部署

简介: 利用Github Actions实现自动化部署

在没有自动化部署的情况话,前端需要部署代码的流程可能是这样的:


1.yarn build:xxx build指定环境包


2.将打包文件给运维或者后台(前端有权限可省略这一步)


3.将打包文件放到服务器指定目录


亦或者是做了自动化脚本,但是每次需要后台人员手动执行脚本


    可见每次都需要进行一定的沟通以及手动操作,解决这个问题,我们可以利用Github Actions实现自动化打包部署


     很多时候,我们希望在提交代码,合并分支等操作的时候,需要做一些其他的操作,比如抓取代码、运行测试、运行打包、登录远程服务器、将文件上传到服务器等,而且这些操作很多时候都是类似的。基于用户的这个需求,Github推出了actions功能。


      actions允许开发者将每个操作写成独立的脚本,存放到代码仓库,开发者可以将这些脚本发布,发布后的脚本可以被其他开发者引用。


      有了actions,开发者不用自己写脚本,直接引用其他人的aciton即可(如果可以满足你的需求),然后整个持续集成的过程,就变成了多个actions的组合。


      当你需要查找actions的时候,可以去Github Action市场搜索,点击需要的action,会进入该action的页面


网络异常,图片无法展示
|


点击右上角的Use latest version或者点击下拉选择版本,会弹出使用方法,点击复制使用即可


     想要使用github action执行我们的脚本,需要在项目的根目录创建.github文件夹,在.github文件夹下创建workflow文件夹,在workflow文件夹下写我们的配置文件,配置文件为YAML格式,文件后缀名为.yml,workflow文件夹下可以有多个.yml文件,github会自动运行所有.yml文件。workflow文件的配置可以查看官方文档,下边贴上我的配置


name: 脚本名称
# 触发脚本的条件,develop分支push代码的时候
on:
  push:
    branches:
      - develop
# 要执行的任务
jobs:
  # 任务名称
  build:
    # runs-on 指定job任务运行所需要的虚拟机环境(必填)
    runs-on: ubuntu-latest
    # 任务步骤
    steps:
      # 获取源码
      - name: 迁出代码
        # 使用action库  actions/checkout获取源码
        uses: actions/checkout@master
      # 安装node
      - name: 安装node.js
        # 使用action库 actions/setup-node 安装node
        uses: actions/setup-node@v1
        with:
          node-version: 10.16.3
      # 安装依赖
      - name: 安装依赖
        run: npm install
      # 打包
      - name: 打包
        run: npm run build:xxx
      # 上传打包文件到远程服务器
      - name: 上传文件到远程服务器
        uses: zhenyuWang/Upload-File-Action@v1.0.1
        with:
          username: "登录远程服务器的用户名"
          server: "远程服务器ip"
          port: "22"
          ssh_private_key: ${{ secrets.私钥}}
          # 要上传文件所在目录
          local_path: "./dist/*"
          # 远程服务器目标路径
          target_path: "/usr/local/nginx/html/xxx"
复制代码


上述脚本只需要cv到自己的文件里就好,需要注意的是私钥配置,过程如下


1.生成SSH key


ssh-keygen -t rsa -b 4096 -C "$(git config user.email)" -f test -N ""
复制代码


会得到以下两个文件 (C盘用户目录下)


test.pub  (public key)
test      (private key)
复制代码


2.配置私钥


打开github仓库,点击settings


网络异常,图片无法展示
|


然后点击左侧Secrets


网络异常,图片无法展示
|


然后点击右上角New repository secret


网络异常,图片无法展示
|


网络异常,图片无法展示
|


需要注意的是这里的私钥名称就是配置文件里的私钥名称


3.配置公钥


登录远程服务器,找到root/.ssh/authorized_keys文件,把公钥文件里的内容复制到该文件中


至此,我们的自动化打包部署就完成了,快去试下吧!

相关文章
利用 GitHub Actions 自动化你的软件开发流程
GitHub Actions 是由 GitHub 提供的自动化工具,可让你在仓库中触发和执行自动化工作流程,如自动运行测试和部署应用。其核心概念包括工作流程(定义在 YAML 文件中的一系列自动化步骤)、作业和步骤。本文将指导你如何设置和使用 GitHub Actions,并提供实用的自动化示例,帮助你提高开发效率和代码质量。通过简单的配置文件,你可以实现自动运行测试、部署应用甚至自动合并 Pull Requests。
利用 GitHub Actions 自动化你的软件开发流程
在现代软件开发中,自动化是提升效率与质量的关键。GitHub Actions 作为 GitHub 的强大自动化工具,允许你在仓库中自动执行多种任务,如测试、打包、部署代码及自动合并 Pull Requests。本文介绍了 GitHub Actions 的核心概念、设置方法及其实用示例,帮助你快速上手并优化开发流程。通过 YAML 文件定义的工作流程可显著提高工作效率和代码质量。
|
22天前
|
开发者
利用 GitHub Actions 自动化你的软件开发流程
在快速发展的软件开发环境中,自动化对于提升效率与质量至关重要。GitHub Actions 作为一款强大的工具,能帮助开发者实现从自动运行测试到部署应用等工作的自动化。本文详细介绍了 GitHub Actions 的核心概念、设置方法及实际应用示例,如自动测试、部署和合并 Pull Requests,助力提升开发流程的自动化水平。
利用 GitHub Actions 自动化你的软件开发流程
GitHub Actions 是 GitHub 提供的自动化工具,可在仓库中触发和执行工作流程,包括自动运行测试、部署应用等。其核心概念包括工作流程(Workflow)、作业(Job)和步骤(Step),均定义在 YAML 文件中。本文将指导你如何设置和使用 GitHub Actions,并提供自动运行测试、部署应用及合并 Pull Requests 的示例,帮助提高开发效率和代码质量。
|
2月前
|
开发工具 git 开发者
2024最简七步完成 将本地项目提交到github仓库方法
该文章提供了一个简洁的七步教程,指导用户如何将本地项目提交到GitHub仓库。
2024最简七步完成 将本地项目提交到github仓库方法
|
2月前
|
Rust 前端开发 JavaScript
Github 2024-05-20 开源项目周报 Top15
根据Github Trendings的统计,2024年5月20日当周共有15个项目上榜。按开发语言分类,项目数量如下:Python项目5个,TypeScript项目3个,C++项目2个,Jupyter Notebook项目2个,C、Go、Rust和C#项目各1个。介绍了多个值得关注的项目,包括ChatGPT桌面应用程序、Fooocus图像生成软件、Jellyfin媒体系统等。这些项目涵盖了多种功能和技术领域,值得关注和研究。
37 3
|
2月前
|
SQL JavaScript 前端开发
Github 2024-08-05 开源项目周报 Top15
根据 Github Trendings 的统计,本周(2024年8月5日统计)共有15个项目上榜。以下是根据开发语言汇总的项目数量: - Go 项目:4个 - JavaScript 项目:3个 - Python 项目:3个 - Java 项目:2个 - TypeScript 项目:2个 - C 项目:1个 - Shell 项目:1个 - Dockerfile 项目:1个 - 非开发语言项目:1个
37 2
|
2月前
|
人工智能 Rust JavaScript
Github 2024-08-26 开源项目周报Top15
根据Github Trendings的统计,本周共有15个项目上榜。以下是按开发语言汇总的项目数量:Python项目8个,TypeScript、C++ 和 Rust 项目各2个,Jupyter Notebook、Shell、Swift 和 Dart 项目各1个。其中,RustDesk 是一款用 Rust 编写的开源远程桌面软件,可作为 TeamViewer 的替代品;Whisper 是一个通用的语音识别模型,基于大规模音频数据集训练而成;初学者的生成式人工智能(第2版)则是由微软提供的18门课程,教授构建生成式AI应用所需的知识。
72 1
|
2月前
|
Rust Dart 前端开发
Github 2024-08-19 开源项目周报Top15
根据Github Trendings的统计,本周(2024年8月19日统计)共有15个项目上榜。按开发语言分类,上榜项目数量如下:Python项目最多,有7项;其次是JavaScript和TypeScript,各有3项;Dart有2项;HTML、PowerShell、Clojure和C++各1项。此外,还介绍了多个热门项目,包括Bootstrap 5、RustDesk、ComfyUI、易采集、Penpot等,涵盖了Web开发、远程桌面、自动化测试、设计工具等多个领域。
71 1
|
2月前
|
JavaScript 前端开发 Go
Github 2024-08-12 开源项目周报 Top14
本周Github Trendings共有14个项目上榜,按开发语言汇总如下:Python项目7个,TypeScript项目5个,C项目2个,JavaScript项目2个,Go和Batchfile项目各1个。其中亮点包括开发者职业成长指南、Windows激活工具、ComfyUI图形界面、AFFiNE知识库、易采集可视化爬虫等项目,涵盖多种实用工具和开源平台。
55 1
下一篇
无影云桌面