在现代软件开发中,自动化工作流已经成为提高效率和减少人为错误的重要工具。GitHub Actions 是 GitHub 提供的一项强大功能,允许开发者通过编写工作流来自动化构建、测试和部署代码。本文将为您提供一份 GitHub Actions 的速查表,帮助您快速掌握这一工具的实用技巧与示例。 GitHub Actions 是一种持续集成和持续交付(CI/CD)解决方案,允许开发者在 GitHub 上直接创建和管理工作流。通过定义一系列的事件和操作,开发者可以在代码推送、拉取请求、发布等事件发生时自动执行特定的任务。GitHub Actions 的灵活性使得它可以与多种编程语言和框架兼容,适用于各种项目。 创建一个 GitHub Actions 工作流非常简单。首先,您需要在项目的根目录下创建一个 在这个示例中,工作流会在每次推送到 GitHub Actions 支持多种事件触发工作流。常见的事件包括: 通过组合这些事件,您可以创建复杂的工作流。例如,您可以在代码推送时运行测试,但在拉取请求合并时进行部署。
GitHub Actions 的一个强大之处在于它支持使用第三方 Action。您可以在 GitHub Marketplace 中找到许多现成的 Action,这些 Action 可以帮助您完成各种任务,如部署到云服务、发送通知等。以下是如何使用第三方 Action 的示例: 在这个示例中,我们使用了一个名为 在 GitHub Actions 中,您可以使用变量和上下文来动态地控制工作流的行为。上下文提供了关于事件、工作流和环境的信息。例如,您可以使用 此外,您还可以定义自定义变量,以便在工作流的不同步骤中使用。例如: GitHub Actions 允许您在工作流中定义多个作业(jobs),这些作业可以并行或串行执行。默认情况下,作业是并行执行的,但您可以通过设置作业之间的依赖关系来实现串行执行。例如: 在这个示例中, GitHub Actions 的免费额度是多少?
GitHub Actions 对于公共仓库是免费的,对于私有仓库,免费额度取决于您的 GitHub 账户类型(个人、团队或企业)。 如何调试 GitHub Actions 工作流?
您可以通过查看工作流的运行日志来调试工作流。如果需要更详细的输出,可以在步骤中添加 如何使用 GitHub Secrets?
您可以在仓库的设置中添加 Secrets,然后在工作流中通过 GitHub Actions 支持哪些操作系统?
GitHub Actions 支持多种操作系统,包括 Ubuntu、Windows 和 macOS。 如何设置工作流的并发限制?
您可以使用 如何在工作流中使用 Docker?
您可以在工作流中使用 Docker 容器,使用 如何在工作流中使用缓存?
您可以使用 通过本文的介绍,您应该对 GitHub Actions 有了初步的了解和掌握。希望这些实用技巧和示例能够帮助您更高效地使用 GitHub Actions 来自动化您的开发流程。GitHub Actions Cheat Sheet:快速掌握自动化工作流的实用技巧与示例
什么是 GitHub Actions?
创建第一个工作流
.github/workflows
文件夹。在该文件夹中,您可以创建一个 YAML 文件,例如 ci.yml
,并在其中定义工作流的内容。以下是一个简单的工作流示例:name: CI
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: '14'
- name: Install dependencies
run: npm install
- name: Run tests
run: npm test
main
分支时触发。它会在 Ubuntu 环境中运行,首先检出代码,然后设置 Node.js 环境,安装依赖并运行测试。事件与触发器
push
:当代码被推送到仓库时触发。pull_request
:当有拉取请求创建或更新时触发。release
:当发布新版本时触发。schedule
:根据 cron 表达式定期触发。使用第三方 Action
- name: Deploy to Heroku
uses: akhileshns/heroku-deploy@v3.11.9
with:
heroku_app_name: ${{ secrets.HEROKU_APP_NAME }}
heroku_api_key: ${{ secrets.HEROKU_API_KEY }}
akhileshns/heroku-deploy
的 Action 来将应用程序部署到 Heroku。通过使用 GitHub Secrets,您可以安全地存储和使用敏感信息。变量与上下文
${{ github.event_name }}
来获取当前事件的名称。以下是一个使用上下文的示例:- name: Print event name
run: echo "The event that triggered this workflow is: ${{ github.event_name }}"
env:
NODE_ENV: production
并行与串行执行
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Build
run: echo "Building..."
test:
runs-on: ubuntu-latest
needs: build
steps:
- name: Test
run: echo "Testing..."
test
作业依赖于 build
作业,只有在 build
作业成功完成后,test
作业才会执行。常见问题解答
run: echo
命令来打印变量和状态。${{ secrets.SECRET_NAME }}
访问这些 Secrets。concurrency
关键字来设置工作流的并发限制,以避免同时运行多个相同工作流的实例。container
关键字来指定容器镜像。例如:jobs:
build:
runs-on: ubuntu-latest
container:
image: node:14
actions/cache
Action 来缓存依赖项,以加快工作流的执行速度。例如:- name: Cache Node.js modules
uses: actions/cache@v2
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}