当前位置: 首页 > web >正文

Github Actions工作流入门

主要参考资料:
GitHub Actions 工作流编写指南: https://blog.csdn.net/i89211/article/details/144881603

目录

  • 简介
  • 工作流文件
    • 名称定义(name)
    • 触发条件(on)
    • 工作定义(jobs)
    • 常用环境变量
  • 常用 Actions
    • 检出代码
    • 设置环境
    • 缓存依赖

简介

GitHub Actions的核心在于它允许你在GitHub仓库中定义自定义的工作流程,这些工作流程由一系列动作(actions)组成,它们可以在特定事件发生时自动触发。

  • 事件触发器(Event Triggers):
    当你指定某些事件(如push、pull_request等),GitHub会监听这些事件并在其发生时启动相应的工作流。

  • 运行器(Runners):
    GitHub提供托管的虚拟机作为运行器,你可以选择不同的操作系统(如Ubuntu、Windows或macOS)。运行器负责执行你的工作流中的各个步骤。

  • 动作(Actions):
    Actions是构成工作流的基本单元,可以是一个简单的shell命令,也可以是一个复杂的Docker容器。GitHub Marketplace提供了大量预构建的动作供用户直接使用或作为参考。

  • 矩阵(Matrix):
    对于需要跨平台或跨版本测试的情况,可以使用矩阵策略来同时在多个环境中运行相同的工作流。

通过这种机制,GitHub Actions使得开发者能够轻松地实现CI/CD管道,提高软件开发效率,减少手动操作带来的错误风险。此外,由于其与GitHub紧密集成,因此特别适合于基于GitHub进行项目管理的团队。

工作流文件

什么是工作流文件?

  • 文件必须保存在仓库的 .github/workflows 目录中
  • 文件格式为 YAML,后缀为 .yml 或 .yaml
  • 一个仓库可以有多个工作流文件

YAML 语法基础

key: value          # 基本的键值对
parent:             # 缩进表示层级关系child: value
array:              # 列表使用 - 表示- item1- item2

工作流文件结构:

名称定义(name)

name: My Workflow   # 工作流的名称,会显示在 Actions 页面

触发条件(on)

on:push:                    # 推送时触发branches:- main              # 只在 main 分支触发pull_request:           # PR 时触发branches: - mainschedule:               # 定时触发- cron: '0 0 * * *'   # 每天零点触发

常用的 cron 表达式:

* * * * * 分别代表:分钟(0-59) 小时(0-23) 日期(1-31) 月份(1-12) 星期几(0-6)
0 0 * * * = 每天午夜
0 */4 * * * = 每4小时
0 9 * * 1-5 = 工作日早上9点

工作定义(jobs)

jobs:build:                  # 工作IDruns-on: ubuntu-latest    # 运行环境steps:                # 步骤定义- name: Step 1        # 步骤名称uses: actions/checkout@v2    # 使用现成的 action- name: Step 2run: echo "Hello"   # 运行命令

常用环境变量

env:GLOBAL_VAR: value      # 全局环境变量jobs:job1:env:JOB_VAR: value     # 作业级环境变量steps:- env:STEP_VAR: value  # 步骤级环境变量

常用 Actions

检出代码

- uses: actions/checkout@v2

设置环境

- uses: actions/setup-node@v2with:node-version: '14'- uses: actions/setup-python@v2with:python-version: '3.8'

缓存依赖

- uses: actions/cache@v2with:path: ~/.npmkey: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
http://www.xdnf.cn/news/8782.html

相关文章:

  • 详解3DGS
  • MySQL---库操作
  • 深入解析MongoDB WiredTiger存储引擎:原理、优势与最佳实践
  • 如何通过API接口实现自动化上货跨平台铺货?商品采集|商品上传实现详细步骤
  • 论文阅读:PURPLE: Making a Large Language Model a Better SQL Writer
  • leetcode排序链表 java
  • k8s部署ELK补充篇:kubernetes-event-exporter收集Kubernetes集群中的事件
  • QT单例模式简单讲解与实现
  • 汇量科技前端面试题及参考答案
  • 电路设计接口协议大全
  • 科技赋能,创新不止,建投数据获批三项算力服务软件著作权
  • el-input 按回车失去焦点
  • 【java】小练习--零钱通
  • 第十四章:数据治理之数据源:数据源的数据接入、业务属性梳理及监控
  • 人形机器人硬件技术剖析:部件、难点与突破路径
  • vocabulary in code
  • AI大模型(三)openAI大模型应用
  • [爬虫知识] IP代理
  • 2021-10-28 C++判断完全平方数
  • NVMe高速传输之摆脱XDMA设计1
  • 9:多线程(2)
  • 再论自然数全加和-2
  • 开疆智能Profinet转Profibus网关连接Type8644自动化控制系统案例
  • Pr -- 耳机没有Pr输出的声音
  • 算法笔记·数学·约数之和
  • PCIE 4.0 vs PCIE 5.0固态硬盘——区别、科普与选购场景全解析
  • yolov11使用记录(训练自己的数据集)
  • 无损图片压缩 本地处理 批量处理提升效率 无需联网+无广告
  • 代码混淆技术的还原案例
  • LangChain