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

Мне нужен последний артефакт (например, снимок) из репозитория в Artifactory. Этот артефакт должен быть скопирован в сервер (Linux) с помощью сценария.

Каковы мои опции? Что-то как Wget / SCP? И как я получаю путь артефакта?

Я нашел некоторые решения, которые требуют Artifactory Pro. Но у меня просто есть Artifactory, не Artifactory Pro.

Действительно ли возможно вообще загрузить с Artifactory без UI и не наличия Проверсии? Каков опыт?

Я нахожусь на OpenSUSE 12.1 (x86_64), если это имеет значение.

57
задан 30 July 2016 в 05:29

2 ответа

Если Вы хотите загрузить последнюю банку между 2 репозиториями, можно использовать это решение. Я на самом деле использую его в своем конвейере Jenkins, это работает отлично. Скажем, у Вас есть plugins-release-local и plugins-snapshot-local, и Вы хотите загрузить последнюю банку между ними. Ваш сценарий оболочки должен быть похожим на это

ПРИМЕЧАНИЕ: Я использую jfrog cli, и он настроен с моим сервером Artifactory.

Вариант использования: Сценарий оболочки

# your repo, you can change it then or pass an argument to the script
# repo = $1 this get the first arg passed to the script
repo=plugins-snapshot-local
# change this by your artifact path, or pass an argument $2
artifact=kshuttle/ifrs16
path=$repo/$artifact
echo $path
~/jfrog rt download --flat $path/maven-metadata.xml version/
version=$(cat version/maven-metadata.xml | grep latest | sed "s/.*<latest>\([^<]*\)<\/latest>.*/\1/")
echo "VERSION $version"
~/jfrog rt download --flat $path/$version/maven-metadata.xml build/
build=$(cat  build/maven-metadata.xml | grep '<value>' | head -1 | sed "s/.*<value>\([^<]*\)<\/value>.*/\1/")
echo "BUILD $build"
# change this by your app name, or pass an argument $3
name=ifrs16
jar=$name-$build.jar
url=$path/$version/$jar

# Download
echo $url
~/jfrog rt download --flat $url

Вариант использования: Конвейер Jenkins

def getLatestArtifact(repo, pkg, appName, configDir){
    sh """
        ~/jfrog rt download --flat $repo/$pkg/maven-metadata.xml $configDir/version/
        version=\$(cat $configDir/version/maven-metadata.xml | grep latest | sed "s/.*<latest>\\([^<]*\\)<\\/latest>.*/\\1/")
        echo "VERSION \$version"
        ~/jfrog rt download --flat $repo/$pkg/\$version/maven-metadata.xml $configDir/build/
        build=\$(cat  $configDir/build/maven-metadata.xml | grep '<value>' | head -1 | sed "s/.*<value>\\([^<]*\\)<\\/value>.*/\\1/")
        echo "BUILD \$build"
        jar=$appName-\$build.jar
        url=$repo/$pkg/\$version/\$jar

        # Download
        echo \$url
        ~/jfrog rt download --flat \$url
    """
}

def clearDir(dir){
    sh """
        rm -rf $dir/*
    """

}

node('mynode'){
    stage('mysstage'){
        def repos =  ["plugins-snapshot-local","plugins-release-local"]

        for (String repo in repos) {
            getLatestArtifact(repo,"kshuttle/ifrs16","ifrs16","myConfigDir/")
        }
        //optional
        clearDir("myConfigDir/")
    }
}

Это помогает много, когда Вы хотите получить последний пакет между 1 или более repos. Надежда это помогает u также! Поскольку больше Jenkins написало сценарий информации о конвейерах, посетите документы .

Jenkins
0
ответ дан 1 November 2019 в 16:05

Для меня самый легкий путь состоял в том, чтобы считать последние версии проекта с комбинацией завихрения, grep, вида и хвоста.

Мой формат: сервис - (версия: 1.9.23) - (buildnumber) 156.tar.gz

versionToDownload=$(curl -u$user:$password 'https://$artifactory/artifactory/$project/' | grep -o 'service-[^"]*.tar.gz' | sort | tail -1)
1
ответ дан 1 November 2019 в 16:05

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

Похожие вопросы: