Как вы используете openshiftBuild в jenkinsfile?

У меня настроен конвейер Jenkins как код, но мои файлы проекта со стадии Gradle Build не проходят через конвейер, и я получаю сообщение Ошибка: не удалось найти или загрузить приложение основного класса в конечном контейнере.

Как передать файлы проекта команде openshiftBuild внутри этапа «Создать образ»?

node('gradle'){
    stage('SCM Checkout'){
        // Clone git repo.
    }

    stage('Gradle Build'){
        dir('/tmp/workspace/myproject/myproject-fproj/javaDemo'){
        sh 'gradle build'
        }
    }

    stage('Build Image'){
        openshiftBuild(buildConfig: 'javademo', showBuildLogs: 'true')
    }

    stage('Test Container Availability'){
        openshiftVerifyBuild(buildConfig: 'javademo')
    }

    stage('Deploy Application'){
        openshiftDeploy(deploymentConfig: 'javademo')
    }
}
"DevOps: Jenkins & AWS Series, часть 5: Установка Gradle на Ubuntu 22.04
"DevOps: Jenkins & AWS Series, часть 5: Установка Gradle на Ubuntu 22.04
В этой статье блога мы проведем вас через процесс установки Gradle на Ubuntu 22.04, интеграции его с Jenkins и создания задания Gradle. Мы...
1
0
1 016
1

Ответы 1

openshiftBuild не имеет аргумента для указания каталога для сборки, потому что он извлекает конфигурацию сборки, настроенную для этого приложения. Вот страница, на которой указаны аргументы для каждой из команд плагина Openshift: https://jenkins.io/doc/pipeline/steps/openshift-pipeline/

Чтобы решить эту проблему, я определил эти переменные в файле Jenkins:

String ocpApiServer = env.OCP_API_SERVER ? "${env.OCP_API_SERVER}" : "https://openshift.default.svc.cluster.local"

env.TOKEN = readFile('/var/run/secrets/kubernetes.io/serviceaccount/token').trim()

env.OC_CMD = "oc --request-timeout='0' --token=${env.TOKEN} --server=${ocpApiServer} --certificate-authority=/run/secrets/kubernetes.io/serviceaccount/ca.crt"

Затем на этапе создания образа я использовал:

sh "${env.OC_CMD} start-build javademo --from-dir=build/libs --wait=true --follow=true || exit 1"

Это позволило мне передать нужные мне файлы из каталога libs в образ s2i.

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