Как определить объект BuildConfig с помощью Jenkins и openshift - PullRequest
0 голосов
/ 14 сентября 2018

Я использую Jenkins и OpenShift для создания сборки и запуска развертывания.Вот мой YAML-файл:

apiVersion: v1
kind: List
metadata: {}
items:
- apiVersion: v1
  kind: BuildConfig
  metadata:
    name: petclinic-pipeline
  spec:
    source:
      git:
       uri: <<git url>>
      type: Git
    strategy:
      type: JenkinsPipeline
      jenkinsPipelineStrategy:
        jenkinsfilePath: Jenkinsfile
    triggers:
    - generic:
        secret: FiArdDBH
      type: Generic

Конфигурация Jenkins выглядит следующим образом:

node {
  stage('Source Checkout') {
    git url: "git url"
  }

   stage('Build') {
      git url: "git url"
      sh "/var/lib/jenkins/apache-maven-3.5.4/bin/mvn clean package -Dorg.jenkinsci.plugins.durabletask.BourneShellScript.HEARTBEAT_CHECK_INTERVAL=300 -DskipTests=true"
      stash name:"jar", includes:"target/a.jar"
    }

  stage('Build Image') {
    unstash name:"jar"
    sh "oc start-build petclinic-pipeline --from-file=target/a.jar --follow"
  }
 } 

Теперь, если я это применю, я получаю следующую ошибку:

$ oc start-build petclinic-pipeline --from-file=target/a.jar --follow
Uploading file "target/a.jar" as binary input for the build ... The
Build "petclinic-pipeline-20" is invalid: spec.source.git: Invalid
value: "": must be set when using Jenkins Pipeline strategy with
Jenkinsfile from a git repo

Я ожидаю, что образ должен быть построен, и я не могу понять, где проблема.Это что-то вроде: spec git не должен использоваться в файле YAML при использовании стратегии Jenkins?

1 Ответ

0 голосов
/ 15 сентября 2018

Лично я думаю, что вам лучше использовать OpenShift Pipeline Jebkins Plugin вместо выполнения команд для oc start-build.

Например, простое описание сборки и развертывания с использованием OpenShift Pipeline Jenkins Plugin. Для более подробной информации см. здесь

apiVersion: v1
kind: BuildConfig
metadata:
  labels:
    name: your-pipeline
  name: your-pipeline
spec:
  runPolicy: Serial
  strategy:
    jenkinsPipelineStrategy:
      jenkinsfile: |-
        node(''){
          stage 'Build using your-yourconfig'
              openshiftBuild(namespace: 'your-project', bldCfg: 'your-buildconfig', showBuildLogs: 'true')
          stage 'Deployment using your-deploymentconfig'
              openshiftDeploy(namespace: 'your-project', depCfg: 'your-deploymentconfig')

        }
    type: JenkinsPipeline
  triggers:
  - github:
      secret: gitsecret
    type: GitHub
  - generic:
      secret: genericsecret
    type: Generic

Надеюсь, это поможет вам.

...