微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Nexus 3 使用 Groovy 脚本创建清理策略

如何解决Nexus 3 使用 Groovy 脚本创建清理策略

我想使用 Groovy 为 nexus 3 上的 maven 和 docker 存储库创建清理策略。 到目前为止,我找到的所有解决方案和示例都是清理脚本和清理任务。 我想使用 Groovy 创建一个清理策略,将其附加到存储库(maven 或 docker)并创建一个任务以使用该策略定期运行。

解决方法

更新:这是新的解决方案。第一个 groovy 脚本创建并将策略附加到 Docker 存储库,第二个 groovy 脚本创建 Docker 存储库

import org.sonatype.nexus.cleanup.storage.CleanupPolicyStorage

def createPolicy (policyName) {
    try {
        def policyStorage = container.lookup(CleanupPolicyStorage.class.getName())
        def cleanupPolicy = policyStorage.newCleanupPolicy()
        cleanupPolicy.setName(policyName)
        cleanupPolicy.setNotes('')
        cleanupPolicy.setMode('deletion')
        cleanupPolicy.setFormat('docker')
        cleanupPolicy.setCriteria(['regex': '.*SNAPSHOT'])
        policyStorage.add(cleanupPolicy)
    } catch (e) {
        log.info("Cleanup policy already exists,skipping...")
    }

}

def attachPolicy (policyName,repositoryName) {
    try {
        def repo = repository.repositoryManager.get(repositoryName)
        def cleanupPolicyAttribute = [policyName: [policyName].toSet()]
        def conf = repo.getConfiguration()
        conf.getAttributes().put("cleanup",cleanupPolicyAttribute)
        repo.stop()
        repo.update(conf)
        repo.start()
    } catch (e) {
        log.info("Attaching policy fail")
    }
}

createPolicy('dockerCleanupPolicy')
attachPolicy('dockerCleanupPolicy','docker-NameOfTheRepo')

使用此脚本,我们正在创建存储库。请记住,在较旧的 nexus 版本中,您应该导入 import org.sonatype.nexus.repository.storage.WritePolicy 而不是 import org.sonatype.nexus.repository.config.WritePolicy

import org.sonatype.nexus.blobstore.api.BlobStoreManager
import org.sonatype.nexus.repository.config.WritePolicy

def createDockerHosted(repoName,repoHttpPort){
    try {
        repository.createDockerHosted(repoName,repoHttpPort,null,BlobStoreManager.DEFAULT_BLOBSTORE_NAME,true,false,WritePolicy.ALLOW)
    } catch (e) {
        log.info("Repo already exists,skipping...")
    }
}
createDockerHosted('docker-NameOfTheRepo',5001)

旧解决方案 找到了,这是你如何做的一个例子

import org.sonatype.nexus.cleanup.storage.CleanupPolicyStorage;
def policyStorage = container.lookup(CleanupPolicyStorage.class.getName());
def cleanupPolicy = policyStorage.newCleanupPolicy();
cleanupPolicy.setName('name');
cleanupPolicy.setNotes('');
cleanupPolicy.setMode('deletion');
cleanupPolicy.setFormat('raw');
cleanupPolicy.setCriteria(['lastBlobUpdated':'432000']);
policyStorage.add(cleanupPolicy);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。