GitHub Actions 运行简单命令

LinuxBeginner
立即练习

介绍

GitHub Actions 是一个持续集成和持续交付(CI/CD)平台,它允许你自动化你的构建、测试和部署流程。你可以创建工作流(workflow),对你仓库的每一次拉取请求(pull request)执行构建和测试,或者将合并后的拉取请求部署到生产环境。

工作流是一个可配置的自动化流程,它将运行一个或多个任务(job)。工作流由一个检入到你仓库的 YAML 文件定义,当你的仓库中发生某个事件时触发运行,也可以手动触发,或者按预定的时间表触发。

在这个 Lab 中,你将学习 GitHub Actions 工作流的基本构建块:

  1. 定义一个任务(job)。
  2. 指定运行环境(例如 Ubuntu)。
  3. 添加步骤(step)来执行命令。

你将创建一个简单的、向控制台打印 "Hello, World!" 的工作流。这个 Lab 基于你在前几个 Lab 中创建的仓库。你将克隆 github-actions-demo 仓库并更新一个现有的工作流文件。

在 build 任务中添加 runs-on 键并设置为 ubuntu-latest

在这一步中,你将克隆仓库,并更新一个现有的工作流文件,以定义一个任务(job)并指定它应该在哪个操作系统上运行。

  1. 在你的 github-actions-demo 的 GitHub 仓库页面上,点击绿色的 Code 按钮。
  2. 确保选择了 HTTPS 标签页,并复制该 URL。它应该看起来像 https://github.com/your-username/github-actions-demo.git。
  3. 在 LabEx 环境中打开终端。默认路径是 ~/project。
  4. 使用 git clone 命令下载仓库。将 your-username 替换为你实际的 GitHub 用户名。
cd ~/project
git clone https://github.com/your-username/github-actions-demo.git
  1. 进入克隆下来的仓库:
cd ~/project/github-actions-demo
  1. 在 .github/workflows 目录下创建一个名为 simple-commands.yml 的新工作流文件:
touch .github/workflows/simple-commands.yml
  1. 在 WebIDE 中打开文件 .github/workflows/simple-commands.yml。你可以在左侧的文件浏览器中找到它。

  2. 向文件中添加以下内容,以定义工作流名称、触发器、任务和运行器(runner):

name: Simple Commands
on: [push]

jobs:
  build:
    runs-on: ubuntu-latest

runs-on 关键字允许你指定运行该任务的机器类型。GitHub 为 Linux、Windows 和 macOS 提供了托管运行器(hosted runners)。ubuntu-latest 是一个常用的运行器,它提供了一个标准的 Ubuntu 环境。

在 build 任务下添加 steps 部分

现在你已经定义了工作环境(job environment),你需要定义该工作实际执行的操作。这是使用 steps 关键字来完成的。

一个工作(job)包含一系列称为 steps 的任务。步骤(steps)可以运行命令(commands)、运行设置任务(setup tasks)或运行你仓库中的一个动作(action)。

说明

  1. 在 WebIDE 中打开 .github/workflows/simple-commands.yml 文件。
  2. 在 build 工作(job)下添加 steps 关键字。

将你的文件更新为如下所示:

name: Simple Commands
on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:

确保 steps: 与 runs-on: 处于相同的缩进级别。

添加一个名为 'Echo Hello' 的步骤,并运行 echo "Hello, World!" 命令

在这一步中,你将向 steps 部分添加多个任务,以执行各种 shell 命令。这演示了你可以在 runner 上运行标准的 Linux 命令。

说明

  1. 在 WebIDE 中打开 .github/workflows/simple-commands.yml 文件。
  2. 在 steps: 键下添加以下步骤:
steps:
  - name: Echo Hello
    run: echo "Hello, World!"

  - name: Show Date
    run: date

  - name: List Files
    run: ls -la

你的完整文件应如下所示:

name: Simple Commands
on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Echo Hello
        run: echo "Hello, World!"

      - name: Show Date
        run: date

      - name: List Files
        run: ls -la

解释

  • echo "Hello, World!": 将文本打印到控制台。
  • date: 显示 runner 上的当前日期和时间。
  • ls -la: 列出当前目录中的文件。你会注意到该目录几乎是空的,因为我们还没有检出(checkout)代码(我们将在下一个实验中进行此操作)。

提交并推送更新后的工作流文件

GitHub Actions 工作流是你的仓库代码的一部分。要激活工作流,你需要提交更改并将其推送到 GitHub。

  1. 确保你位于仓库目录下:
cd ~/project/github-actions-demo
  1. 暂存新的工作流文件:
git add .github/workflows/simple-commands.yml
  1. 使用描述性的消息提交更改:
git commit -m "Add simple commands workflow"

示例输出:

[main ... ] Add simple commands workflow
 1 file changed, 14 insertions(+)
 create mode 100644 .github/workflows/simple-commands.yml
  1. 将更改推送到 GitHub 上的远程仓库:
git push

关于身份验证的注意事项: 当你运行 git push 时,WebIDE 会自动提示你进行身份验证。请遵循以下详细步骤:

  1. 会弹出一个提示框,显示消息:**"The extension 'GitHub' wants to sign in using GitHub."** 点击 Allow。
  2. 会出现一个新的通知。点击 **"Copy&Continue to GitHub"**,然后在下一个提示中点击 **"Open"**。
  3. 在打开的浏览器窗口中登录你的 GitHub 账户,并输入已复制的授权码。确认授权后,页面将自动关闭。
  4. 等待几秒钟,你将看到终端成功完成推送操作。

隐私声明: WebIDE 会请求对你的 GitHub 账户的完全访问权限以进行身份验证。你无需担心隐私问题——在当前 Lab 挑战结束后,LabEx 虚拟机将立即销毁,你的凭证和授权信息不会被保留。

此身份验证过程不需要手动配置用户名或 Personal Access Token (PAT)。

示例输出:

Enumerating objects: 6, done.
Counting objects: 100% (6/6), done.
Delta compression using up to 4 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 447 bytes | 447.00 KiB/s, done.
Total 4 (delta 1), reused 0 (delta 0), pack-reused 0
To https://github.com/your-username/github-actions-demo.git
   abcdef1..1234567  main -> main

在 GitHub Actions 标签页查看工作流运行日志

推送代码后,工作流将自动在 GitHub 上触发。你可以查看工作流运行日志 (workflow run logs) 来了解发生了什么。

  1. 在网页浏览器中访问你的仓库 (repository) 地址:https://github.com/your-username/github-actions-demo
  2. 点击仓库页面顶部的 Actions 标签页。
  3. 你应该会看到一个工作流运行列表,其名称可能为 "Simple Commands" 或 "Add simple commands workflow"。

注意: 当你推送代码时,如果仓库中有多个工作流文件,可能会触发多个 Actions。请通过检查左侧边栏中的工作流名称或使用右侧的工作流运行列表来识别正确的工作流运行。

  1. 点击工作流运行的标题,然后点击 build 任务 (job)。
  2. 展开 Echo Hello、Show Date 和 List Files 步骤,以查看它们的输出。

你会注意到 List Files 显示了一个空目录(除了隐藏文件如 . 和 ..),这表明执行器 (runner) 是从一个干净的环境开始的。

GitHub Actions logs

GitHub Actions tab

总结

在这个实验(Lab)中,你成功创建了一个 GitHub Actions 工作流,该工作流执行了多个 shell 命令。你学会了如何:

  1. 定义一个任务(Job):你创建了一个 build 任务。
  2. 选择一个运行器(Runner):你使用了 runs-on: ubuntu-latest。
  3. 运行多个命令:你添加了运行 echo、date 和 ls 的步骤。
  4. 观察运行器环境:你看到运行器是从一个空目录开始的。

在下一个实验(Lab)中,你将学习如何使用 Checkout Action 在运行器中访问你的仓库文件。