Mam potok Jenkins, aby zbudować pakiet .deb. Pomyślnie przesyła pakiet do repozytorium Artifactory. Sam pakiet znajduje się w „puli”, a metadane są tworzone dla komponentu „głównego” i dystrybucji „testowej”. Moje środowisko preprod instaluje pakiet przez APT.
To, co chciałbym teraz zrobić, to promować kompilację do 'stabilnej' dystrybucji w tym samym repozytorium (mamy tylko jedną korporacyjną instancję Artifactory z wieloma repozytoriami, więc nie mogę mieć kilku).
Mój rurociąg wygląda tak:
#!/usr/bin/env groovy
node('XXX') {
def artifactoryServer
def artifactoryBuildInfo
stage('Artifactory configuration') {
artifactoryServer = Artifactory.newServer url: "http://mycorporateartifactoryrepo.com", credentialsId: 'XXXXX'
}
stage('checkout') {
checkout scm
}
stage('packaging & deploying') {
artifactoryBuildInfo = Artifactory.newBuildInfo()
// Packaging & deploying mvn
archiveArtifacts artifacts: "target/cowsay.deb", fingeprint: true
// packaging & deploying deb package
def uploadSpec = """{
"files": [
{
"pattern": "target/cowsay.deb",
"target": "debian-repo/pool/",
"props": "deb.distribution=testing;deb.component=main;deb.architecture=all"
}
]
}"""
artifactoryBuildInfo = artifactoryServer.upload spec: uploadSpec
artifactoryServer.publishBuildInfo artifactoryBuildInfo
}
stage('promotion') {
def promotionConfig = [
'buildName' : artifactoryBuildInfo.name,
'buildNumber' : artifactoryBuildInfo.number,
'sourceRepo' : 'debian-repo/pool/',
'targetRepo' : 'debian-repo/pool/',
'comment' : 'Promoting build',
'status' : 'Released',
'includeDependencies': true,
'copy' : true,
'failFast' : true
]
// Promote build interactively if tests are OK
Artifactory.addInteractivePromotion server: artifactoryServer, promotionConfig: promotionConfig, displayName: 'Promote me!'
}
}
Jak sobie z tym poradzić? Artifactory nie dokumentuje takiej możliwości. Czy muszę utworzyć niestandardowy potok, aby to osiągnąć?
Dzięki
1 odpowiedź
Artifactory Promocja budowania umożliwia oznacz kompilację jako „promowaną” (tj. wydaną) i być może przenieś lub skopiuj artefakty do różnych repozytoriów (co oznacza lokalizację gotową do wydania).
Jednak w twoim przypadku zmianę dystrybucji artefaktu Debiana można wykonać poprzez modyfikację właściwości deb.distribution
ustawionej na artefakcie - spowoduje to, że zostanie on również zindeksowany w dystrybucji stable
(i dzięki temu będzie dostępny do zastosowania nowej dystrybucji).
Sugerowałbym albo dodanie kroku do potoku w tym celu, albo utworzenie zupełnie innego zadania, które promuje kompilację, a następnie adnotuje artefakty z wymaganymi właściwościami.
Inną alternatywą jest użycie wtyczki użytkownika może uruchomić się z zadania, ale tagowanie za pomocą właściwości jest wygodniejsze za pośrednictwem standardowego REST API IMHO.
Podobne pytania
Nowe pytania
debian
Uwaga: pytania MUSZĄ dotyczyć programowania. Użyj tego znacznika tylko wtedy, gdy twoje pytanie dotyczy programowania w Debianie przy użyciu API systemu operacyjnego lub funkcji specyficznych dla Debiana, albo tworzenia pakietów w formacie deb.