diff --git a/.woodpecker.yml b/.woodpecker.yml new file mode 100644 index 0000000..80e7697 --- /dev/null +++ b/.woodpecker.yml @@ -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 diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..52b66c0 --- /dev/null +++ b/build.sh @@ -0,0 +1,22 @@ +#!/bin/bash +# Ver: 3.0 by Endial Fang (endial@126.com) +# +# Docker 镜像构建脚本 - 主入口 + +# 编译后镜像名称 +export IMAGE_NAME="openjre" +# 依赖镜像的仓库地址 +export REGISTRY_URL="swr.cn-north-4.myhuaweicloud.com/colovu/" +# 源仓库地址(本地编译时,使用阿里云源仓库) +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