一.说明

本软件是免费开源软件 bk-ci 的第三方插件,主要用于编译,推送,复制OCI容器镜像三项功能. 与本软件类似或同类的还有 drone-kaniko
action-kaniko

本软件主程序是一个命令行包装器,主要功能就是将蓝盾的外部输入转化为第三方外部依赖软件的输入. 其核心编译,推送,复制功能并不由本软件直接提供.

其中编译,推送功能由 kaniko 提供, 复制功能由 skopeo 提供.

本软件通过os.exec或者生成myrun.sh脚本来进行第三方外部依赖软件的调用实现最终编译,推送功能.

二.安装方法

1.获取源代码

源代码请固定存放到/data/landun/workspace/src/DockerBuildPushGo 否则请修改Makefile第一行的CURRENT_DIR变量定义为实际路径

mkdir -p /data/landun/workspace/src/
cd /data/landun/workspace/src/
git clone https://github.com/ci-plugins/DockerBuildPush
cd /data/landun/workspace/src/
mv DockerBuildPush DockerBuildPushGo
cd /data/landun/workspace/src/DockerBuildPushGo

2.下载proot执行文件

这一步不是必须做在Makefile已有这个步骤,只是在网络不好或者下载不成功时进行手工确认.

curl -L -o ./bin_file/proot https://github.com/proot-me/proot/releases/download/v5.3.0/proot-v5.3.0-x86_64-static
chmod +x ./bin_file/proot

成功的话将在./bin_file/目录生成proot执行文件

3.构建DockerBuildPush主程序

执行2之前先确保./bin_file/proot执行文件已经存在了

#./是项目源代码根目录
cd ./
make -f Makefile

成功的话将在当前目录的上两级目录生成app(无扩展名)和task.json文件. ../../bin/app../../bin/task.json

这一步结束时必须在 /data/landun/workspace/src/DockerBuildPushGo/bin_file目录下能看到三个文件 且文件大小不能是零字节或者出现目录名。不符合描述的文件都是前述步骤编译发生了意外,请进行检查. /data/landun/workspace/src/DockerBuildPushGo/bin_file/proot /data/landun/workspace/src/DockerBuildPushGo/bin_file/skopeo /data/landun/workspace/src/DockerBuildPushGo/bin_file/executor

4.打包插件

请把app和task.json打包到zip格式的根目录中.不要放在任何二级目录下.

cd ../../bin
zip -r ./app.zip app task.json

三.依赖情况

1.编译时第三方依赖

golang v1.18+

go.rice 固定v1.0.2 ,不需要单独安装

glibc-static v2.12+

gcc v4.8+

curl v7.2+

2.运行时第三方依赖

kaniko 固定v1.9.0

skopeo v1.5.2+

proot 固定v5.3.0