feat: 存在 kaniko 的流水线构建环境新增 IMAGE_DESTINATION 环境变量

This commit is contained in:
zze 2023-12-15 17:17:30 +08:00
parent 7b66c59ef9
commit 1cb971c537
2 changed files with 21 additions and 11 deletions

View File

@ -8,14 +8,15 @@ const (
// CI 客户端 Pod 相关
const (
CI_CLIENT_POD_WORKSPACE_VOLUME_NAME = "ci-workspace" // ci 客户端 pod 工作卷名称
CI_CLIENT_POD_WORKSPACE_PATH = "/devops-super" // ci 客户端 pod 工作卷挂载目录
CI_CLIENT_POD_NAMESPACE = "devops-super-ci" // ci 客户端 pod 所在命名空间
CI_CLIENT_POD_CONTAINER_STAGES_ENV_NAME = "STAGES" // ci 客户端容器阶段环境信息环境变量名称
CI_CLIENT_POD_KANIKO_DIR = "/kaniko" // ci 客户端 kaniko 环境目录
CI_CLIENT_POD_KANIKO_WORKSPACE_PATH = "/workspace" // ci 客户端 kaniko 容器的工作目录
CI_CLIENT_POD_KANIKO_EXECUTOR_IMAGE = "registry.cn-shenzhen.aliyuncs.com/zze/gcriokaniko-executor:v1.19.0" // kaniko executor 镜像
CI_CLIENT_POD_KANIKO_WARMER_IMAGE = "registry.cn-shenzhen.aliyuncs.com/zze/gcriokaniko-warmer:v1.19.0" // kanico warmer 镜像
CI_CLIENT_CONFIG_MAP_NAME = "devops-super-ci-config"
CI_CLIENT_CONFIG_MAP_SECRET_KEY_PREFIX = "secret"
CI_CLIENT_POD_WORKSPACE_VOLUME_NAME = "ci-workspace" // ci 客户端 pod 工作卷名称
CI_CLIENT_POD_WORKSPACE_PATH = "/devops-super" // ci 客户端 pod 工作卷挂载目录
CI_CLIENT_POD_NAMESPACE = "devops-super-ci" // ci 客户端 pod 所在命名空间
CI_CLIENT_POD_CONTAINER_STAGES_ENV_NAME = "STAGES" // ci 客户端容器阶段环境信息环境变量名称
CI_CLIENT_POD_KANIKO_DIR = "/kaniko" // ci 客户端 kaniko 环境目录
CI_CLIENT_POD_KANIKO_WORKSPACE_PATH = "/workspace" // ci 客户端 kaniko 容器的工作目录
CI_CLIENT_POD_KANIKO_EXECUTOR_IMAGE = "registry.cn-shenzhen.aliyuncs.com/zze/gcriokaniko-executor:v1.19.0" // kaniko executor 镜像
CI_CLIENT_POD_KANIKO_WARMER_IMAGE = "registry.cn-shenzhen.aliyuncs.com/zze/gcriokaniko-warmer:v1.19.0" // kanico 推送地址
CI_CLIENT_POD_KANIKO_IMAGE_DESTINATION_ENV_NAME = "IMAGE_DESTINATION" // kanico warmer 镜像
CI_CLIENT_CONFIG_MAP_NAME = "devops-super-ci-config"
CI_CLIENT_CONFIG_MAP_SECRET_KEY_PREFIX = "secret"
)

View File

@ -233,6 +233,7 @@ func createCiPod(kubeClient *kubernetes.Client, namespace, name string, arrangeC
hasKaniko bool
dockerfilePathsToCache []string
kanikoVolumeMounts []corev1.VolumeMount
imageDestination string
)
var createEnvs = func(envs map[string]string) []corev1.EnvVar {
@ -246,7 +247,7 @@ func createCiPod(kubeClient *kubernetes.Client, namespace, name string, arrangeC
for idx, envItem := range arrangeConfig {
mountPath := consts.CI_CLIENT_POD_WORKSPACE_PATH
containerName := fmt.Sprintf("env-%d", idx)
if envItem.IsKaniko {
if envItem.IsKaniko { // 只能存在一个 kaniko 环境
hasKaniko = true
mountPath = consts.CI_CLIENT_POD_KANIKO_WORKSPACE_PATH
containerName = fmt.Sprintf("%s-kaniko", containerName)
@ -272,6 +273,7 @@ func createCiPod(kubeClient *kubernetes.Client, namespace, name string, arrangeC
container.Args = append(container.Args, "--skip-tls-verify-pull")
container.Args = append(container.Args, fmt.Sprintf("--context=dir://%s", envItem.KanikoParam.ContextDir))
container.Args = append(container.Args, fmt.Sprintf("--destination=%s", envItem.KanikoParam.ImageDestination))
imageDestination = envItem.KanikoParam.ImageDestination
if envItem.KanikoParam.UpdateBaseImageCache {
dockerfilePathsToCache = append(dockerfilePathsToCache, envItem.KanikoParam.DockerfilePath)
}
@ -331,6 +333,13 @@ func createCiPod(kubeClient *kubernetes.Client, namespace, name string, arrangeC
updateBaseImageCache := hasKaniko && len(dockerfilePathsToCache) > 0
if !gutil.IsEmpty(imageDestination) {
container.Env = append(container.Env, corev1.EnvVar{
Name: consts.CI_CLIENT_POD_KANIKO_IMAGE_DESTINATION_ENV_NAME,
Value: imageDestination,
})
}
if len(arrangeConfig) == 1 || idx == (len(arrangeConfig)-1) { // 如果只有一个环境容器 或 是最后一个容器
if updateBaseImageCache { // 如果要更新基础镜像缓存,则最后一个容器肯定是 kaniko warm 容器
initContainers = append(initContainers, container)