使用 gitlab runner 安装 hostpah 卷的正确方法是什么?

2024-02-16

我需要创建一个卷来公开 maven .m2 文件夹,以便在我的所有项目中重用,但我根本无法做到这一点。

我的 gitlab 运行程序作为容器在我的 kubernetes 集群中运行。

遵循部署和配置图

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: gitlab-runner
  namespace: default
spec:
  template:
    metadata:
      labels:
        name: gitlab-runner
    spec:
      serviceAccountName: gitlab-sa
      nodeName: 140.6.254.244
      containers:
        - name: gitlab-runner
          image: gitlab/gitlab-runner
          securityContext:
            privileged: true
          command: ["/bin/bash", "/scripts/entrypoint"]
          env:
            - name: KUBERNETES_NAMESPACE
              value: default 
            - name: KUBERNETES_SERVICE_ACCOUNT
              value: gitlab-sa
          # This references the previously specified configmap and mounts it as a file
          volumeMounts:
            - mountPath: /scripts
              name: configmap
          livenessProbe:
            exec:
              command: ["/usr/bin/pgrep","gitlab.*runner"]
            initialDelaySeconds: 60
            timeoutSeconds: 1
            periodSeconds: 10
            successThreshold: 1
            failureThreshold: 3
          readinessProbe:
            exec:
              command: ["/usr/bin/pgrep","gitlab.*runner"]
            initialDelaySeconds: 10
            timeoutSeconds: 1
            periodSeconds: 10
            successThreshold: 1
            failureThreshold: 3

      volumes:
      - configMap:
          name: gitlab-runner-cm
        name: configmap

配置图:

---
apiVersion: v1
kind: ConfigMap
metadata:
  name: gitlab-runner-cm
  namespace: default 
data:
  entrypoint: |
    #!/bin/bash

    set -xe

    cp /scripts/config.toml /etc/gitlab-runner/

    # Register the runner
    /entrypoint register --non-interactive --registration-token ###### --url http://gitlab.######.net --clone-url http://gitlab.######.net --executor "kubernetes" --name "Kubernetes Runner" --config "/etc/gitlab-runner/config.toml"

    # Start the runner
    /entrypoint run --user=gitlab-runner \
      --working-directory=/home/gitlab-runner \
      --config "/etc/gitlab-runner/config.toml"
  config.toml: |
    concurrent = 50 
    check_interval = 10
    [[runners]]
      name            = "PC-CVO"
      url             = "http://gitlab.######.net"
      token           = "######"
      executor = "kubernetes"
      cache_dir = "/tmp/gitlab/cache"
      [runners.kubernetes]
        [runners.kubernetes.volumes]
          [[runners.kubernetes.volumes.host_path]]
            name = "maven"
            mount_path = "/.m2/"
            host_path = "/mnt/dados/volumes/maven-gitlab-ci"
            read_only = false

          [[runners.kubernetes.volumes.host_path]]
            name = "gitlab-cache"
            mount_path = "/tmp/gitlab/cache"
            host_path = "/mnt/dados/volumes/maven-gitlab-ci-cache"
            read_only = false



但即使按照文档中的说明放置 [[runners.kubernetes.volumes.host_path]] 我的卷也没有安装在主机上,我尝试使用 pv 和 pvc,但没有任何效果,任何人都知道如何公开此信息主机上的 .m2 文件夹,以便我的所有作业都可以共享它而无需缓存?


在用内部 DNS、我的 m2 的卷和使用 docker 守护进程而不是 docker: dind 解决名称解析问题后,我终于得到了一个解决我的问题的配置,如果有人遇到同样的问题,下面是最终的配置文件。 主要问题是,当注册跑步者时,注册过程修改了 config.toml 文件,这会覆盖我的设置,为了解决这个问题,我在容器注册后做了一只猫。

部署

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: gitlab-runner
  namespace: default
spec:
  template:
    metadata:
      labels:
        name: gitlab-runner
    spec:
      serviceAccountName: gitlab-sa
      nodeName: 140.6.254.244
      containers:
        - name: gitlab-runner
          image: gitlab/gitlab-runner
          securityContext:
            privileged: true
          command: ["/bin/bash", "/scripts/entrypoint"]
          env:
            - name: KUBERNETES_NAMESPACE
              value: default 
            - name: KUBERNETES_SERVICE_ACCOUNT
              value: gitlab-sa
          # This references the previously specified configmap and mounts it as a file
          volumeMounts:
            - mountPath: /scripts
              name: configmap
          livenessProbe:
            exec:
              command: ["/usr/bin/pgrep","gitlab.*runner"]
            initialDelaySeconds: 60
            timeoutSeconds: 1
            periodSeconds: 10
            successThreshold: 1
            failureThreshold: 3
          readinessProbe:
            exec:
              command: ["/usr/bin/pgrep","gitlab.*runner"]
            initialDelaySeconds: 10
            timeoutSeconds: 1
            periodSeconds: 10
            successThreshold: 1
            failureThreshold: 3

      volumes:
      - configMap:
          name: gitlab-runner-cm
        name: configmap

配置图(这是解决方案!)

---
apiVersion: v1
kind: ConfigMap
metadata:
  name: gitlab-runner-cm
  namespace: default 
data:
  entrypoint: |
    #!/bin/bash

    set -xe

    cp /scripts/config.toml /etc/gitlab-runner/

    # Register the runner
    /entrypoint register --non-interactive --registration-token ############ --url http://gitlab.######.net --clone-url http://gitlab.######.net --executor "kubernetes" --name "Kubernetes Runner" --config "/etc/gitlab-runner/config.toml"

    cat >> /etc/gitlab-runner/config.toml << EOF
          [[runners.kubernetes.volumes.host_path]]
            name = "docker"
            path = "/var/run/docker.sock"
            mount_path = "/var/run/docker.sock"
            read_only = false
          [[runners.kubernetes.volumes.host_path]]
            name = "maven"
            mount_path = "/.m2/"
            host_path = "/mnt/dados/volumes/maven-gitlab-ci"
            read_only = false
          [[runners.kubernetes.volumes.host_path]]
            name = "resolvedns"
            mount_path = "/etc/resolv.conf"
            read_only = true
            host_path = "/etc/resolv.conf"

    EOF



    # Start the runner
    /entrypoint run --user=gitlab-runner \
      --working-directory=/home/gitlab-runner \
      --config "/etc/gitlab-runner/config.toml"
  config.toml: |
    concurrent = 50 
    check_interval = 10
    [[runners]]
      name            = "PC-CVO"
      url             = "http://gitlab.########.###"
      token           = "##############"
      executor = "kubernetes"
      cache_dir = "/tmp/gitlab/cache"
      [runners.kubernetes]


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 gitlab runner 安装 hostpah 卷的正确方法是什么? 的相关文章

  • 有什么方法可以在 Jenkins 中获取 Gitlab 管道工件吗?

    我在gitlab中有一个项目 该项目会在存储库中的每次签入时构建 并在 gitlab 管道成功时创建构建工件 我想在我的詹金斯管道工作中获得这些构建工件 有什么办法可以做到这一点吗 我在 Jenkins 中找不到任何插件来执行此操作 任何帮
  • 如何在 GitLab CI 中显示来自另一个存储库的测试

    因此 我的项目包含单元测试 当我在 GitLab 中配置 CI 系统后发出合并请求时 它们会很好地显示为绿色或红色圆圈 但现在我也有一些集成测试 它们驻留在单独的存储库中 你为什么问 因为我有多个微服务需要一起测试 并且每个微服务都有自己的
  • 如何在 GitLab CI 构建期间从私有 GitLab Git 存储库中提取 NPM 依赖项

    我有一份工作 gitlab ci yml执行以下操作的文件npm install像这样 test image node 10 script npm install npm test 问题是我在我的项目中引用了一个私有的 GitLab 存储库
  • 当提交推送到另一个项目时触发项目的构建

    我在 gitlab 上使用 gitlab runner 机器有三个项目 A B C 项目 A 包含 gitlab ci yml 文件 当 A 上有提交时 该文件调用脚本来构建程序 build stage build script build
  • 在构建 Docker 镜像之前如何对 GitLab 的容器注册表进行身份验证?

    我有一个私有的 GitLab 项目 其中包含用于构建和推送 Docker 映像的管道 因此我必须首先向 GitLab 的 Docker 注册表进行身份验证 Research I read 使用 GitLab CI CD 对容器注册表进行身份
  • 没有公钥,GitLab 无法克隆公共存储库

    使用亚搏体育appGitLab 6 8 2 我可以以匿名方式克隆公共存储库吗 我的用户命名空间中的存储库标记为public 如果没有在 GitLab 中保存公钥 我就无法克隆它 例如 gt ssh T email protected cdn
  • 如何修复 CI/CD 上的 SSH Webpack 构建超时 (Gitlab)

    我已经创建了与 Gitlab 的 CI CD 集成 并且在运行 CI CD 时一直拖延 webpack 和资产的最终编译 这是针对 Linux 16 04 t2 small AWS 实例的 我很好奇这是否是内存 处理器问题 尽管如果我通过
  • 用于指示存储库已弃用的 Git 挂钩

    我们有一个存储库 托管在 GitLab 实例上 少数项目仍在引用该存储库 但已被弃用 取而代之的是另一个解决方案 有什么方法可以将存储库标记为 已弃用 吗 理想情况下 每个fetch来自此存储库 作为git submodule update
  • Gitlab:无法识别对等方的证书颁发者

    我在全新安装 gitlab 时遇到此错误 该消息如下所示 fatal unable to access https gitlab ci token email protected cdn cgi l email protection som
  • 如何在 gitlab-ci 作业之间传递变量?

    我有一个像这样的 gitlab ci stages calculation execution calculation job stage calculation script calculate something and output
  • GitLab CI语法来编写FOR循环语句?

    以下是 gitlab ci yml 文件中提到的脚本 此 GitLab CI 配置有效 但是 当运行 CI CD 构建时 作业会失败 与 FOR 循环语法有关吗 deploy dv stage deploy dv variables GIT
  • 为不同分支部署GitLab页面

    我正在使用 GitLab Pages 部署我的 React 应用程序 并且运行良好 这是我的gitlab ci yml Using the node alpine image to build the React app image nod
  • Mac上使用docker安装gitlab的权限问题

    我正在尝试让 Gitlab 在本地运行 但遇到了权限问题 cp cannot create regular file etc gitlab gitlab rb Permission denied 我正在运行的命令是 sudo docker
  • 在 GitLab CI 中使用合并请求作业中的工件

    在我的项目中 我使用合并请求来测试构建 并在提交合并到主版本后进行部署 目前我的 gitlab ci yml好像 build stage build script yarn build artifacts paths public depl
  • 从 gitlab docker runner 启动声纳扫描仪

    我有一个 CI 工作流程 集成了 linting 作业和代码质量作业 我的 Linting 工作是一个 docker runner 从应用程序代码启动我的 eslint 脚本 然后我的代码质量工作应该启动声纳扫描仪泊坞窗实例 检查我的代码并
  • gitlab runner ssh私钥644文件权限错误

    运行 gitlab ci cd 管道时 ssh 给出 0644 badpermission 错误 变量作为文件类型存储在 gitlab 的 settings gt variable 部分中 gitlab ci yml 文件如下所示 stag
  • 如何在gitlab存储库中下载单个文件夹或文件

    我有一个存储库 在此存储库中 有多个文件夹可用 我只需要此存储库中的一个文件夹 我已经尝试遵循命令 但它不起作用 克隆 有没有办法只克隆 git 存储库子目录 https stackoverflow com questions 600079
  • Gitlab CI - 如何启动 Shared Runner

    我是 Gitlab CI 的新手 我已经配置了 gitlab ci yml 文件 并使用 CI Lint 它已经通过了验证过程 基于此文档 https gitlab com help ci quick start README 我可以看到应
  • 使用 Yarn 从 Gitlab 安装私有包

    我有一个私有 npm 包 它使用 Gitlab CI 管道发布到 Gitlab 包注册表 我想在项目中使用安装这个包yarn 遵循文档帮助我想出了以下内容 npmrc file gitlab com api v4 packages npm
  • bash:gitolite:找不到命令

    我正在尝试使用 Gitolite 在 Gitlab 中创建一个新分支 我完成安装步骤 当我遇到 设置 gitolite 部分时 我遇到了麻烦 我跟着这个link http sitaramc github com gitolite setup

随机推荐

  • 如何识别哪个容器拥有哪个覆盖目录?

    My var lib docker overlay目录包含我的容器的数据 但目录名称均经过哈希处理 如何确定哪个容器拥有哪个覆盖层 您可以使用jq像这样 docker inspect docker ps qa jq r map Name G
  • BinaryFormatter 中的引用完整性

    Protobuf net 中 AsReference 选项的存在以及 BinaryFormatter 是 图形序列化器 这个词让我假设 BinaryFormatter 不维护引用 并且它会复制每个对象 但我做了一些测试 发现单个 Binar
  • 从 VB.NET 中的 List(Of T) 中删除重复项

    我无法从列表中删除重复项 我究竟做错了什么 Dim Contacts As New List Of Person remove duplicates Contacts Contacts Distinct New PersonEquality
  • 可靠集合缓存作为 Service Fabric 中的缓存

    我的系统使用一堆微服务来处理一个项目 我计划创建一个有状态微服务来保存该项目的最新状态 在该服务中 我计划将所有项目状态存储在可靠的字典中 并且每当访问项目时都会更新该项目的 上次访问 字段 我的要求是 我只想将最近使用的项目存储在可靠的集
  • bc 及其 ibase/obase 选项:

    我偶然发现了一个奇怪的错误 我想 我尝试将 512 读取为基数 6 的数字 并将其输出为基数 16 echo ibase 6 obase 16 512 bc 161 正如你所看到的 输出是161 但它应该是bc 原文如此 我尝试使用基数 1
  • PeekMessage 收不到消息?

    我创建了一个自定义消息类型 用于调整我的大小Window 称为WM NEED RESIZE 我已在 h 文件中定义它 并在 cpp 文件中初始化 我也注册了我的WindowProc接受消息的功能 以下是这些项目的代码 const uint3
  • 部署在iis上的asp.net core应用遇到500内部服务器错误

    哎呀 500内部服务器错误 启动应用程序时发生错误 当我将数据库功能添加到我的 asp net core 应用程序并将其部署到 iis 时 出现此消息 当我在 Visual Studio 中开发它时 一切都很顺利 但是部署之后就出现了这个错
  • Django 迁移添加默认字段作为模型函数

    我向 Django 模型添加了一个新的 不可为空的字段 并尝试使用迁移来部署该更改 我如何将现有模型使用的默认值设置为这些模型的某个函数而不是常量 举个例子 假设我以前有一个created on字段 我刚刚添加了一个updated on我想
  • 如何创建纵轴(Y 轴)为字符串的图表?

    我想要制作的图表是使用 Chart js 制作的折线图 纵轴为字符串 横轴为数字 例如 横轴是时间 纵轴是帽子的颜色 见下图 var myChart new Chart ctx type line data labels 1 2 3 4 5
  • Gridview动态添加新行

    我有一个文件上传控件 并且有一个按钮 上传 因此当单击通风口触发时 我希望在 gridview 中创建一个新行并获取文件名并绑定到列并将其显示在页面上 请问有什么想法该怎么做吗 这是代码 protected void Button1 Cli
  • Android - 将对象传递给另一个活动

    我正在利用以下类 我将其作为对象 http pastebin com rKmtbDgF http pastebin com rKmtbDgF 我正在尝试使用以下方式传递它 Intent booklist new Intent getBase
  • JDK 1.8.0_92 Nashorn JS 引擎indexOf 行为

    我在 java8 中使用 nashorn javascript 引擎在运行时评估一些表达式 我有一个 util 类 方法如下 public static String evaluateJavaScriptExpression String
  • Android向viewpager添加了圆圈指示器[重复]

    这个问题在这里已经有答案了 您好 我创建了一个视图寻呼机 但有谁知道我如何在页面视图上显示代表分页的圆圈 我认为它提供了一个指示器 但我不完全确定 这是迄今为止包含我的视图寻呼机的代码 public class LevelSelect ex
  • TFS 与 VSTS 的未来

    微软还在开发这两种产品吗 TFS 的开发是否已被放弃而转而支持 VSTS 就上下文而言 我们现在正在使用 TFS 而 VSTS 显然具有更好的集成性 特别是 Microsoft Teams 和 ZenDesk 这对于让我们的工作流程处于更易
  • (Android)如何填充ListView背景并保持标题透明度

    我有一个自定义图像背景 它填充 ListView 后面的整个屏幕 ListView 有一个包含一些数据的标题 然后是一个透明的 10dp 边距 允许我们看到一点背景图像 然后是更多数据 在这个标题下方 在 ListView 的 主体 中 我
  • Laravel 4 查询生成器 - 具有复杂的左连接

    我是 Laravel 4 的新手 我有这样的疑问 SELECT a id active name email img location IFNULL b Total 0 AS LeadTotal IFNULL c Total 0 AS In
  • 使用新的用户名和密码更新 vsts-npm-auth

    我已经安装了vsts npm auth使用以下命令进行打包 npm install g vsts npm auth registry https registry npmjs com 我跑了vsts npm auth config npmr
  • Nuget 4安装在哪里

    Visual Studio 2017 附带 Nuget 4 0 0 但是 它没有放置在路径上 在哪里可以找到使用 CLI 的 nuget 可执行文件 视觉工作室 2017不使用NuGet exe而是使用扩展名NuGet为了达成这个 您应该能
  • 正则表达式解析CSS选择器

    我想解析这个 CSS 选择器 以及其他类似形式的选择器 div class1 myid class2 key value 并让它匹配 class1 和 class2 但我不知道要使用什么正则表达式 例子 http www rubular c
  • 使用 gitlab runner 安装 hostpah 卷的正确方法是什么?

    我需要创建一个卷来公开 maven m2 文件夹 以便在我的所有项目中重用 但我根本无法做到这一点 我的 gitlab 运行程序作为容器在我的 kubernetes 集群中运行 遵循部署和配置图 apiVersion extensions