Skip to main content

GitHub AE 目前处于受限版。

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

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

添加脚本到工作流程

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

jobs:
  example-job:
    runs-on: ubuntu-latest
    steps:
      - run: npm install -g bats

要使用工作流运行存储在存储库中的脚本,必须先将存储库签出到运行器。 完成此操作后,即可使用 run 关键字在运行器上运行脚本。 以下示例运行两个脚本,每个脚本在单独的作业步骤中运行。 脚本在运行器上的位置通过设置运行命令的默认工作目录加以指定。 有关详细信息,请参阅“设置作业的默认值”。

jobs:
  example-job:
    runs-on: ubuntu-latest
    defaults:
      run:
        working-directory: ./scripts
    steps:
      - name: Check out the repository to the runner
        uses: actions/checkout@v4  
      - name: Run a script
        run: ./my-script.sh
      - name: Run another script
        run: ./my-other-script.sh

希望工作流作业运行的任何脚本,都必须是可执行脚本。 可以在工作流中执行此操作:方法一是将脚本作为参数(例如 run: bash script.sh),传递给将运行脚本的解释器;方法二是让文件本身变成可执行文件。 可以通过在本地使用 git update-index --chmod=+x PATH/TO/YOUR/script.sh 命令来授予文件执行权限,然后将文件提交并推送到存储库。 另外,对于在 Linux 和 Mac 运行器上运行的工作流,可以在运行脚本之前添加一个命令,从而在工作流作业中授予文件执行权限:

jobs:
  example-job:
    runs-on: ubuntu-latest
    defaults:
      run:
        working-directory: ./scripts
    steps:
      - name: Check out the repository to the runner
        uses: actions/checkout@v4  
      - name: Make the script files executable
        run: chmod +x my-script.sh my-other-script.sh
      - name: Run the scripts
        run: |
          ./my-script.sh
          ./my-other-script.sh

要详细了解 run 密钥,请参阅“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@v3
        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@v3
        with:
          name: output-log-file

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

有关项目的详细信息,请参阅“将工作流程数据存储为构件”。

后续步骤

若要继续了解 GitHub Actions,请参阅“关于工作流程”。