You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向打包后的容器化GitHub Action传递参数?

解决GitHub Actions中使用Docker镜像Action时参数传递问题

当你直接使用uses: docker://xxx格式引用自定义镜像时,GitHub Actions不会自动将with字段的参数转换为容器的命令行参数,而是会将这些参数转换为带INPUT_前缀的环境变量(比如with.url对应INPUT_URL,with.responseCode对应INPUT_RESPONSECODE)。你的镜像报错是因为entrypoint没有读取这些环境变量,导致命令行参数缺失。

解决方案1:调整镜像的entrypoint脚本(推荐)

修改镜像的entrypoint,让它读取GitHub Actions自动注入的INPUT_*环境变量,再传递给底层命令。

示例entrypoint.sh脚本:

#!/bin/sh
set -euo pipefail

# 从环境变量获取参数,url为必填项,其他参数设置默认值
URL="${INPUT_URL:?Missing required input 'url'}"
RESPONSE_CODE="${INPUT_RESPONSECODE:-200}"
TIMEOUT="${INPUT_TIMEOUT:-30000}"
INTERVAL="${INPUT_INTERVAL:-200}"

# 执行等待命令(参数顺序和原Action保持一致)
wait-for-response "$URL" "$RESPONSE_CODE" "$TIMEOUT" "$INTERVAL"

对应的Dockerfile配置:

# 基础镜像(和原Action保持一致)
FROM alpine:latest

# 安装依赖(如果需要)
RUN apk add --no-cache curl

# 复制entrypoint脚本并设置执行权限
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh

# 设置容器启动命令
ENTRYPOINT ["/entrypoint.sh"]

重新构建并推送镜像后,工作流可以完全沿用原来的with字段写法:

- name: Wait for backend
  uses: docker://benel/wait-for-response:1
  with:
    url: http://localhost:5984/hyperglosae
    responseCode: 401 

解决方案2:直接通过args传递命令行参数

如果不想修改镜像,可以在工作流中用args字段手动传递命令行参数,参数顺序要和镜像entrypoint期望的一致:

- name: Wait for backend
  uses: docker://benel/wait-for-response:1
  args: ["http://localhost:5984/hyperglosae", "401", "30000", "200"]

内容的提问来源于stack exchange,提问作者Aurélien Bénel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 10:30:29