У меня недавно был вызов. Я написал PR для улучшения библиотеки с открытым исходным кодом, но владельцы этой библиотеки не объединили ее. Я действительно не хочу ждать, пока они объединят библиотеку, пока я не смогу ее использовать, поэтому мне нужно развернуть свою копию с измененным идентификатором версии на частном артефактном сервере.
Тот факт, что я не могу изменить репо, чтобы иметь Jenkinsfile, и тот факт, что то, что я пытаюсь сделать, с точки зрения сборки с моей собственной специальной версией, требует некоторого тщательного написания сценариев. Решение состоит в том, чтобы использовать специальный бит конвейера в качестве чистой сборки конвейера в Jenkins.
Тот факт, что вы можете написать произвольный мощный скрипт, подобный этому, и просто запустить его в коробке Jenkins, является достаточным доказательством того, что вы должны держать их в безопасности!
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
// define the server instance via it's name and // the artifactory plugin def server = Artifactory.server "artifactory_prod" server.credentialsId = 'artifactory-apitoken' pipeline { environment { buildInfo = null } agent any stages { // A pure pipeline build needs to be told how to check out stage ( 'Checkout' ) { steps { // the feature branch I hope be merged to an official release // and the link to my github repo git branch: 'batch_uses_s3' , } } stage ( 'Rewrite version' ) { steps { script { // the version of the pom file from git is not under our control // so modify it to disambiguate from the _real_ version def descriptor = Artifactory.mavenDescriptor() descriptor.version = '1.0.2f' descriptor.transform() } } } stage ( 'Build' ) { steps { script { def rtMaven = Artifactory.newMavenBuild() // Set Maven build tool rtMaven.tool = 'maven-3-6-1' // the artifactory virtual repos for resolving // dependencies rtMaven.resolver ( server: server, releaseRepo: 'libs-release' , snapshotRepo: 'libs-snapshot' ) // the run command in a moment is going to build // then deploy - we need to set the target server // and repo to use rtMaven.deployer ( server: server, releaseRepo: 'internal-release' ) // do the build - though this doesn't include deploy // the artifactory plugin will do the deploy for us buildInfo = rtMaven.run ( pom: 'pom.xml' , goals: 'clean install' , ) } junit 'target/surefire-reports/*.xml' } } } } |
Там есть некоторые копируемые лакомые кусочки … но вот в чем дело. Это не отличный способ использовать Maven. Кажется, что авторы артефакта несколько перегружены собственным продуктом и думают, что это центр сборки … и это странно.
Приходиться отдавать казнь мавена за артефакт, чтобы он бежал за тобой, мало смысла. Это своего рода помощь здесь, поскольку она перекрывает отсутствие нашей локальной артефакты в файле pom сборки данного конкретного репозитория maven, но это забавный способ. Maven позволяет вам контролировать использование артефакта через pom или командную строку. Кажется, что сделать это с помощью плагина тесно взаимосвязано, и я уверен, что он дает вам меньше возможностей для настройки, а не больше.
Это, однако, спасает вас, зная, как установить правильные значения в командной строке maven.
См. Оригинальную статью здесь: Полевые заметки из Ad-Hoc Jenkins Pipeline Мнения, высказанные участниками Java Code Geeks, являются их собственными. |