
mendersoftware/create-artifact-workerArtifact Creation Worker 是一个轻量级制品创建工作器镜像,旨在自动化处理各类制品(如软件包、容器镜像、文档、归档文件等)的创建流程。该镜像可无缝集成到CI/CD管道、自动化构建系统或批量处理任务中,通过配置化参数控制制品构建行为,简化从源码到成品的转换过程,提升制品管理效率。
通过 docker run 命令启动工作器,指定必要参数:
bashdocker run -d \ --name artifact-worker \ -e ARTIFACT_TYPE="tar" \ # 制品类型(必填) -e SOURCE_PATH="/app/source" \ # 源文件在容器内的路径(必填) -e OUTPUT_PATH="/app/output" \ # 制品输出路径(必填) -e ARTIFACT_VERSION="1.0.0" \ # 制品版本号(可选) -v /host/source:/app/source \ # 挂载宿主机源文件目录 -v /host/output:/app/output \ # 挂载宿主机输出目录 artifact-creation-worker:latest
| 环境变量名 | 描述 | 可选值/示例 | 是否必填 |
|---|---|---|---|
ARTIFACT_TYPE | 制品类型 | tar/zip/rpm/deb/docker/document | 是 |
SOURCE_PATH | 源文件在容器内的路径 | /app/source | 是 |
OUTPUT_PATH | 制品输出路径(容器内) | /app/output | 是 |
ARTIFACT_VERSION | 制品版本号 | 1.0.0/2.3.4-beta | 否 |
LOG_LEVEL | 日志级别 | info/debug/warn/error | 否(默认info) |
CONFIG_FILE | 外部配置文件路径(容器内) | /app/config/config.yaml | 否 |
如需复杂配置,可通过挂载外部配置文件(支持JSON或YAML格式)覆盖默认行为。配置文件示例(config.yaml):
yamlartifact: type: "docker" # 制品类型 version: "2.1.0" # 制品版本 source: path: "/app/source" # 源文件路径 exclude: ["tmp/*", "*.log"] # 排除文件/目录 output: path: "/app/output" # 输出路径 filename: "app-image-{{version}}.tar" # 自定义文件名(支持变量{{version}}) options: # 制品类型特定选项(以docker为例) build-arg: ["HTTP_PROXY=[***]", "VERSION={{version}}"] dockerfile: "Dockerfile.prod" logging: level: "debug" # 日志级别 file: "/app/logs/worker.log" # 日志文件路径(需挂载日志目录)
启动命令(挂载配置文件):
bashdocker run -d \ --name artifact-worker \ -v /host/source:/app/source \ -v /host/output:/app/output \ -v /host/config/config.yaml:/app/config/config.yaml \ # 挂载配置文件 -v /host/logs:/app/logs \ # 挂载日志目录 -e CONFIG_FILE="/app/config/config.yaml" \ # 指定配置文件路径 artifact-creation-worker:latest
在 .gitlab-ci.yml 中使用该镜像进行制品构建:
yamlstages: - build - package build: stage: build script: - # 编译源码等前置步骤 - mkdir -p source output package: stage: package image: artifact-creation-worker:latest variables: ARTIFACT_TYPE: "rpm" ARTIFACT_VERSION: "$CI_COMMIT_TAG" # 使用GitLab标签作为版本号 SOURCE_PATH: "/app/source" OUTPUT_PATH: "/app/output" script: - # 工作器自动执行制品创建 artifacts: paths: - output/ # 收集输出的制品 only: - tags # 仅在打标签时触发
-u $(id -u):$(id -g) 指定用户ID避免权限问题)。/var/run/docker.sock)。


manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务