Мне нужен последний артефакт (например, снимок) из репозитория в Artifactory. Этот артефакт должен быть скопирован в сервер (Linux) с помощью сценария.
Каковы мои опции? Что-то как Wget / SCP? И как я получаю путь артефакта?
Я нашел некоторые решения, которые требуют Artifactory Pro. Но у меня просто есть Artifactory, не Artifactory Pro.
Действительно ли возможно вообще загрузить с Artifactory без UI и не наличия Проверсии? Каков опыт?
Я нахожусь на OpenSUSE 12.1 (x86_64), если это имеет значение.
Если Вы хотите загрузить последнюю банку между 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
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Для меня самый легкий путь состоял в том, чтобы считать последние версии проекта с комбинацией завихрения, 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)