Jenkinsfile: как развернуть и запустить артефакты на другом узле - PullRequest
0 голосов
/ 10 октября 2018

Я использую тестовый проект, чтобы помочь мне проверить PoC для конвейера Дженкинса.Это довольно просто и состоит из 2 отдельных узлов ( master и sim ).

Это проект VS C ++, таким образом, на master node Iнеобходимо выполнить:

  • проверка кода
  • сборка
  • архивирование артефактов (для повторного использования позже)
  • запуск статического анализа кода

И на sim-узле мне нужно выполнить:

  • развернуть артефакты сборки (из этапа архивирования)
  • runнекоторое тестирование

Я почти заставил его работать, просто застрял на узле сима, где по какой-то причине Дженкинс выполняет проверку кода там !?Где мне нужно только получить двоичные файлы и запустить некоторые тесты.Не пытайтесь обойти это.

Узлы Sim не имеют доступа к репозиторию SCM, поскольку им не нужно иметь дело с исходным кодом.

Вот декларативный конвейерный скрипт IДо сих пор использовали:

pipeline {

agent {
    node {
        label 'master'
    }
}

environment {
    Path = 'C:\\"Program Files (x86)\\Microsoft Visual Studio"\\2017\\Professional\\MSBuild\\15.0\\Bin\\amd64;C:\\Windows\\System32;C:\\local\\boost_1_67_0\\lib64-msvc-14.1;%Path%'
}

stages {
    stage('Build') {
        steps {
            bat 'msbuild "testproj\\testproj.sln" /t:rebuild /p:platform=x64 /p:configuration=Release'
        }
    }
    stage('Archive') {
        steps {
            archiveArtifacts '**/*.lib, **/*.exe, **/*.xml'
        }
    }
    stage('SCA') {
        steps {
            bat '"C:\\Program Files\\Cppcheck\\cppcheck" --language=c++ --enable=all --xml --xml-version=2 . 2> cppcheck-result.xml'
            publishCppcheck pattern: 'cppcheck-result.xml'
        }
    }
    stage('Test') {
        node('Sim') {
            steps {
                copyArtifacts filter: '**/*.exe', fingerprintArtifacts: true, flatten: true, projectName: 'test', selector: lastSuccessful()
                bat 'ut.exe --log_format=XML --log_level=all --log_sink=ut_results.xml'
                xunit testTimeMargin: '3000', thresholdMode: 1, thresholds: [], tools: [BoostTest(deleteOutputFiles: true, failIfNotNew: true, pattern: '**/ut_results.xml', skipNoTestFiles: false, stopProcessingIfError: true)]
            }
        }
    }
}

}

Журнал консоли заданий Jenkins:

...
[Pipeline] publishCppcheck
[Cppcheck] Starting the cppcheck analysis.
[Cppcheck] Processing 1 files with the pattern 'cppcheck-result.xml'.
[Cppcheck] Not changing build status, since no threshold has been exceeded.
[Cppcheck] Ending the cppcheck analysis.
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Test)
[Pipeline] node
Running on Sim in c:\jenkins\workspace\test
[Pipeline] {
[Pipeline] checkout
 > git.exe rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > git.exe config remote.origin.url [git repo] # timeout=10
Fetching without tags
...
using GIT_ASKPASS to set credentials 
 > git.exe fetch --no-tags --progress [git repo] +refs/heads/*:refs/remotes/origin/*
ERROR: Error fetching remote repo 'origin'

1 Ответ

0 голосов
/ 12 октября 2018

Попробуйте:

options {
    skipDefaultCheckout()
} 

Затем этап проверки:

stage('Clone repo') {
    steps {
        checkout scm
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...