Jupyter AI

23 GitHub Actions 自动化教程:自定义行动之使用 Docker 容器

📅 发表日期: 2024年8月15日

分类: ⚙️GitHub Actions 入门

👁️阅读: --

在本篇教程中,我们将探索如何使用 Docker 容器创建自定义 GitHub Actions。这是自定义行动系列教程中的一部分,紧接着上一篇有关创建自定义行动的内容,并为下一篇关于编写 JavaScript 行动打下基础。

什么是 Docker 容器?

在深入主题之前,让我们先简要了解一下 Docker 容器。Docker 是一个开放源码的平台,它可以让开发者打包、分发和管理应用程序。Docker 容器是轻量级、可移动且自给自足的软件包,里面包含了程序运行所需的所有代码、库和依赖项,确保在任何环境中都能保持一致的运行效果。

创建自定义行动

我们将创建一个简单的自定义行动,使用 Docker 容器执行一段代码。在本例中,我们将创建一个算术操作的行动,该行动会接收两个数字并输出它们的和。

第一步:准备项目

在 GitHub 存储库中创建以下文件结构:

my-custom-action/
  ├── Dockerfile
  ├── action.yml
  └── entrypoint.sh

第二步:编写 Dockerfile

Dockerfile 中,我们需要定义如何构建 Docker 镜像。以下是一个简单的示例:

# 使用官方的 Node.js 镜像
FROM node:14

# 创建并设置工作目录
WORKDIR /usr/src/app

# 复制 entrypoint.sh
COPY entrypoint.sh .

# 设置 entrypoint
ENTRYPOINT ["bash", "./entrypoint.sh"]

第三步:编写 entrypoint.sh

entrypoint.sh 是我们自定义行动的核心,它将处理输入并执行逻辑:

#!/bin/bash

# 读取输入参数
num1=$1
num2=$2

# 计算和
sum=$((num1 + num2))

# 输出结果
echo "The sum of $num1 and $num2 is: $sum"

确保脚本是可执行的,您可以运行以下命令:

chmod +x entrypoint.sh

第四步:编写 action.yml

接下来,我们需要定义该行动的元数据。在 action.yml 文件中,您可以描述自定义行动的输入、输出和其他配置:

name: "Add Numbers"
description: "A GitHub Action that adds two numbers."
inputs:
  num1:
    description: "The first number."
    required: true
  num2:
    description: "The second number."
    required: true
outputs:
  sum:
    description: "The sum of the two numbers."
runs:
  using: "docker"
  image: "Dockerfile"

第五步:测试自定义行动

现在,我们已经创建了自定义行动,可以在工作流中进行测试。创建一个名为 .github/workflows/test.yml 的工作流文件,内容如下:

name: Test Add Numbers

on:
  push:
    branches:
      - main

jobs:
  add-numbers:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      
      - name: Add two numbers
        uses: ./my-custom-action
        with:
          num1: 10
          num2: 20

第六步:提交并观察结果

将所有更改提交到 GitHub:

git add .
git commit -m "Add custom action using Docker"
git push

在 GitHub Actions 界面中,您可以看到工作流的执行结果,输出将显示两个数字的和。

结论

在本篇教程中,我们介绍了如何使用 Docker 容器创建自定义 GitHub Actions。通过实例和代码,我们演示了如何构建、定义和测试一个简单的自定义行动。实践这些步骤后,您可以根据需求扩展功能或集成更复杂的逻辑。

在下一篇中,我们将探讨如何编写 JavaScript 行动,这是另一种创建自定义行动的方式,提供了更多灵活性和可移植性。敬请期待!

⚙️GitHub Actions 入门 (滚动鼠标查看)