Возьмите профиль maven Spring из конвейера Дженкинса

У меня проблема с конвейером Дженкинса в проекте загрузки Maven Spring с использованием профилей Spring.

Это pom.xml:

<profiles>
    <profile>
        <id>dev</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <spring.profiles.active>dev</spring.profiles.active>
        </properties>
    </profile>
    <profile>
        <id>svil</id>
        <properties>
            <spring.profiles.active>svil</spring.profiles.active>
        </properties>
    </profile>
    <profile>
        <id>prod</id>
        <properties>
            <spring.profiles.active>prod</spring.profiles.active>
        </properties>
    </profile>
</profiles>

application.properties:

#---
[email protected]@

my.prop=used-always-in-all-profiles
#---
spring.config.activate.on-profile=dev
spring.datasource.url=.....
spring.datasource.username=....
spring.datasource.password=....

#---
spring.config.activate.on-profile=svil
spring.datasource.url=.....
spring.datasource.username=....
spring.datasource.password=....
#---
spring.config.activate.on-profile=production
spring.datasource.url=....
spring.datasource.username=....
spring.datasource.password=....

Дженкинсфайл:

pipeline {
agent any

tools {
      maven 'jenkins-maven'
      jdk 'java-17'
    }

stages {

    stage('Build'){
        steps {
            sh "mvn -Psvil clean install -DskipTests"
        }
    }

    stage('Test'){
        steps{
            sh "mvn test"
        }
    }

    stage('Deploy') {
        steps {
             .....
        }
    }
}}

Дженкинс настроен с использованием моего репозитория GitHub и выполняет шаги, определенные в файле Jenkinsfile. Используется maven, установленный на сервере:

/opt/apache-maven-3.6.3

При запуске команды:

sh "mvn -Psvil clean install -DskipTests"

Указанный профиль (svil) загружается некорректно, а принимает профиль по умолчанию (dev)

2024-04-17T14:25:04.167+02:00  INFO 825213 --- [           main] i.r.p.ApplicationTests      : Starting ApplicationTests using Java 17.0.10 
with PID 825213 (started by jenkins in /var/lib/jenkins/workspace/app)
2024-04-17T14:25:04.168+02:00  INFO 825213 --- [           main] i.r.p.ApplicationTests      : The following 1 profile is active: "dev"

Из командной строки у меня не возникло никаких проблем, и проект без проблем скомпилировался в jar.

Как я могу настроить конвейер Дженкинса для использования правильных профилей Spring?

Спасибо

Профили Maven не являются профилями Spring, и вам не следует предоставлять разные двоичные файлы для разных сред. Вместо этого создайте один артефакт и укажите профиль только при запуске приложения.

M. Deinum 17.04.2024 16:00
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
72
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Решение состоит в том, чтобы изменить файл Jenkins, добавить среду с профилем и использовать их в mvn clean installan во время сборки:

environment {
    SPRING_PROFILES_ACTIVE = 'svil'
}

stages {

    stage('Build'){
        steps {
            sh "mvn clean install -Dspring.profiles.active=${SPRING_PROFILES_ACTIVE} -DskipTests"
        }
    }

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