GitHub Actions 入门指南

前言

GitHub Actions 可以构建一组自动化的工作流程,并提供了拉取请求、合并分支等事件来触发他们。一般成熟的开源项目会在每个版本发布时提供 releases ,它就是通过 Actions 来自动发布的。本文就以自动发布 releases 这个例子来认识 Actions。

创建 workflow

workflow 被称为工作流,每个工作流以一个 yaml 文件表达。在仓库中建立 .github/workflows/release.yaml 文件,如果需要多个工作流,则创建多个 yaml 文件即可。

release.yaml:

复制代码
# 定义工作流的名称
name: teach-study Release

# 定义一个 push 事件:当推送带有 "v*" 的标签时触发
on:
  push:
    tags:
      - "v*"

# 定义时区
env:
  TZ: Asia/Shanghai

这样我们就定义好了一个事件,接下来我们来定义 jobs,来创建自动上传 release 的逻辑:

复制代码
...

jobs:
  create_release:
    name: Create Release
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Code
        uses: actions/checkout@v4

      - name: Create Release
        id: create_release
        uses: softprops/action-gh-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: ${{ github.ref }}
          name: Demo ${{ github.ref_name }}
          draft: false
          prerelease: false

这个 jobs 包含了两个操作。什么是操作呢?可以理解为执行一组命令来完成某些事情,操作既可以自定义,也可以使用 GitHub 社区中分享的。在 job 中使用 uses 指定,搭配上 with 关键词用于给操作传递参数。

第一个使用了 actions/checkout@v4 操作,它可以帮助我们将仓库中的源码拷贝到工作流中来,这个操作是 GitHub Action 内置的操作之一。第二个使用了 softprops/action-gh-release@v1 的操作创建了一个 release 并自动上传到 GitHub 中, ${{ secrets.GITHUB_TOKEN }} 用于自动令牌身份验证with 传递了四个参数,其中 tag_namename 的值传递了 Actions 的上下文softprops/action-gh-release@v1 还有其他可选的参数,可以点此查看。

验证

把 release.yaml 推送到仓库中,并且设置好 GITHUB_TOKEN 的读写权限:

然后推送一个 v1.0.0 的标签:

复制代码
git tag v1.0.0
git push origin --tags

查看最终效果:

相关推荐
蝎子莱莱爱打怪1 小时前
🚀🚀🚀嗨,一起来开发 开源IM系统呀!
前端·后端·github
semantist@语校2 小时前
第十九篇|东京世界日本语学校的结构数据建模:制度函数、能力矩阵与升学图谱
数据库·人工智能·线性代数·矩阵·prompt·github·数据集
绝无仅有9 小时前
Redis高级面试题解析:深入理解Redis的工作原理与优化策略
后端·面试·github
绝无仅有10 小时前
Redis面试解答指南:了解Redis及其应用
后端·面试·github
掘金安东尼10 小时前
CSS 颜色混乱实验
前端·javascript·github
掘金安东尼11 小时前
为什么浏览器要限制 JavaScript 定时器?
前端·javascript·github
东方芷兰13 小时前
Leetcode 刷题记录 21 —— 技巧
java·算法·leetcode·职场和发展·github·idea
程序视点1 天前
爆:GitHub Copilot支持包括Anthropic、Azure、Google Gemini、Groq、OpenAI等供应商API
github·github copilot
uhakadotcom1 天前
致新人:如何编写自己的第一个VSCode插件,以使用@vscode/vsce来做打包工具为例
前端·面试·github
CoderJia程序员甲1 天前
GitHub 热榜项目 - 日榜(2025-09-11)
ai·开源·github·ai编程·github热榜