Как определить репозиторий реестра артефактов для публикации в файле инициализации?

Я использую Gradle для развертывания артефактов в реестре артефактов Google.

Обычно я указываю репозиторий, в котором хочу развернуть построенный артефакт, в разделе «публикация» build.gradle file - вместо того, чтобы делать это так, я хотел определить репозиторий в файле, который будет вставлен позже в CI-процесс, чтобы URL-адрес реестра артефактов не попадал в репозиторий Git.

Я придумал, как это сделать:

      allprojects{  
    buildscript {
        repositories {
            maven {
                url "artifactregistry://random-location.pkg.dev/project-name/repository-name"
            }
        }
    }
    repositories {
        maven {
            url "artifactregistry://random-location.pkg.dev/project-name/repository-name"
        }
    }
}

Но поскольку мне нужен плагин Gradle для реестра артефактов, я получаю сообщение об ошибке artifactregistry не поддерживается протоколом.

      > Could not resolve all dependencies for configuration ':classpath'.
   > Not a supported repository protocol 'artifactregistry': valid protocols are [file, http, https, gcs, s3, sftp]

указано, В документациичто для использования плагина необходимо вставить следующее:

      initscript {
  repositories {
    maven {
      url "https://plugins.gradle.org/m2/"
    }
  }
  dependencies {
    classpath "gradle.plugin.com.google.cloud.artifactregistry:artifactregistry-gradle-plugin:2.1.1"
  }
}
apply plugin: com.google.cloud.artifactregistry.gradle.plugin.ArtifactRegistryGradlePlugin

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

Если бы кто-нибудь мог сказать мне, как организовать эти два фрагмента, чтобы я мог указать репозиторий для публикации в init.gradle файл (или, может быть, есть совершенно другой способ сделать это), это было бы чрезвычайно полезно!

1 ответ

Обновление: я нашел способ заставить его работать.

Вместо того, чтобы указывать репозиторий публикации, я просто определил переменную в файле:

      allprojects {
    ext.repositoryURL = "artifactregistry://random-location.pkg.dev/project-name/repository-name"
}

Что я потом использовал в скрипте сборки:

      publishing {
    ...
    repositories {
        maven {
            url repositoryURL
        }
    }
}

Таким образом, я все еще могу ввести init.gradle файл позже, чтобы указать URL-адрес реестра.

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