发布于 2026-01-06 6 阅读
0

GitHub Actions 教程 AWS 安全直播!

GitHub Actions教程

AWS 安全直播!

我们将继续推出关于如何优化 GitHub 工作流程的系列文章。我们已经讨论过GitHub 的基本工作流程。现在,让我们来看看 GitHub Actions。

GitHub Actions 乍看之下可能有些复杂,但实际上非常实用。它允许你在工作流程中设置自动任务,从而让你的工作更轻松、更有条理。

你可能想知道:

  • “GitHub Actions”究竟是什么?
  • 真的那么重要吗?
  • 你如何使用它?

别担心!本文将解答所有这些问题。我们将解释什么是 GitHub Actions、它的主要组成部分、它的用途以及如何开始使用它。


什么是 GitHub Actions?

GitHub Actions 是一个可以帮助你构建更好软件的工具,它不针对特定的语言或平台,而是一项可以自动化工作流程的功能,例如自动化代码的构建、测试和部署,它通过与你的代码库集成来实现这一点,因此你可以将它与你的代码库一起使用。


GitHub Actions 组件:

GitHub Actions 工作流图

您可以配置 GitHub Actions工作流,使其在仓库中发生特定事件时触发,例如创建拉取请求或创建问题。您的工作流包含一个或多个作业,这些作业可以按顺序或并行运行。每个作业都将在其自身的虚拟机运行器或容器中运行,并包含一个或多个步骤,这些步骤可以运行您定义的脚本或运行Action(一种可重用的扩展,可以简化您的工作流)。

  1. 工作流程

    • 工作流是一组自动化任务,这些任务描述在一个YAML文件中。它通常位于.github/workflows代码仓库的根目录下。工作流描述了一个或多个可由代码推送、拉取请求等事件触发的作业。例如,您可以创建一个工作流,在每次拉取请求后运行测试。
    • yamlfile: 是一种人类可读的数据序列化标准,可以与所有编程语言结合使用,并且通常用于编写配置文件。
    • .github目录:是 GitHub 用来存储仓库配置文件的一个特殊目录。它用于存储 GitHub Actions 工作流、问题模板和其他配置文件。
  2. 操作
    操作是可在工作流程中使用的可重用代码单元。它可以是单个命令,也可以是可运行的脚本。操作可用于自动化工作流程,例如构建、测试和部署代码。

  3. 事件
    事件是指代码仓库中触发工作流运行的特定活动。例如,推送代码、创建拉取请求或发布新版本。

  4. 运行器
    运行器是一台虚拟机,用于在工作流被触发时运行工作流。您可以将工作流配置为在特定的运行器上运行,例如 Ubuntu Linux、Microsoft Windows 或 macOS。

  5. 任务和步骤
    一个工作流由一个或多个任务组成,每个任务又包含多个步骤。每个步骤可以是待执行的 shell 脚本,也可以是待执行的操作。例如,您可以先执行一个构建应用程序的步骤,然后再执行一个运行测试的步骤。

  6. 密钥
    密钥是加密的环境变量,可在工作流中使用。您可以使用密钥存储敏感信息,例如 API 密钥、密码和令牌。例如,如果您想使用某个令牌VERCEL_TOKEN将应用程序部署到 Vercel,则可以将此令牌作为密钥存储在代码库中,并在工作流中使用它。


让我们一起创建一个简单的 GitHub Actions 工作流:

我们的任务是创建一个简单的 GitHub Actions 工作流,以便
在每次向代码仓库推送代码时运行 ESLint 代码检查。以下是具体实现方法:

  1. 在 GitHub 仓库的目录中创建一个工作流文件.github/workflows。你可以随意命名该文件,但必须带有.yml扩展名。例如,你可以将其命名为main.yml.

  2. 将以下代码添加到main.yml文件中:

    name: Eslint check # name of the workflow
    on: [push] # the event that triggers the workflow
    jobs: 
      eslint: # name of the job
        runs-on: ubuntu-latest # the runner that the job will run on
        steps: 
          - name: start the job # name of the step
            run: echo "🚀 Start the job" # the command to run
    
          - name: Checkout code from repository
            uses: actions/checkout@v3 # an action to check out the code
    
          - name: Install dependencies
            run: npm ci # ci is used to install the dependencies faster than npm install
    
          - name: Run Eslint
            run: npx eslint .
    
  3. 提交并推送更改到您的代码仓库。

  4. 查看您的工作流程结果:

    1. 在 GitHub 仓库中,点击“操作”选项卡。
    2. 你应该能看到你的工作流程正在运行或已经完成。GitHub 工作流程概述

搞定!你已经创建了第一个 GitHub Actions 工作流。现在,每当你向代码仓库推送代码时,Eslint 都会对你的代码进行检查。

让我们创建一个更复杂的版本

我们的第二个任务是创建一个工作流,在每次向主分支推送或拉取请求时运行 ESLint 和 Prettier 检查并构建应用程序。

name: Eslint, Prettier, and Build

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  eslint:
    name: Eslint checks
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code from repository
        uses: actions/checkout@v3

      - name: setup node environment
        uses: actions/setup-node@v3
        with:
          node-version: '18'

      - name: Install dependencies
        run: npm ci

      - name: Run Eslint
        run: npx eslint .

  prettier:
    name: Prettier checks
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code from repository
        uses: actions/checkout@v3

      - name: setup node environment
        uses: actions/setup-node@v3
        with:
          node-version: '18'

      - name: Install dependencies
        run: npm ci

      - name: Run Prettier
        run: npx prettier --check .

  build:
    name: Build the application
    runs-on: ubuntu-latest

    needs: # this is used to specify that this job depends on the previous jobs
      - eslint
      - prettier

    steps:
      - name: Checkout code from repository
        uses: actions/checkout@v3

      - name: setup node environment
        uses: actions/setup-node@v3
        with:
          node-version: '18'

      - name: Install dependencies
        run: npm ci

      - name: Build the application
        run: npm run build
Enter fullscreen mode Exit fullscreen mode

让我们创建第三个工作流程,也是最复杂的一个。

我们的第二个任务是创建一个工作流程,该流程对我们的代码运行 ESLint 和 Prettier 检查,运行 TypeScript 检查,构建应用程序,并在每次向主分支提交拉取请求时运行测试。

name: Eslint, Prettier, Typescript, Build, and Test

on:
  pull_request:
    branches:
      - master

jobs:
  eslint-prettier:
    name: Eslint and Prettier checks
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code from repository
        uses: actions/checkout@v3

      - name: setup node environment
        uses: actions/setup-node@v3
        with:
          node-version: '18'

      - name: Install dependencies
        run: npm ci

      - name: Run Eslint
        run: npx eslint .

      - name: Run Prettier
        run: npx prettier --check .

  typescript:
    name: Typescript checks
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code from repository
        uses: actions/checkout@v3

      - name: setup node environment
        uses: actions/setup-node@v3
        with:
          node-version: '18'

      - name: Install dependencies
        run: npm ci

      - name: Run Typescript checks
        run: npx tsc --noEmit

  build:
    name: Build the application
    runs-on: ubuntu-latest

    needs:
      - eslint-prettier
      - typescript

    steps:
      - name: Checkout code from repository
        uses: actions/checkout@v3

      - name: setup node environment
        uses: actions/setup-node@v3
        with:
          node-version: '18'

      - name: Install dependencies
        run: npm ci

      - name: Build the application
        run: npm run build

  test:
    name: Run tests
    runs-on: ubuntu-latest

    needs: build

    steps:
      - name: Checkout code from repository
        uses: actions/checkout@v3

      - name: setup node environment
        uses: actions/setup-node@v3
        with:
          node-version: '18'

      - name: Install dependencies
        run: npm ci

      - name: Run tests
        run: npm test
Enter fullscreen mode Exit fullscreen mode

工作流程如下:

GitHub Actions 工作流


总结:

GitHub Actions 是一款强大的工具,可帮助您自动化工作流程,让您的工作更轻松、更有条理。它允许您设置自动任务,例如构建、测试和部署代码。您可以使用它来自动化重复性任务,从而节省时间。

本文解释了 GitHub Actions 的概念、主要组成部分、用途以及如何入门。我们还创建了两个简单的 GitHub Actions 工作流示例。希望本文能帮助您更好地理解 GitHub Actions,以及如何利用它来改进您的工作流程。


资源:

文章:

视频:

文章来源:https://dev.to/husamahmud/github-actions-tutorial-13ad