快速搭建多环境CICD之-Github Actions

在此之前先通读一遍文档大致了解workflows、Events、Jobs、Actions基本概念.

Github Actions是一个CI/CD平台,允许创建多个工作流(workflows), 每个工作流可以通过触发器(on)去执行一些操作(actions). 通过各种触发器和操作的组合可以做的事情有很多想象空间,自动化构建和部署只是其中应用之一!

其载体是在项目根目录下创建./github/workflows/**.yml文件(注意必须在这个目录下,文件名不要有空格- -),然后编辑yml格式的代码,即可在对应Git操作时触发GitHub Actions!

流程依旧是两步: 构建 + 部署

1.自动化构建

我先以push为例:

yaml 复制代码
name: learn-github-actions
run-name: ${{ github.actor }} is learning GitHub Actions
on: [push] # 这表示工作流程将在推送(push)事件发生时触发
jobs:
  build-dev: # 任务名
    if: ${{ github.ref == 'refs/heads/dev' }} # 当分支为dev时执行
    runs-on: ubuntu-latest # 这表示任务将在最新版本的Ubuntu虚拟环境中运行
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
      - run: echo "dev $GITHUB_REF"
  build-stable: # 任务名
    if: ${{ github.ref == 'refs/heads/stable' }} # 当分支为stable时执行
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
      - run: echo "stable $GITHUB_REF"

将代码push到dev分支时,可以看到Actions中多一行记录:

将echo替换为num run build命令试试! 找不到构建后的产物请看下边Q1.

2.自动化部署

前提还是先申请一台轻量应用服务器,以华为云为例 www.huaweicloud.com/product/hec...

actions/upload-artifact本身只支持将构建产物上传到Github,如果想要上传到 自己的web 服务器,还需要其他插件!思路也很简单,还是使用SSH配合一些shell来实现文件复制和上传,跟Jenkins自动化部署类似!

依赖插件 appleboy/scp-action@v0.1.7 想要快速查找actions,可以使用github.com/marketplace

要链接到服务器,密钥肯定不能暴露在.yml代码里,这里使用Actions secrets,可以在这里定义运行时的环境变量,并且只有项目参与者才能修改.

配置文件:

然后提交代码,合并到dev分支,在Actions中工作流执行成功后,去服务器查看文件已上传成功!

接下来使用appleboy/ssh-action@v1.0.3,启动远程服务器即可!

完整的配置文件: github.com/yzbaoo/lear...

3.问题:

Q1: 在Github Actions中执行构建,构建后的代码(dist)跑哪里了?

A: 需要使用actions/upload-artifact将工作流中的数据存储为artifact!

参考:docs.github.com/zh/actions/...

然后就可以在Actions页面看到构建产物.

Q2: 虽然只有在dev和stable分支执行push时,才触发自动化,但是在其他分支push时,Actions中也会有一条跳过记录,如何避免在其他分支push时,Actions中存在跳过记录?

A:

Q3: 如何缓存依赖项以加快工作流程?

A:docs.github.com/zh/actions/...


YAML语法:docs.github.com/zh/actions/...

相关推荐
仙柒41520 分钟前
管理网络安全
linux·运维·服务器
nashane31 分钟前
HarmonyOS 6学习:Web组件同层渲染事件处理与智能长截图实现
前端·学习·harmonyos·harmonyos 5
大家的林语冰34 分钟前
Node 2026 发布,JS 三大新功能上线,最后一个奇偶版本
前端·javascript·node.js
云边云科技_云网融合38 分钟前
企业出海的 “数字丝绸之路“:SD-WAN 如何重构全球网络竞争力
大数据·运维·网络·人工智能
JZC_xiaozhong38 分钟前
2026年深圳企业如何统一管理ERP、MES、OA权限?身份识别与访问管理高效方案
大数据·运维·自动化·企业数据安全·数据集成与应用集成·权限治理·多系统权限管理
nashane1 小时前
HarmonyOS 6学习:Web组件同层渲染触摸事件与长截图拼接实战
前端·学习·harmonyos·harmonyos 5
福尔摩斯·柯南1 小时前
Ubuntu 14.04/16.04/18.04/20.04/22.04/24.04/26.04全系列LTS长期支持版镜像IOS分享
linux·运维·ubuntu
GISer_Jing2 小时前
浏览器 Agent 插件开发规格书 (SPEC)
前端·ai·前端框架·edge浏览器
xiaoming00182 小时前
JAVA项目打包部署运维全流程(多服务、批量)
java·linux·运维
别叫我->学废了->lol在线等2 小时前
评估总结模块(暂不做)
前端