Сценарии оболочки в конвейере Jenkins работают асинхронно? - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть конвейер для сборки моего приложения для Android.На некоторых этапах у меня есть сценарии оболочки.когда я запускаю этапы один за другим (комментируя другие), все работает нормально, но когда я запускаю их все вместе, я вижу странное поведение.

Кажется, что сценарии оболочки выполняются в параллельно !!

вот мой jenkinsfile:

pipeline{
    agent any

    stages{
        stage("Clean"){
          agent{
            node{
              label 'master'
              customWorkspace getMainDirectory()
            }
          }
          steps{
              sh """#!/bin/bash
                rm -rf Corona
                rm -rf native-corona-android
                cd ..
                cp -a TemplateWorkspace/. ${getCoronaBranch()}-${getNativeBrach()}
                """
          }
        }
        stage("pull native repo"){
            agent{
              node{
                label 'master'
                customWorkspace getNativeProjectPath()
              }
            }
            steps{
                echo "pulling native"
                git(
                   url: nativeRepositoryAddress,
                   credentialsId: credentialsId,
                   branch: getNativeBrach()
                )
                echo "pulling done"
            }
        }
        stage("pull corona repo"){
            agent{
              node{
                label 'master'
                customWorkspace getCoronaProjectPath()
              }
            }
            steps{
                echo "pulling corona"
                git(
                   url: coronaRepositoryAddress,
                   credentialsId: credentialsId,
                   branch: getCoronaBranch()
                )
                echo "pulling done"
            }
        }
        stage("build"){
            environment {
                docDir = getMainDirectory()
                ANDROID_HOME = getAndroidSDKLocation()
            }
            agent{
              node{
                label 'master'
                customWorkspace getNativeProjectPath()
              }
            }
            steps{
                sh """#!/bin/bash
                ./gradlew clean
                ./gradlew changeFiles --stacktrace --no-daemon
                ./gradlew assembleDebug --stacktrace --no-daemon
                """
            }
        }
        stage("move build files"){
          agent{
            node{
              label 'master'
              customWorkspace getGradleBuildLocation()
            }
          }
          steps{
              sh """#!/bin/bash
                yes | cp -rf * ../../../../JenkinsBuilds/${getOutputFolder()}/
                """
          }
        }
    }

}

Я просто хочу выполнить шаги синхронно (и, конечно, сценарии оболочки), В чем моя проблема?

ЗдесьВот что я вижу:

На шаге «Очистка» папки удаляются, а свежая копия папок «Шаблон» копируется в рабочий каталог.Шаги «вытащить родное репо» и «вытащить коронное репо» выполняют работу, которую они должны делать.но на шаге "build" я вижу, что часть файлов "native-corona-android" пропала, а скрипт "gradlew" удален.Я также видел ситуации, когда вся папка "native-corona-android" удалялась.Тогда я подумал, что сценарий в шаге «Очистить» вызывается снова.

Спасибо

1 Ответ

0 голосов
/ 10 декабря 2018

Если вы не используете директиву parallel, все шаги должны выполняться синхронно.

Какое поведение вы наблюдаете?Какие шаги выполняются параллельно?

...