Создайте проект Maven через Jenkins CI с внешним jar, не интегрированным в pom. xml - PullRequest
0 голосов
/ 24 января 2020

Я получил устаревший проект от bitbucket, подключенного к Jenkins на Docker контейнере. Сборка не удалась, потому что внешний jar-файл доступен только по ссылке.

Я попытался загрузить jar-файл через curl в файл Jenkins и создал для него собственный my-jar-pom. xml:

pipeline {

    agent {docker {image: 'maven: 3.6.3'} }

    tools {
        jdk "jdk-1.8"
    }

    stages {
        stage('myStage') {
            steps {
                step('Get Library') {
                    >&2 echo 'Get Library'
                    sh 'curl -O link-to-my-jar.jar'
                }
                step('Create POM') {
                    sh 'echo "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n
                                 <groupId>my-group-id</groupId>\n
                                 <artifactId>my-artifact-id</artifactId>\n
                                 <version>1.0</version>\n
                             </project>" > my-jar.pom'
                    >&2 echo 'create POM'
                }
                step('Install POM') {
                    mvn install:install-file -Dfile=my-jar.jar -DpomFile=my-jar.pom
                    >&2 echo 'install POM'
                }
                step('Install') {
                    sh 'mvn -B clean install'
                    >&2 echo 'install mvn'
                }
            }
        }
    }
}

все, что происходит в файле Jenkins. Теперь сборка все еще не удается, и я даже не могу прочитать эхо, которое я помещаю между командами в консоли. Какое решение для этого? Загрузите файл вручную и поместите его как-нибудь на сам том jenkins_home? Я бы предпочел решить эту проблему в файле Jenkins.

Редактировать: Там ошибка с консоли Jenkins:

    [ERROR] Failed to execute goal on project my-project: Could not
resolve dependencies for project my-project:jar:1.0.0: Failure to find my
jar in https://repository.jboss.org/nexus/content/repositories/thirdparty
releases was cached in the local repository, resolution will not be
reattempted until the update interval of thirdparty-releases has elapsed
or updates are forced

Ответы [ 2 ]

0 голосов
/ 27 января 2020

Следующие вещи отсутствуют: 1) Установка JDK в разделе инструментов моего Jenkins 2) Установка Maven в разделе инструментов

, затем я изменил агент на agent any и добавил maven к инструментам:

agent any

tools {
    jdk "JDK-8"
    maven "Maven-3.6.3"
}

-DgeneratePom = true на самом деле не сработало, возможно, моя ошибка, но я нашел экспериментально и нашел это как рабочее решение:

stages {
    stage('AXSUTILS') {
        steps {
            script {
                echo 'Get Library'
                sh 'curl -O http://link.to.my.jar/my-jar/1.0/my-jar.jar'

                echo 'create POM'
                sh 'echo "<project xmlns=\\"http://maven.apache.org/POM/4.0.0\\" xmlns:xsi=\\"http://www.w3.org/2001/XMLSchema-instance\\" xsi:schemaLocation=\\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xs\\"> <groupId>com.xx.xml</groupId> <artifactId>my-artifact</artifactId> <version>1.0</version> </project>" > my-jar.pom'

                echo 'install POM'
                sh 'mvn install:install-file -Dfile=my-jar.jar -DpomFile=my-jar.pom'

                echo 'install mvn'
                sh 'mvn -B -U -X clean install'
            }
        }
    }
}

Также следите за пропавшими без вести цитаты, я потратил много времени, понимая, что Дженкинс удаляет \ ", так что вам нужно \", чтобы "осталось".

0 голосов
/ 24 января 2020

Ваш подход в порядке. Это должно работать.

Но вам не нужно создавать POM самостоятельно. Вы можете позволить install:install-file создать его. Просто добавьте -DgeneratePom=true.

...