32 Commits
11 ... 12

Author SHA1 Message Date
endial 569f21ce68 feat: 更新 Submodule 版本,支持单段纯数字分支生成标签
ci/woodpecker/push/woodpecker Pipeline was successful
2026-01-20 11:33:57 +08:00
endial 05ef880297 docs: 更新说明文档
ci/woodpecker/push/woodpecker Pipeline was successful
2026-01-20 10:42:40 +08:00
endial c775a7b636 feat: 删除Dockerfile中的架构参数 2026-01-20 10:42:33 +08:00
endial 22a1144fd8 feat: 更新本地编译脚本 2026-01-20 10:42:22 +08:00
endial 3a9e429962 feat: 更新用户自定义配置路径 2026-01-20 10:38:20 +08:00
endial 5b828ae161 feat: 更新 Submodule 版本
ci/woodpecker/push/woodpecker Pipeline was successful
2026-01-13 17:08:26 +08:00
endial c1bd8eca92 fix: 修复描述信息错误 2026-01-13 17:08:15 +08:00
endial a966933407 feat: 更新为基于 Woodpecker 流水线的编译版本
ci/woodpecker/push/woodpecker Pipeline was successful
2026-01-13 11:17:03 +08:00
endial b4efe5cdc9 merge:合并主分支 2025-04-09 16:20:57 +08:00
endial 5c5f028a9f docs: 更新描述文档 2025-04-09 16:17:04 +08:00
endial e9e6f8b246 feat: 增加编译脚本;启用华为云镜像存储 2025-04-09 16:16:46 +08:00
endial 5af94e4af7 docs: 更新文档中有关镜像仓库地址 2023-09-06 15:20:15 +08:00
endial a4e17d008d docs: 更新文档中有关镜像仓库地址 2023-09-06 15:20:07 +08:00
endial 9be2158f3f feat: 基于Dockerfile新模板更改 2023-09-06 15:15:21 +08:00
endial a7dce28a44 feat: 本地编译脚本增加main/master分支的识别 2023-09-06 15:14:51 +08:00
endial cc56771b4d feat: 增加临时镜像的清理操作 2023-09-06 15:14:45 +08:00
endial c8f07daecf feat: 更新Docker打包的忽略文件配置 2023-09-06 15:14:40 +08:00
endial ea09e4cf19 feat: 基于Dockerfile新模板更改 2023-09-06 15:13:44 +08:00
endial b65a926e48 feat: 本地编译脚本增加main/master分支的识别 2023-09-06 15:10:05 +08:00
endial ddbba81e5e feat: 增加临时镜像的清理操作 2023-09-06 15:08:49 +08:00
endial 045bc39896 feat: 更新Docker打包的忽略文件配置 2023-09-06 15:07:43 +08:00
endial c1bd48fccf feat: 更新本地缓存资源路径 2023-08-11 11:13:19 +08:00
endial e341cd625a feat: 更新本地缓存资源路径 2023-08-11 11:13:00 +08:00
endial 79a4d65288 feat: 增加 CI/CD 清理临时资源处理 2023-08-11 11:10:28 +08:00
endial 72da404b29 feat: 增加 CI/CD 清理临时资源处理 2023-08-11 11:09:40 +08:00
endial 165aaa2e50 feat: 更新 CI/CD 编译阶段定义 2023-08-04 15:12:49 +08:00
endial 41320b75cb feat: 更新 CI/CD 编译阶段定义 2023-08-04 15:11:53 +08:00
endial 485872a627 feat: 优化 Dockerfile 2023-08-04 15:05:29 +08:00
endial 98545d1e26 feat: 优化 Dockerfile 2023-08-04 15:05:15 +08:00
endial 48edd9df26 feat: CI/CD 增加 tag 选择编译环境 2023-08-02 10:42:38 +08:00
endial 74687fb259 feat: CI/CD 增加 tag 选择编译环境 2023-08-02 10:41:42 +08:00
endial f37b6f5f29 feat: 更新为 libssl3 2023-07-28 09:59:11 +08:00
12 changed files with 163 additions and 160 deletions
Submodule
+1
Submodule .ci/common added at b0ca0dc3a3
+1 -1
View File
@@ -1,7 +1,7 @@
.git .git
.gitignore .gitignore
.gitmodules
./alpine
./Makefile ./Makefile
*.yml *.yml
-61
View File
@@ -1,61 +0,0 @@
# CI/CD 的阶段定义,按顺序执行各阶段;默认包含`.pre`(最先执行)/`.post`(最后执行)两个阶段,不用显示定义
stages:
- build
- test
- deploy
# 全局变量定义
variables:
IMG_URL: "$HARBOR_HOST/$HARBOR_PROJECT/$CI_PROJECT_NAME"
IMG_TAG: ":latest"
# 默认值信息配置
default:
# 各 stage 使用的默认镜像,如果不定义,则为 gitlab-runner 创建时指定的镜像;各 stage 可以覆盖该值以使用不同的镜像
image: docker.colovu.com/library/docker:20.10.16
# Gitlab-runner 配置的执行器为 Docker 时,需要 配置对应的 dind 服务
services:
- name: docker.colovu.com/library/docker:20.10.16-dind
alias: docker
# 流水线中,各阶段都会执行的脚本命令,包括`before_script`(在各阶段 script 前执行)/`after_script`(在各阶段 script 后执行)
before_script:
- |
if [[ "$CI_COMMIT_BRANCH" == "$CI_DEFAULT_BRANCH" ]]; then
IMG_TAG=":latest"
else
IMG_TAG=":$CI_COMMIT_REF_SLUG"
fi
- docker login -u "$HARBOR_USERNAME" -p "$HARBOR_PASSWORD" $HARBOR_URL
# 编译阶段任务
build-arm64:
stage: build
script:
- export
- env
- docker buildx build --platform=linux/arm64 --pull -t "$IMG_URL$IMG_TAG-linux-arm64" . --push
build-amd64:
stage: build
script:
- docker buildx build --platform=linux/amd64 --pull -t "$IMG_URL$IMG_TAG-linux-amd64" . --push
build-artifact:
stage: build
needs: [build-amd64, build-arm64]
script:
- docker manifest create "$IMG_URL$IMG_TAG" "$IMG_URL$IMG_TAG-linux-arm64" "$IMG_URL$IMG_TAG-linux-amd64"
- docker manifest push "$IMG_URL$IMG_TAG"
# 测试阶段任务
test:
stage: test
script:
- docker run --rm --platform=linux/arm64 "$IMG_URL$IMG_TAG" /bin/uname -a
- docker run --rm --platform=linux/amd64 "$IMG_URL$IMG_TAG" /bin/uname -a
# 部署阶段任务
deploy:
stage: deploy
script:
- echo "deploy stage"
+3
View File
@@ -0,0 +1,3 @@
[submodule ".ci/common"]
path = .ci/common
url = https://git.colovu.com/docker/common.git
+55
View File
@@ -0,0 +1,55 @@
# 注意:
# 1. git commit 信息中包含"[CI SKIP]"或"[SKIP CI]"则不触发工作流(注意大小写)
# 2. 工作步骤中包含 volumes 挂载时,需在 Woodpecker 配置中添加 volumes 挂载信任(Trust
# 3. lables 配置项,可配置多个;如果存在,则必须完全符合 Runner 创建时设置的 Lables 配置项
# 4. command 中,引用自定义变量不能使用`${VAR}`方式,需要使用`$VAR`方式;带花括号的变量,会在 Woodpecker 模板引擎解析阶段被替换(此时变量为空)
# 5. 多架构编译后推送至 SWR 报错,或单架构编译后必须在推送时明确指定架构信息才能推送;可通过在编译命令中增加参数`--provenance=false --sbom=false`解决
# 6. 使用 Git Submodule 管理通用脚本时,需手动更新 Submodule
when:
# 匹配 main
- event: push
branch: main
# 匹配 master
- event: push
branch: master
# 匹配数字开头的分支,如 1.0, 2, 3.2.1
- event: push
branch: "[0-9]*"
# 匹配 v 开头的版本分支,如 v1, v2.0
- event: push
branch: "v[0-9]*"
# 匹配 tag 事件
- event: tag
ref: "refs/tags/(v?[0-9].*)"
labels:
runtime: docker
arch: amd64
multiarch: "true"
steps:
- name: 初始化子模块
image: alpine/git
commands:
- git submodule update --init --recursive
- name: 编译并推送镜像
image: docker:cli
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
SWR_REGISTRY: "swr.cn-north-4.myhuaweicloud.com"
DOCKER_CLI_EXPERIMENTAL: enabled
SWR_USERNAME:
from_secret: swr_colovu_user
SWR_PASSWORD:
from_secret: swr_colovu_passwd
commands:
- |
# 直接执行 Submodule .ci/common 下的构建推送脚本
if [ ! -f ".ci/common/build_push.sh" ]; then
echo "错误: 未找到 .ci/common/build_push.sh 脚本"
exit 1
fi
- sh ./.ci/common/build_push.sh
+31 -32
View File
@@ -1,55 +1,50 @@
# Ver: 1.9 by Endial Fang (endial@126.com) # Ver: 1.11 by Endial Fang (endial@126.com)
# #
# 默认变量 ======================================================================== # 系统默认变量 ====================================================================
# 该部分变量为系统根据编译命令默认设置 # 该部分变量为系统根据编译命令默认设置
# `TARGETPLATFORM`:构建后的目标平台信息。如 `linux/amd64``linux/arm/v7``windows/amd64`
# `TARGETPLATFORM`:构建后的目标平台信息。如 `linux/amd64``linux/arm/v7``windows/amd64`
# `TARGETOS`:目标平台信息(TARGETPLATFORM)中的操作系统部分,如:`linux`、`windows` # `TARGETOS`:目标平台信息(TARGETPLATFORM)中的操作系统部分,如:`linux`、`windows`
# `TARGETARCH`:目标平台信息(TARGETPLATFORM)中的平台架构部分,如:`amd64`、`arm` # `TARGETARCH`:目标平台信息(TARGETPLATFORM)中的平台架构部分,如:`amd64`、`arm`
# `TARGETVARIANT`:目标平台信息(TARGETPLATFORM)中的版本变体部分,如:`v7` # `TARGETVARIANT`:目标平台信息(TARGETPLATFORM)中的版本变体部分,如:`v7`
# `BUILDPLATFORM`:用于构建的节点平台信息 # `BUILDPLATFORM`:用于构建的节点平台信息
# `BUILDOS`:用于构建的节点平台信息(BUILDPLATFORM)中的操作系统部分 # `BUILDOS`:用于构建的节点平台信息(BUILDPLATFORM)中的操作系统部分
# `BUILDARCH`用于构建的节点平台信息(BUILDPLATFORM)中的平台架构部分 # `BUILDARCH`用于构建的节点平台信息(BUILDPLATFORM)中的平台架构部分
# `BUILDVARIANT`用于构建的节点平台信息(BUILDPLATFORM)中的版本变体部分 # `BUILDVARIANT`用于构建的节点平台信息(BUILDPLATFORM)中的版本变体部分
# 可变参数 ======================================================================== # 可变参数 ========================================================================
# 该部分变量,在编译命令中通过 `--build-arg` 传入;如果未设置,则使用下面对应的默认值 # 该部分变量,在编译命令中通过 `--build-arg` 传入;如果未设置,则使用下面对应的默认值
# 设置当前应用名称及版本
ARG APP_NAME=dBuilder ARG APP_NAME=dBuilder
ARG APP_VER=12 ARG APP_VER=12
ARG REGISTRY_URL="docker.io/"
# 设置默认仓库地址,默认为本地仓库;定义时需要包含末尾的`/`
ARG REGISTRY_URL="docker.colovu.com/"
# 设置 apt-get 源:default / ustc / aliyun
ARG APT_SOURCE=aliyun ARG APT_SOURCE=aliyun
# 编译镜像时指定用于加速的本地软件包存储服务器地址
ARG LOCAL_URL=""
# 1. 生成镜像 ===================================================================== # 1. 生成镜像 =====================================================================
FROM --platform=${TARGETPLATFORM:-linux/amd64} ${REGISTRY_URL}colovu/debian:${APP_VER} FROM ${REGISTRY_URL}debian:${APP_VER}
# 声明需要使用的全局可变参数 # 声明需要使用的全局可变参数ARG声明的变量仅编译打包阶段有效)
ARG APP_NAME ARG APP_NAME
ARG APP_VER ARG APP_VER
ARG REGISTRY_URL
ARG APT_SOURCE ARG APT_SOURCE
ARG LOCAL_URL
ARG TARGETARCH
LABEL \ # 镜像元数据标签 - 符合OCI镜像规范
"Version"="v${APP_VER}" \ LABEL org.opencontainers.image.title="${APP_NAME}" \
"Description"="Docker image for Builder based on Debian." \ org.opencontainers.image.version="${APP_VER}" \
"Github"="https://github.com/colovu/docker-dbuilder" \ org.opencontainers.image.description="Docker image for Debian Builder." \
"Vendor"="Endial Fang (endial@126.com)" org.opencontainers.image.authors="Endial Fang <endial@126.com>" \
org.opencontainers.image.url="https://gitee.com/colovu/docker-${APP_NAME}" \
org.opencontainers.image.vendor="Endial Fang (colovu)" \
org.opencontainers.image.licenses="Apache-2.0" \
org.opencontainers.image.source="https://gitee.com/colovu/docker-${APP_NAME}" \
org.opencontainers.image.documentation="https://gitee.com/colovu/docker-${APP_NAME}/blob/main/README.md" \
maintainer="Endial Fang <endial@126.com>"
# 拷贝源仓库配置文件
COPY customer /
# 选择软件包源(Optional),以加速后续软件包安装 # 拷贝默认的通用脚本文件
RUN select_source ${APT_SOURCE} COPY .ci/common/debian /
# 以下命令安装的软件包 # 以下命令安装的软件包
# apt-transport-https apt-utils binutils binutils-common # apt-transport-https apt-utils binutils binutils-common
@@ -67,14 +62,18 @@ RUN select_source ${APT_SOURCE}
# libpcre2-8-0 libperl5.28 libprocps7 libpsl5 libpython3-stdlib # libpcre2-8-0 libperl5.28 libprocps7 libpsl5 libpython3-stdlib
# libpython3.7-minimal libpython3.7-stdlib libquadmath0 libreadline7 librhash0 # libpython3.7-minimal libpython3.7-stdlib libquadmath0 libreadline7 librhash0
# librtmp1 libsasl2-2 libsasl2-modules-db libsqlite3-0 libssh2-1 libssl-dev # librtmp1 libsasl2-2 libsasl2-modules-db libsqlite3-0 libssh2-1 libssl-dev
# libssl1.1 libstdc++-8-dev libtsan0 libubsan1 libuv1 libxml2 libxtables12 # libssl3 libstdc++-8-dev libtsan0 libubsan1 libuv1 libxml2 libxtables12
# linux-libc-dev lsb-base lsb-release make mime-support nano net-tools openssl # linux-libc-dev lsb-base lsb-release make mime-support nano net-tools openssl
# patch perl perl-modules-5.28 pinentry-curses pkg-config procps python3 # patch perl perl-modules-5.28 pinentry-curses pkg-config procps python3
# python3-minimal python3.7 python3.7-minimal readline-common sudo wget # python3-minimal python3.7 python3.7-minimal readline-common sudo wget
# xz-utils # xz-utils
RUN install_pkg sudo wget curl git ca-certificates iproute2 net-tools nano dpkg gnupg \ RUN set -eux; \
select_source ${APT_SOURCE}; \
\
install_pkg sudo wget curl git ca-certificates iproute2 net-tools nano dpkg gnupg \
dirmngr apt-utils apt-transport-https lsb-release iputils-ping \ dirmngr apt-utils apt-transport-https lsb-release iputils-ping \
build-essential cmake libcmocka-dev pkg-config libssl1.1 libssl-dev \ build-essential cmake libcmocka-dev pkg-config \
libtool libltdl7 libltdl-dev libssl3 libssl-dev \
libtool libltdl7 libltdl-dev;
CMD [] CMD []
-55
View File
@@ -1,55 +0,0 @@
# Ver: 1.11 by Endial Fang (endial@126.com)
#
# 当前 Docker 镜像的编译脚本
# 定义镜像名称
image_name :=colovu/dbuilder
# 定义默认镜像仓库地址
REGISTRY_URL :=docker.colovu.com
# 定义系统默认使用的源服务器,包含:default / ustc / aliyun
APT_SOURCE :=aliyun
# 定义镜像TAG,类似:
# <镜像名>:<分支名>-<7位Git ID> # Git 仓库且无文件修改直接编译
# <镜像名>:<分支名>-<年月日>-<时分秒> # Git 仓库有文件修改后的编译
# <镜像名>:latest-<年月日>-<时分秒> # 非 Git 仓库编译
current_subversion:=$(shell if [ ! `git status >/dev/null 2>&1` ]; then git rev-parse --short HEAD; else date +%y%m%d-%H%M%S; fi)
image_tag:=$(shell if [ ! `git status >/dev/null 2>&1` ]; then git rev-parse --abbrev-ref HEAD | sed -e 's/master/latest/'; else echo "latest"; fi)-$(current_subversion)
build-arg:=--build-arg REGISTRY_URL=$(REGISTRY_URL)
build-arg+=--build-arg APT_SOURCE=$(APT_SOURCE)
# 设置本地下载服务器路径,加速调试时的本地编译速度
local_ip:=`echo "en0 eth0" | xargs -n1 ip addr show 2>/dev/null | grep inet | grep -v 127.0.0.1 | grep -v inet6 | tr "/" " " | awk '{print $$2}'`
build-arg+=--build-arg LOCAL_URL=http://$(local_ip)/dist-files
.PHONY: build clean clearclean upgrade
# 屏蔽 "Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them"
export DOCKER_SCAN_SUGGEST=false
build:
@echo "Build $(image_name):$(image_tag)"
@docker build --progress plain --force-rm $(build-arg) -t $(image_name):$(image_tag) .
@echo "Add tag: $(image_name):latest"
@docker tag $(image_name):$(image_tag) $(image_name):latest
@echo "Build complete"
# 清理悬空的镜像(无TAG)及停止的容器
clearclean: clean
@echo "Clean untaged images and stoped containers..."
@docker ps -a | grep "Exited" | awk '{print $$1}' | sort -u | xargs -L 1 docker rm
@docker images | grep '<none>' | awk '{print $$3}' | sort -u | xargs -L 1 docker rmi -f
# 为了防止删除前缀名相同的镜像,在过滤条件中加入一个空格进行过滤
clean:
@echo "Clean all images for current application..."
@docker images | grep "$(image_name) " | awk '{print $$3}' | sort -u | xargs -L 1 docker rmi -f
# 更新所有 colovu 仓库的镜像
upgrade:
@echo "Upgrade all images..."
@docker images | grep 'colovu' | grep -v '<none>' | grep -v "latest-" | awk '{print $$1":"$$2}' | sort -u | xargs -L 1 docker pull
+11 -11
View File
@@ -1,4 +1,4 @@
# Builder # dBuilder
预安装常用工具及编译工具的镜像。 预安装常用工具及编译工具的镜像。
@@ -7,17 +7,17 @@
**版本信息:** **版本信息:**
- latest - 12bookworm
**镜像信息:** **镜像信息:**
* 镜像地址: * 镜像地址:
- 阿里云: registry.cn-shenzhen.aliyuncs.com/colovu/dbuilder:latest * 华为云: swr.cn-north-4.myhuaweicloud.com/colovu/dBuilder:latest
- DockerHubcolovu/dbuilder:latest * Colovu: registry.colovu.com/library/dBuilder:latest
- Colovu Registry: docker.colovu.com/colovu/dbuilder:latest * 依赖镜像:registry.colovu.com/library/debian:12
- 依赖镜像:colovu/debian:latest swr.cn-north-4.myhuaweicloud.com/colovu/debian:12
> 后续相关命令行默认使用`[Colovu Registry](https://docker.colovu.com)`镜像服务器做说明 > 后续相关命令行默认使用华为云 SWR 镜像服务器做说明
## TL;DR ## TL;DR
@@ -25,7 +25,7 @@ Docker 快速启动命令:
```shell ```shell
# 从 Registry 服务器下载镜像并启动 # 从 Registry 服务器下载镜像并启动
$ docker run -it docker.colovu.com/colovu/dbuilder /bin/bash docker run -it swr.cn-north-4.myhuaweicloud.com/colovu/dbuilder:latest /bin/bash
``` ```
## 数据卷 ## 数据卷
@@ -43,7 +43,7 @@ $ docker run -it docker.colovu.com/colovu/dbuilder /bin/bash
```dockerfile ```dockerfile
# 预编译阶段 =============================== # 预编译阶段 ===============================
FROM docker.colovu.com/colovu/dbuilder:latest FROM swr.cn-north-4.myhuaweicloud.com/colovu/dbuilder:latest
WORKDIR /tmp WORKDIR /tmp
@@ -66,7 +66,7 @@ CMD []
```dockerfile ```dockerfile
# 预编译阶段。命名为`builder` ================== # 预编译阶段。命名为`builder` ==================
FROM docker.colovu.com/colovu/dbuilder:latest as builder FROM swr.cn-north-4.myhuaweicloud.com/colovu/dbuilder:latest as builder
WORKDIR /tmp WORKDIR /tmp
@@ -93,4 +93,4 @@ CMD []
---- ----
本文原始来源 [Endial Fang](https://github.com/colovu) @ [Github.com](https://github.com) 本文原始来源 [Endial Fang](https://gitee.com/colovu) @ [Gitee.com](https://gitee.com)
Executable
+22
View File
@@ -0,0 +1,22 @@
#!/bin/bash
# Ver: 3.0 by Endial Fang (endial@126.com)
#
# Docker 镜像构建脚本 - 主入口
# 编译后镜像名称
export IMAGE_NAME="debian-builder"
# 依赖镜像的仓库地址(本镜像需要依赖原生 debian 镜像)
export REGISTRY_URL="swr.cn-north-4.myhuaweicloud.com/img-sync/docker.io/"
# 源仓库地址(本地编译时,使用阿里云源仓库)
export APT_SOURCE="aliyun"
# 针对无法直接下载到软件包,本地变异时,使用缓存的软件包
export LOCAL_URL="http://pkgs.colovu.com/dist"
# 引入本地构建脚本
if [ -f ".ci/common/build_local.sh" ]; then
# 执行本地构建脚本并传递参数
exec ".ci/common/build_local.sh" "$@"
else
echo "Error: .ci/common/build_local.sh script not found!"
exit 1
fi
+13
View File
@@ -0,0 +1,13 @@
Types: deb
# http://snapshot.debian.org/archive/debian/20230703T000000Z
URIs: http://mirrors.aliyun.com/debian
Suites: bookworm bookworm-updates
Components: main
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
Types: deb
# http://snapshot.debian.org/archive/debian-security/20230703T000000Z
URIs: http://mirrors.aliyun.com/debian-security
Suites: bookworm-security
Components: main
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
+13
View File
@@ -0,0 +1,13 @@
Types: deb
# http://snapshot.debian.org/archive/debian/20230703T000000Z
URIs: http://deb.debian.org/debian
Suites: bookworm bookworm-updates
Components: main
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
Types: deb
# http://snapshot.debian.org/archive/debian-security/20230703T000000Z
URIs: http://deb.debian.org/debian-security
Suites: bookworm-security
Components: main
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
+13
View File
@@ -0,0 +1,13 @@
Types: deb
# http://snapshot.debian.org/archive/debian/20230703T000000Z
URIs: http://mirrors.ustc.edu.cn/debian
Suites: bookworm bookworm-updates
Components: main
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
Types: deb
# http://snapshot.debian.org/archive/debian-security/20230703T000000Z
URIs: http://mirrors.ustc.edu.cn/debian-security
Suites: bookworm-security
Components: main
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg