23 自定义行动之使用 Docker 容器

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

什么是 Docker 容器?

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

创建自定义行动

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

第一步:准备项目

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

1
2
3
4
my-custom-action/
├── Dockerfile
├── action.yml
└── entrypoint.sh

第二步:编写 Dockerfile

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

1
2
3
4
5
6
7
8
9
10
11
# 使用官方的 Node.js 镜像
FROM node:14

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

# 复制 entrypoint.sh
COPY entrypoint.sh .

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

第三步:编写 entrypoint.sh

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

1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash

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

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

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

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

1
chmod +x entrypoint.sh

第四步:编写 action.yml

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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 的工作流文件,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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:

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

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

结论

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

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

23 自定义行动之使用 Docker 容器

https://zglg.work/github-actions-zero/23/

作者

AI免费学习网(郭震)

发布于

2024-08-15

更新于

2024-08-16

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论