Skip to main content
We publish frequent updates to our documentation, and translation of this page may still be in progress. For the most current information, please visit the English documentation.
GitHub AE is currently under limited release.

GitHub Actions 的基本功能

GitHub Actions 旨在帮助您建立强大而动态的自动化。 本指南说明如何创建包括环境变量、定制化脚本等的 GitHub Actions 工作流程。

概述

GitHub Actions 允许您自定义工作流程,以满足应用程序和团队的独特需求。 在本指南中,我们将讨论一些基本的自定义技术,例如使用变量、运行脚本以及在作业之间共享数据和构件。

在工作流程中使用变量

GitHub Actions 包含每个工作流程运行的默认环境变量。 如果您需要使用自定义环境变量,可以在 YAML 工作流程文件中设置这些变量。 此示例演示如何创建名为 POSTGRES_HOSTPOSTGRES_PORT 的自定义变量。 然后,这些变量可供 node client.js 脚本使用。

jobs:
  example-job:
      steps:
        - name: Connect to PostgreSQL
          run: node client.js
          env:
            POSTGRES_HOST: postgres
            POSTGRES_PORT: 5432

有关详细信息,请参阅“变量”。

添加脚本到工作流程

您可以使用操作来运行脚本和 shell 命令,然后在指定的运行器上执行。 此示例演示操作如何使用 run 关键字在运行器上执行 npm install -g bats

jobs:
  example-job:
    steps:
      - run: npm install -g bats

例如,要将脚本作为操作运行,您可以将脚本存储在您的仓库中并提供路径和 shell 类型。

jobs:
  example-job:
    steps:
      - name: Run build script
        run: ./.github/scripts/build.sh
        shell: bash

有关详细信息,请参阅“GitHub Actions 的工作流语法”。

在作业之间共享数据

如果作业生成你要与同一工作流中的另一个作业共享的文件,或者你要保存这些文件供以后参考,则可以将它们作为工件存储在 GitHub 中。 构件是创建并测试代码时所创建的文件。 例如,构件可能包含二进制或包文件、测试结果、屏幕截图或日志文件。 构件与其创建时所在的工作流程运行相关,可被另一个作业使用。 运行中调用的所有操作和工作流都具有对该运行项目的写入权限。

例如,您可以创建一个文件,然后将其作为构件上传。

jobs:
  example-job:
    name: Save output
    steps:
      - shell: bash
        run: |
          expr 1 + 1 > output.log
      - name: Upload output file
        uses: actions/upload-artifact@v2
        with:
          name: output-log-file
          path: output.log

若要从单独的工作流运行中下载工件,可以使用 actions/download-artifact 操作。 例如,可以下载名为 output-log-file 的工件。

jobs:
  example-job:
    steps:
      - name: Download a single artifact
        uses: actions/download-artifact@v2
        with:
          name: output-log-file

若要从同一工作流运行中下载工件,下载作业应指定 needs: upload-job-name,使其在上传作业完成之前不会开始。

有关工件的详细信息,请参阅“使用工件持久保存工作流数据”。

后续步骤

若要继续了解 GitHub Actions,请参阅“管理复杂工作流”。