Github: Github actions自动化工作原理与多workflow创建和部署

【Github Action】这篇文章教会你如何开发Github Action,并且让你明白它是什么,怎么用,如何做到的。 教会你如何开发action,介绍了配置action和开发一个action的详细步骤,并且展开介绍了很多工具。 阅读详情

Github actions


1 )概述

  • Github Actions 是Github官方推出的 CI/CD 解决方案
  • 优点
    • 自动发布流程可减少发布过程中手动操作成本,大幅提升ci/cd效率,快速实现项目发布上线
  • 缺点
    • 存在较高的技术门槛
    • 需要利用额外服务,会产生技术成本

2 )工作原理

  • Repository 是代码仓库, .github 是特定的目录,里面有一个目录是 workflows
  • workflow 是一个可配置的自动化流程,它可以包含多个jobs
  • 在 workflows 下包含了所有 .yml 结尾的文件
    • yaml 是一种标记语言,可读性较好,适合编写配置文件
  • 有多少 yml 文件都会并发执行
  • 每个 workflow 都通过 event 来触发
  • 每个 workflow 包含若干 job
    • job 是 workflow 当中一系列的可执行步骤,每个 job 是在同一个 runner 中进行的
    • runner 是指处于 github 的一台特殊的虚拟机,支持各种操作系统
    • 每个步骤或是一个 shell 脚本,亦或是一个可执行的action
    • 每个步骤是按照顺序执行,并且互相依赖
  • 每个 job 包含若干 step, 这里的stop 就是 cmd 或 action
    • 这里 action 就是 一些列 shell 的组合或传参的封装
  • Action 是 github action 中的一个自定义应用,它可以以运行一系列复杂的并且常用的任务
    • 使用 action 可以帮我们减少在 workflow 中写重复代码
    • github 提供了非常多常用的action
    • 可以再这里查阅: https://github.com/marketplace?type=actions
    • 同时,我们也可以写自己的 action

3 )yml 配置示例

  • 在项目目录下新建 .github/workflows 目录, 在里面 新建 test.yml

    name: Github Actions Test
    on: [push]
    jobs:
        Test:
            runs-on: ubuntu-latest
            steps:
                - run: echo "hello test"
                - run: echo "${{ github.event_name }}"
    
  • 可以看到,在里面可以使用环境变量和自定义变量, 同时,类似 jobs 下可定义多个任务,比如 再加一个 Test2

  • 参考:https://docs.github.com/en/actions/learn-github-actions/environment-variables

  • 上面的简单示例可以很明白的看清楚会发生什么

  • 我们把代码提交到github, 在github的action上就会出现一条记录

  • 点进去就可以看到具体运行的 job

多 workflow 演示

  • 在上面 test.yml 同级,新增 test2.yml

    name: Github Actions Test2
    on: [push]
    jobs:
        Test2:
            runs-on: ubuntu-latest
            steps:
                - run: echo "hello test2"
                - run: echo "${{ github.action }}"
                - run: echo "${{ github.ref }}"
                - run: echo "${{ github.repository }}"
    
  • 这样,再次提交运行,就可以重新运行这2个 workflow 了

  • 如果没有触发,可能由于提交到真实的主机上,或 workflows 目录或具体配置错误

代码自动化部署

1 )初步测试

  • .github/workflows/deploy.yml
    name: Deploy xxx-project
    on: [push]
    jobs:
        Deploy:
            runs-on: ubuntu-latest
            steps:
                - uses: appleboy/ssh-action@v0.1.7
                  with:
                    host: $ {{ secrets.SSH_HOST }}
                    username: $ {{ secrets.SSH_USER }}
                    password: $ {{ secrets.SSH_PWD }} 
                    script_stop: true
                    script: |
                      ls -al
                      touch test.txt
                      echo "hello deploy" >> test.txt
                      cat test.txt
    
    
  • with 下的所有字段在文档上有相关说明
  • 这里,secrets 在 仓库 / Settings / Secrets 中进行配置的
  • 这里,很方便的保护了一些隐私数据
  • 提交后,查看workflow部署情况,并且自己使用 ssh 连入 服务器
  • 查看是否创建了 test.txt,如果一切就绪,则表示准备工作完成

2 )优化脚本

  • ssh 登录 ubuntu 服务器后,默认回到用户目录下面,也就是 ~

  • 我们要重新修改脚本

    name: Deploy xxx-project
    on: [push]
    jobs:
        Deploy:
            runs-on: ubuntu-latest
            steps:
                - uses: appleboy/ssh-action@v0.1.7
                    with:
                    host: $ {{ secrets.SSH_HOST }}
                    username: $ {{ secrets.SSH_USER }}
                    password: $ {{ secrets.SSH_PWD }} 
                    script_stop: true
                    script: |
                        cd /root/resource/nginx/
                        ls -la
                        rm -rf 带部署项目目录
                        git clone git@github.com:某用户/某仓库.git -b $ {{ github.ref_name }}
                        cd 某仓库目录
                        npm install
                        npm run build
    
  • 这样,基于此,将中文替换成自己的项目相关名称,即可完成一个前端项目的部署

使用 GitHub Workflow 快速构建和部署 MkDocs 项目文档 通过 GitHub Actions 的自动化工作流程,我们可以轻松实现项目文档的自动构建与部署。结合 MkDocs 和 MkDocs Material 主题,你能够快速构建一个专业、美观的文档站点,并通过 GitHub Pages 将其发布到互联网。这个过程不仅节省了时间,也确保了文档的持续更新,是现代开发流程中的一项最佳实践。希望这篇文章能帮助你快速上手 GitHub Actions,构建和部署你的项目文档。如果你有任何问题或建议,欢迎在评论区留言讨论!MkDocs。 阅读详情

相关推荐

GitHub 工作流配置详解

在本博客中,我们将深入了解 GitHub Actions,这是 GitHub 提供的一种强大的工作流配置工具,以及如何在你的项目中配置自定义的工作流。

To learn, to engage. 2158

GitHubActions详解

一.GitHubAction简介 🧅什么是Github Action ? GitHubActions是一个持续集成和持续交付的平台,它可以帮助你通过自动化的构建(包括编译、发布、自动化测试)来验证你的代码,从而尽快地发现集成错误。github于2019年11月后对该功能全面开放,现在所有的github用户可以直接使用该功能。GitHub 提供 Linux、Windows 和 macOS 虚拟机来运行您的工作流程,或者您可以在自己的数据中心或云基础架构中托管自己的自托管运行器。在使用Github Action

XBlithe的博客 1万+

用Codex和GitHub Actions实现个人网站的自动化部署

AI编程工具正在改变开发者的工作方式,但很多人仍卡在“本地能跑、线上打不开”的环节。本地开发服务器(如localhost)仅限本机访问,而传统FTP上传又缺乏版本管理与自动化能力。GitHub Pages作为免费静态托管方案,天然支持HTTPS与自定义域名;借助GitHub Actions持续集成,可构建“push即发布”的流水线。开发者只需用Codex等AI代理生成或修改代码,提交到GitHub仓库,自动化流程便会完成构建、部署,让迭代告别重复的手动上传。从个人作品集到技术博客,这套零成本方案尤其适合静态

weixin_34296641的博客 462

【GIT】什么是GitHub Actions ?

【代码】【GIT】什么是GitHub Actions?

weixin_44174312的博客 2332

机器学习的学习准则(期望风险最小化、经验风险最小化、结构风险最小化)

要评价模型f(x, θ)的好坏,可通过期望风险R(θ)来衡量:求期望损失R(θ)不仅需要知道损失函数还需要知道真实分布,损失函数可以通过一定的准则计算得到,但是样本空间的真实分布是未知的。所以不能直接求R(θ)。期望风险R(θ)无法计算,给定一个训练集D =,我们可以计算经验风险,经验风险就是在训练集上的平均损失:为了解决过拟合问题,引入了参数正则化来限制模型的能力。使其不要过度的最小化经验风险。这种准则就是结构风险最小化准则

... 2227

PlayReady Encrypt XAP 解密讨论

目前WP7市场上的绝大部分XAP都被MS进行了加密,经过分析,这个加密方式采用了AES方式进行了加密,本人经过对新的XAP格式(PRE)进行了分析,发现新的格式里,实际上是对之前PK(ZIP格式)的XAP进行了加密然后封装:   typedef struct {   DWORD HDR; // 0x07455250 : PRE & 0x7   DWORD a1; // always 0x1   D

u013729125的专栏 1511

【GitHub Actions Workflow 实战】从构建到部署的完整指南,从旧版本部署迁移到新版本的完整流程

【GitHub Actions Workflow 实战】从构建到部署的完整指南,从旧版本部署迁移到新版本的完整流程

qq_59344127的博客 2376

电力现货市场出清机制解析:从理论到实践(附节点电价计算实例)

本文深入解析电力现货市场的核心出清机制,重点阐述了节点边际电价的计算原理与实践方法。通过对比系统边际电价、节点边际电价和分区边际电价三种模式,揭示了市场出清价格如何反映电力供需与网络阻塞。文章结合IEEE 30节点系统,提供了基于MATLAB和最优潮流模型的计算实例,详细展示了从构建模型到求解对偶变量以获取节点电价的全过程,为理解电力市场定价机制提供了从理论到实践的完整路径。

whisky的博客 758

GitHub Actions Workflow 详细指南

本文面向第一次接触 GitHub Actions 的开发者,从基本概念、YAML 语法和变量表达式开始,逐步介绍 CI、测试矩阵、缓存、构建产物、发布、OIDC、安全和排错。文档依据 2026-07-11 可用的 GitHub、Node.js 和 npm 官方资料编写。平台行为和 Action 版本可能继续变化,应以文末官方文档为最终依据。

hanqunfeng的专栏 453

保姆级教程:用Fiddler+夜神模拟器搞定抖音App抓包(附SSL Pinning绕过实战)

本文提供了一套完整的移动端抓包解决方案,详细介绍了如何使用Fiddler和夜神模拟器进行抖音App抓包,并重点讲解了SSL Pinning绕过技术。通过Xposed框架和JustTrustMe模块的组合,实现高效抓包,适用于产品分析、竞品研究和安全测试等场景。

weixin_30855099的博客 423

高温环境下(100℃以上)相机的几种保障方案

高温环境下相机保障措施摘要:针对120℃以上高温环境,相机需采取多重防护:1.散热设计采用金属机身、散热鳍片或风扇;2.关键部件选用耐高温材料(铝合金、特种玻璃);3.电子元件需军规级芯片并做三防处理;4.建议外接电源或耐高温电池。工业相机(如FLIR A655sc、Basler ace)及特种机型(Ximea xiQ)具备高温适应性,普通相机可加装隔热套件配合冷却系统。选择时需关注传感器信噪比和全局快门性能,并设置温度监控保护机制。注意高温会加速设备老化,需定期检测维护。(149字)

start_up_go的博客 1589

GitHub Actions 初体验:给 Vite 项目加上自动化部署

本文分享了如何用GitHub Actions为Vite项目配置自动化部署到GitHub Pages的简单流程。作者通过三步操作:1)在vite.config.ts中配置base路径;2)创建deploy.yml工作流文件定义构建和部署任务;3)开启仓库的写权限。实现代码推送后自动完成安装依赖、打包和部署到gh-pages分支的功能。文章强调工程化思维的核心价值在于将重复劳动自动化,让开发者能更专注于创造性工作。这种轻量级自动化方案特别适合个人前端项目的持续部署需求。

2501_91229396的博客 650

SI好文翻译:铜箔表面纹理对损耗的影响:一个有效的模型(一)

Paul G. Huray发表在DesignCon2010的提出铜箔表面雪球模型的论文。第一部分说明之前的铜箔表面模型只适用于5GHz以内,超过5GHz后就不再准确。

小孟同学的博客 2174

使用GitHub Actions和GitHub pages实现前端项目的自动打包部署

是 GitHub 的,于2018年10月。这些天,我一直在试用,觉得它非常强大,有创意,比玩法更多。本文是一个简单教程,演示如何使用 GitHub Actions 自动发布一个 React 应用到。

每天都要努力学习哦~~ 874

全球SAR卫星大盘点与回波数据处理专栏目录

本专栏将详细介绍各国各地区的SAR卫星的特点和性能,以及SAR回波数据的处理方法和技巧。主要介绍民用和商用SAR卫星,帮助你了解商业SAR卫星的最新动态和技术,MATLAB代码将全部开源。以下是专栏目录,持续更新中。

3166

初识 QML

QML 是一种声明性语言,允许根据用户界面的可视组件以及它们如何相互交互和相互关联来描述用户界面。QML 是一种高度可读的语言,旨在使组件能够以动态方式互连,并且允许组件在用户界面中轻松重复使用和自定义。 使用 Qt Quick,开发人员可以轻松地在 QML 中构建流体动画用户界面,并且可以选择将这些用户界面连接到任何后端 C++ 库。

青春不老,奋斗不止! 1万+

DotSlash在CI/CD中的应用:GitHub Actions集成与自动化部署指南

DotSlash作为简化可执行文件部署的工具,能显著提升CI/CD流程的效率。本文将详细介绍如何在GitHub Actions中集成DotSlash,实现自动化部署,让开发者专注于代码开发而非繁琐的部署配置。 [![DotSlash品牌标识](https://raw.gitcode.com/gh_mirrors/do/dotslash/raw/32e5f373d6defcd475c9de7e18

gitblog_02102的博客 1015

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

5 分钟快速入门 Github Actions

本文讲述了如何快速入门 Github Actions。

yuguo_im的博客 1668

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

CI/CD 流水线优化终极指南:将 GitHub Actions 与 FluxCD 结合实现自动化测试与部署

在当今的云原生时代,Kubernetes GitOps 已经成为现代化应用部署的标准实践。本文将深入探讨如何通过将 GitHub Actions 与 FluxCD 完美结合,构建一套高效、可靠的 CI/CD 流水线,实现真正的自动化测试与部署。无论你是 Kubernetes 新手还是经验丰富的运维工程师,这套解决方案都能显著提升你的部署效率和系统稳定性。 ## 🚀 为什么需要 CI/CD 流水

gitblog_00223的博客 989

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

DevPortfolio与GitHub Actions集成:自动化构建和部署流程终极指南

DevPortfolio是一个使用Astro和Tailwind CSS构建的现代简约作品集模板,专为希望以干净专业的方式展示自己技能、经验和项目的开发者设计。通过与GitHub Actions集成,你可以实现构建和部署流程的完全自动化,极大提升开发效率。 ## 为什么选择GitHub Actions自动化DevPortfolio GitHub Actions为DevPortfolio提供了强大

gitblog_00654的博客 983

Awesome Claude Skills与GitHub Actions集成:自动化工作流的终极指南

在当今快速迭代的开发环境中,将Awesome Claude Skills与GitHub Actions集成可以显著提升工作效率,实现无缝的自动化工作流。本文将详细介绍如何利用这一强大组合,从基础设置到高级应用,帮助新手和普通用户轻松掌握自动化流程的构建与管理。 ## 核心功能解析:为什么选择Awesome Claude Skills与GitHub Actions集成? Awesome Clau

gitblog_00507的博客 1144

告别手动部署!GitHub Workflow与Action完全指南:从零构建自动化CI_CD流水线

当现有Action无法满足特定需求时,开发自定义Action是解决问题的最佳方案。

全世界的博客 2650

gh-workflow:Rust 编写的 GitHub Actions 工作流自动化

gh-workflow:Rust 编写的 GitHub Actions 工作流自动化 项目介绍 在现代软件开发中,持续集成和持续部署(CI/CD)是保障代码质量和提升开发效率的重要环节。GitHub Actions 作为一种强大的自动化工具,可以帮助开发者实现这一目标。然而,传统的 GitHub Actions 工作流配置往往繁琐且容易出错。gh-workflow 是一个用 Rust 编写的库,它...

gitblog_00819的博客 597

第七章:GitHub Actions 实战:workflow 与 actions

如果说 Jenkins 是 CI/CD 界的“瑞士军刀”,GitLab CI 是“一体化平台”,那么 GitHub Actions 就是“云原生原生公民”——它天生与 GitHub 仓库融为一体,配置简单、生态丰富、免费配额充足。本章从零开始讲解 GitHub Actions 的核心概念:Workflow、Job、Step、Action、Runner,以及 .github/workflows/*.yml 的完整语法。GitHub Actions 提供了丰富的上下文变量,可在 ${{ }} 中引用。

qq_45239623的博客 320

GitHub Actions workflow最佳实践

使用 GitHub Actions Workflow 时,遵循最佳实践可以显著提升自动化效率、安全性和可维护性。以下是经过实践验证的核心最佳实践,涵盖配置设计、性能优化、安全防护等维度,并附具体示例:将不同功能(如测试、构建、部署)拆分为独立 Workflow(如 、、),而非在单个文件中堆砌所有逻辑。 好处:降低复杂度,便于单独触发和维护。 示例: 2. 精确控制触发条件,减少无效运行 通过 字段的 、、 等过滤条件,避免 Workflow 在不必要的场景下触发(如文档变更无需运行测试)。 示例: 3.

William Chen's knowledge base 1065

GitHub Actions 概念与实战:用 Workflow 在仓库内构建端到端 CI/CD 管道(DevOps-Guide)

> 本文围绕 DevOps-Guide 仓库 [CI-CD/Actions/github-actions-concepts.md](https://link.gitcode.com/i/c744230ef93c9a947ef60cab73c336e3) 展开,系统讲解 GitHub Actions 的核心概念——Actions、Workflow、Jobs、Steps,完整解析仓库内附的 PR 触发

gitblog_00979的博客 369
上一篇: Jenkins: 配合docker来部署项目
下一篇: Typescript高级: is 类型守卫
Wang's Blog
博客等级 码龄12年 7433粉丝 2421原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值