用于通过 docker compose 构建和启动 Docker 容器,并进行简单的健康检查。
为单容器持续部署 (Single-Container Continuous Deployment) 设计。
核心目的是在一个 CI/CD 流程中,构建并启动一个新版本的应用容器,并清理 dangling 镜像,同时在构建完成后对新启动的容器进行简单的健康检查。
- 悬空镜像清理:构建结束后(无论成功与否),都会清理构建过程中产生的悬空镜像 (
dangling images)。 - 简单健康检查:通过检查最近创建的容器是否正在运行,来验证容器是否成功启动。
- 构建用时统计:记录并输出构建过程的用时。
- 失败日志输出:在容器启动失败时,输出相关日志以便调试。
为了使此 Action 正常工作,代码仓库中需要包含:
Dockerfiledocker-compose.yml
此 Action 的健康检查机制 (docker ps -lq) 只会检测最后一个被创建的容器。
因此,它仅适用于 docker-compose.yml 中只定义了一个服务的场景。
如果在多容器环境中使用,健康检查的结果可能是不准确或错误的,因为它无法保证检查到真正关心的特定容器。
name: Deploy Application
on:
push:
branches:
- main
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Build and Run Container
id: build_run_step
uses: hicane0/action-docker-build-single@v1
with:
health-check-delay: '10'
- name: Print total duration
run: |
echo "🚀 本次构建耗时: ${{ steps.build_run_step.outputs.duration }}"| 参数 (Parameter) | 描述 (Description) | 是否必需 (Required) | 默认值 (Default) |
|---|---|---|---|
health-check-delay |
执行运行状态检查前等待的秒数。 | false |
'10' |
| 输出 (Output) | 描述 (Description) |
|---|---|
duration |
从开始到完成健康检查的总耗时。 |