自定义IC镜像

参考官方文档:https://bk.tencent.com/docs/markdown/ZH/Devops/3.0/UserGuide/Services/Store/ci-images/docker-build.md

有两种方式:

  • Dockerfile 示例 1(以 bkci 默认镜像为基础镜像):
1
2
3
FROM bkci/ci:latest

RUN yum install -y mysql-devel
  • Dockerfile 示例 2(不以 bkci 默认镜像为基础镜像时,镜像环境基本要求如下):
1
2
3
4
5
6
7
8
9
10
11
# ============= bkci基础环境 ================
FROM openjdk:8-jre-slim
RUN apt update && apt upgrade && apt autoremove -y
RUN apt install -y curl wget
RUN wget -q https://repo1.maven.org/maven2/org/bouncycastle/bcprov-jdk16/1.46/bcprov-jdk16-1.46.jar -O $JAVA_HOME/lib/ext/bcprov-jdk16-1.46.jar
RUN ln -sf $JAVA_HOME /usr/local/jre

# ============= 自定义环境 ================
# RUN whatever you want
RUN apt install -y git python-pip

重要提示:

  • 因为流水线里的容器是通过 CMD,使用/bin/sh 启动的,因此必须保证镜像里面存在/bin/sh 以及 curl 命令(用来下载 Agent)
  • 不要设置 ENTRYPOINT
  • 确保为 64 位镜像
  • 用户用 root,如需普通用户可以在 bash 里面切换,否则流水线任务启动不了
  • 流水线插件有可能使用 python 或 nodejs 开发,建议准备好插件执行环境:
    Python 插件执行环境
    NodeJS 插件执行环境

构建kaniko bkci镜像

编写Dockerfile:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 第一阶段:获取 kaniko 执行器
FROM m.daocloud.io/gcr.io/kaniko-project/executor:latest as kaniko

# 第二阶段:使用 BKCI 官方基础镜像
FROM bkci/ci:latest


MAINTAINER huari "qiqiuyang@papegames.net"

# 从 kaniko 阶段复制必要文件(不包含用户特定的配置文件)
COPY --from=kaniko /kaniko /kaniko
RUN chmod +x /kaniko/executor

RUN apt install -y git python-pip python3-pip \
&& pip config set global.index-url https://mirrors.aliyun.com/pypi/simple \
&& pip config set install.trusted-host mirrors.aliyun.com

# 设置环境变量
ENV PATH $PATH:/kaniko
ENV DOCKER_CONFIG /kaniko/.docker
ENV SSL_CERT_DIR /kaniko/ssl/certs

# 验证 kaniko 可执行文件(不验证配置)
RUN /kaniko/executor version

执行bkci镜像构建流水线

20250815014642

发布容器镜像

参考官方文档:https://bk.tencent.com/docs/markdown/ZH/Devops/3.0/UserGuide/Services/Store/ci-images/release-new-image.md