Gitlab Ci使用kaniko构建镜像

警告
本文最后更新于 2023-04-15 21:01,文中内容可能已过时。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
image: python:3.11.3-bullseye

variables:
  IMAGE_REF: "$CI_REGISTRY_IMAGE:$CI_PIPELINE_ID"

stages:
  - build

build:
  stage: build
  image:
    name: gcr.io/kaniko-project/executor:v1.9.0-debug
    entrypoint: [""]
  script:
    - /kaniko/executor
      --context "${CI_PROJECT_DIR}"
      --dockerfile "${CI_PROJECT_DIR}/Dockerfile"
      --destination "${IMAGE_REF}"
      --cache=true

--cache=true开启了缓存, 他会将一些层缓存到远程仓库中, 如果镜像名为 devops/py-demo , 那么缓存的镜像名为 devops/py-demo/cache

这里直接上传到 gitlab container registry 不需要手动登录, 因为kaniko会自行读取环境变量CI_REGISTRY_USERCI_REGISTRY_PASSWORD

源码位置 ./vendor/github.com/ePirat/docker-credential-gitlabci/pkg/credhelper/credhelper.go,

如果上传到其他仓库的话,需要自行配置下认证信息, 注意要在 executor 之前执行。或者你可以尝试覆盖CI_REGISTRY_USERCI_REGISTRY_PASSWORD环境变量。

1
- echo "{\"auths\":{\"${CI_REGISTRY}\":{\"auth\":\"$(printf "%s:%s" "${CI_REGISTRY_USER}" "${CI_REGISTRY_PASSWORD}" | base64 | tr -d '\n')\"}}}" > /kaniko/.docker/config.json
请我喝杯水
SoulChild 微信号 微信号
SoulChild 微信打赏 微信打赏
0%