gpt4 book ai didi

maven - 如何使用 Kubernetes runner 在 Gitlab 中为 Maven 添加持久卷

转载 作者:行者123 更新时间:2023-12-02 11:39:44 31 4
gpt4 key购买 nike

情况:

  • 服务器 A:我们在容器中运行 Gitlab。
  • 服务器 B:我们有 Kubernetes。

  • Gitlab 使用 Kubernetes 运行器。我们的一些项目然后使用带有 Git 和 Maven 的 docker 容器构建应用程序。

    Maven 总是必须将各种东西下载到它的/root/.m2 缓存中。
    我需要做的是创建一个这些作业可以使用的持久卷,因此一旦下载,每次有人想要构建或测试某些东西时就不必再次执行此操作。这些容器总是使用一个预制镜像重新构建。

    非常基本的东西,除了我对 Gitlab 和 Kubernetes 完全陌生。

    我需要在哪里创建卷?我试图在 runner 中更改 config.toml 以包含 host_path 类型的卷,但我不知道我是否成功并且 Maven 每次都必须下载所有要求。我什至不知道是否必须重新启动 runner 容器才能应用更改,以及如何应用。
    这是运行者的 config.toml :
    listen_address = "[::]:9252"
    concurrent = 4
    check_interval = 3
    log_level = "info"

    [session_server]
    session_timeout = 1800

    [[runners]]
    name = "runner-gitlab-runner-c55d9bf98-2nn7c"
    url = "https://private_network:8443/"
    token = "yeah, token"
    executor = "kubernetes"
    [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]
    [runners.kubernetes]
    host = ""
    bearer_token_overwrite_allowed = false
    image = "ubuntu:16.04"
    namespace = "gitlab-managed-apps"
    namespace_overwrite_allowed = ""
    privileged = true
    service_account_overwrite_allowed = ""
    pod_annotations_overwrite_allowed = ""
    [runners.kubernetes.volumes.host_path]
    name = "maven-volume"
    mount_path = "/root/.m2"
    read_only = false

    我知道的不够多,不知道我错过了什么。也许我必须在那些项目中的 .gitlab-ci.yml 中定义一些东西,或者其他东西。我查看了教程,尝试了 Gitlab 帮助页面,但仍然找不到可行的解决方案。

    运行 GitLab 社区版 11.6.5。

    最佳答案

    1) 创建一个 Kubernetes PersistentVolume(我使用 NFS 作为 PersistentVolume 类型):

    apiVersion: v1
    kind: PersistentVolume
    metadata:
    name: gitlabrunner-nfs-volume
    spec:
    accessModes:
    - ReadWriteMany
    capacity:
    storage: 15Gi
    mountOptions:
    - nolock
    nfs:
    path: /kubernetes/maven/
    server: NFS_SERVER_IP
    persistentVolumeReclaimPolicy: Recycle

    2)创建一个 Kubernetes PersistentVolumeClaim :
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
    name: gitlabrunner-claim
    namespace: gitlab
    spec:
    accessModes:
    - ReadWriteMany
    resources:
    requests:
    storage: 15Gi
    volumeName: gitlabrunner-nfs-volume
    status:
    accessModes:
    - ReadWriteMany
    capacity:
    storage: 15Gi

    3) 在 config.toml 中引用 PersistentVolumeClaim :
       [[runners.kubernetes.volumes.pvc]]
    mount_path = "/cache/maven.repository"
    name = "gitlabrunner-claim"

    这使得每次使用此配置启动容器时都可以挂载卷。

    4)在 .gitlab-ci.yml 文件中,设置 MVN_OPTS 就像@thomas 回答的那样:
    variables:
    MVN_OPTS: "-Dmaven.repo.local=/cache/maven.repository"

    关于maven - 如何使用 Kubernetes runner 在 Gitlab 中为 Maven 添加持久卷,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55741050/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com