Обновлен способ фильтрации префикса изображения, содержащего URL-адрес реестра, при попытке сопоставить изображения в частном реестре контейнеров Azure

Я использую встроенного бота Renovate в Gitlab для сканирования моего репозитория Gitlab на наличие зависимых обновлений изображений. Бот сканирует изображения, используемые в моем docker-compose.yml, и просматривает мой частный реестр контейнеров Azure (ACR), если есть какие-либо зависимые обновления образа. В настоящее время это не удается, поскольку имя изображения, используемое в моем docker-compose.yml, не совпадает с именем изображения в моем ACR. Renovate сообщает, что не может найти мою посылку. Как мне это решить?

Я знаю, что мне нужно использоватьpackageRules и customManagers, но я не совсем понимаю, как мой renovate.json должен выглядеть для реализации этого.

Текущая настройка

докер-compose.yml:

services:
  prometheus:
    image: <ACR_URL>/<TEAM>/prometheus:0.0.1

Имя образа ACR: <TEAM>/prometheus

Обновить журналирование ботов:

{
  "depName": "<ACR_URL>/<TEAM>/prometheus",
  "currentValue": "0.0.1",
  "replaceString": "<ACR_URL>/<TEAM>/prometheus:0.0.1",
  "autoReplaceStringTemplate": "{{depName}}{{#if newValue}}:{{newValue}}{{/if}}{{#if newDigest}}@{{newDigest}}{{/if}}",
  "datasource": "docker",
  "updates": [],
  "packageName": "<ACR_URL>/<TEAM>/prometheus",
  "versioning": "docker",
  "warnings": [
    {
     "topic": "<ACR_URL>/<TEAM>/prometheus",
     "message": "Failed to look up docker package <ACR_URL>/<TEAM>/prometheus"
    }
  ]
},

Это мой текущий renovate.json:

{
  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
  "extends": [
    "config:base"
  ],
  "baseBranches": [
    "main"
  ],
   "hostRules": [
    {
      "matchHost": "$ACR_URL",
      "username": "$ACR_USER",
      "password": "$ACR_TOKEN"
    }
  ],
  "packageRules": [
    {
      "groupName": "all non-major dependencies",
      "groupSlug": "all-minor-patch",
      "matchPackagePatterns": [
        "*"
      ],
      "registryUrls": [
        "$ACR_URL"
      ]
    }
  ]
}

Рабочая конфигурация обновления

Пример .gitlab-ci.yml

image: renovate/renovate:37.382

stages:
  - renovate

variables:
  RENOVATE_BASE_DIR: $CI_PROJECT_DIR/renovate
  RENOVATE_ENDPOINT: $CI_API_V4_URL
  RENOVATE_EXTRA_FLAGS: --autodiscover=true
  RENOVATE_HOST_RULES: | 
    [
      {
        "matchHost": "github.com", 
        "token": "$GITHUB_TOKEN"
      },
      {
        "matchHost": "gitlab.<ENDPOINT>.com", 
        "token": "$GITLAB_ACCESS_TOKEN", 
        "authType": "Bearer"
      },
      {
        "matchHost": "$ACR_URL", 
        "password": "$ACR_TOKEN", 
        "username": "$ACR_USER"
      }
    ]
  RENOVATE_ONBOARDING: "true"
  RENOVATE_OPTIMIZE_FOR_DISABLED: "true"
  RENOVATE_PLATFORM: gitlab
  RENOVATE_REPOSITORY_CACHE: "true"
  LOG_LEVEL: debug

.matrix:
  parallel:
    matrix:
      - RENOVATE_AUTODISCOVER_FILTER: /<PARENT>/<SUBGROUPA>/.*/
      - RENOVATE_AUTODISCOVER_FILTER: /<PARENT>/<SUBGROUPB>/<PROJECT>/

cache:
  key: ${CI_COMMIT_REF_SLUG}-renovate
  paths:
    - $CI_PROJECT_DIR/renovate

run_renovate:
  stage: renovate
  resource_group: production
  rules:
    - if: '$CI_PIPELINE_SOURCE == "schedule"'
  script:
    - renovate $RENOVATE_EXTRA_FLAGS
  extends: .matrix

renovate:
  stage: renovate
  script:
    - renovate --dry-run $RENOVATE_EXTRA_FLAGS
  extends: .matrix

На примере renovate.json:

{
  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
  "extends": [
    "config:recommended"
  ],
  "baseBranches": [
    "main"
  ],
  "packageRules": [
    {
      "groupName": "all non-major dependencies",
      "matchPackagePatterns": [
        "*"
      ],
      "matchUpdateTypes": [
        "minor",
        "patch"
      ]
    },
    {
      "groupName": "all major dependencies",
      "matchPackagePatterns": [
        "*"
      ],
      "matchUpdateTypes": ["major"]
    }
  ],
  "pre-commit": {
    "enabled": true
  }
}


Можете ли вы включить ведение журнала отладки для Renovate, чтобы получить больше информации о том, почему он не может получить доступ к реестру контейнеров. Название изображения не является проблемой. Я бы лучше сделал ставку на права доступа к реестру контейнеров.

Gaël J 04.06.2024 19:54

Ты прав. Я перенастроил хост-правила в своей конфигурации RenovateBot, добавив хост-правила gitlab и docker. Теперь происходит сбой только в правилах хостинга, установленных в renovate.json сканируемого проекта при авторизации ACR. Спасибо за вашу помощь, мне нужно будет выяснить, как настроить мои учетные данные ACR.

Byang117 05.06.2024 09:22

Привет @Byang117. Можете ли вы подтвердить, где вы хотите настроить учетные данные ACR, будь то бот или Gitlab?

Venkat V 06.06.2024 13:10

Мне удалось заставить его работать с конфигурацией учетных данных ACR в конфигурации renovatebot. Помещение его в renovate.json сканируемого проекта gitlab не помогло. Но текущая настройка у меня работает нормально. Просто нужно поместить все мои реестры в качестве хострулов в конфигурацию моего renovatebot.

Byang117 06.06.2024 14:26

@ Byang117 Очень приятно слышать, что вы смогли решить свою проблему. Не могли бы вы задокументировать свое решение в ответе? Это внесет ясность для тех, кто сталкивается с аналогичными техническими проблемами в сообществе.

Naveen Sharma 10.06.2024 13:17

Хорошая мысль, добавил свою текущую настройку

Byang117 11.06.2024 11:35

@ Byang117 Byang117 Вы можете опубликовать свое решение в качестве ответа ниже и согласиться пометить его как рабочее решение на платформе.

Naveen Sharma 24.06.2024 12:58

Хорошее предложение, сделано.

Byang117 26.06.2024 10:32
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
8
100
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Рабочая конфигурация обновления

Пример .gitlab-ci.yml

image: renovate/renovate:37.382

stages:
  - renovate

variables:
  RENOVATE_BASE_DIR: $CI_PROJECT_DIR/renovate
  RENOVATE_ENDPOINT: $CI_API_V4_URL
  RENOVATE_EXTRA_FLAGS: --autodiscover=true
  RENOVATE_HOST_RULES: | 
    [
      {
        "matchHost": "github.com", 
        "token": "$GITHUB_TOKEN"
      },
      {
        "matchHost": "gitlab.<ENDPOINT>.com", 
        "token": "$GITLAB_ACCESS_TOKEN", 
        "authType": "Bearer"
      },
      {
        "matchHost": "$ACR_URL", 
        "password": "$ACR_TOKEN", 
        "username": "$ACR_USER"
      }
    ]
  RENOVATE_ONBOARDING: "true"
  RENOVATE_OPTIMIZE_FOR_DISABLED: "true"
  RENOVATE_PLATFORM: gitlab
  RENOVATE_REPOSITORY_CACHE: "true"
  LOG_LEVEL: debug

.matrix:
  parallel:
    matrix:
      - RENOVATE_AUTODISCOVER_FILTER: /<PARENT>/<SUBGROUPA>/.*/
      - RENOVATE_AUTODISCOVER_FILTER: /<PARENT>/<SUBGROUPB>/<PROJECT>/

cache:
  key: ${CI_COMMIT_REF_SLUG}-renovate
  paths:
    - $CI_PROJECT_DIR/renovate

run_renovate:
  stage: renovate
  resource_group: production
  rules:
    - if: '$CI_PIPELINE_SOURCE == "schedule"'
  script:
    - renovate $RENOVATE_EXTRA_FLAGS
  extends: .matrix

renovate:
  stage: renovate
  script:
    - renovate --dry-run $RENOVATE_EXTRA_FLAGS
  extends: .matrix

На примере renovate.json:

{
  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
  "extends": [
    "config:recommended"
  ],
  "baseBranches": [
    "main"
  ],
  "packageRules": [
    {
      "groupName": "all non-major dependencies",
      "matchPackagePatterns": [
        "*"
      ],
      "matchUpdateTypes": [
        "minor",
        "patch"
      ]
    },
    {
      "groupName": "all major dependencies",
      "matchPackagePatterns": [
        "*"
      ],
      "matchUpdateTypes": ["major"]
    }
  ],
  "pre-commit": {
    "enabled": true
  }
}


Другие вопросы по теме