Size: a a a

2021 April 06

DK

D K in jenkins_ru
я даже не знаю что тебе посоветовать. Беги от туда. И еще все раскажи где это, что бы случайно не вляпались
источник

t

tsla in jenkins_ru
не так много мест на удалёнке где вебсфера) думаю сразу поймёте
источник

M

Max.d 🤖 in jenkins_ru
1. Запустить цикл по массиву
2. PROFIT?
источник

t

tsla in jenkins_ru
пример? как это сделать в пайплайне?
источник

M

Max.d 🤖 in jenkins_ru
Обычный for each-цикл Groovy, гугл в помощь. Хотя хз насчёт декларативных пайпов
источник

AK

Alexey Kudryavtsev in jenkins_ru
Привет! Занести сервера в список, и дальше по списку: List.each {
   println "Number ${it}"
}
В теле цикла любые твои пожелания. Пример рабочий чёт найти не могу для тебя (((
источник

AK

Alexey Kudryavtsev in jenkins_ru
groovy iterate list - вот по такому ключу поищи
источник

Н

Никитяо in jenkins_ru
failFast
источник

ММ

Максим Максаков... in jenkins_ru
Добрый день! Коллеги, а подскажите - можно дженкинс заставить фейлить или давать статус анстейбл на шаге при условии, что в выводе будут те или иные слова?
источник

Н

Никитяо in jenkins_ru
я бы запуск ssh в функцию вынес
источник

ММ

Максим Максаков... in jenkins_ru
Типа catchError но unstable если в выводе есть слово deprecation
источник

Н

Никитяо in jenkins_ru
у меня такое ансиблом делается

т.е. при установке сохраняет вывод в переменную, а потом парсим его, а в дженкинсе уже catchError
источник

ММ

Максим Максаков... in jenkins_ru
Массивное решение получается. А как в переменную вывод сохраняете?
источник

u

unixshaman in jenkins_ru
Вообще хрень делаете
источник

u

unixshaman in jenkins_ru
Щас код скину
источник

u

unixshaman in jenkins_ru
import groovy.json.JsonOutput

def call(def cerediraTess, def creds, List agentsList, def scriptName, List arguments = [], Closure check = {}, int retryNumber = 3, int timeoutSeconds = 900) {
   def parallelTasks = [:]

   for (int i = 0; i < agentsList.size(); i++) {
       // Нельзя выносить вычисление этого значения внутрь вызова httpPostRequest, потому что тот блок вычисляется в отдельных потоках
       // и там значение i будет последним из цикла всегда, и будет вываливаться ошибка OutOfBoundException
       def requestBody = JsonOutput.toJson([ 'hostname': agentsList[i].name, 'args': arguments, 'timeout': timeoutSeconds as int])

       parallelTasks["Выполнение ${scriptName} на ${agentsList[i].name}"] = {
           retry(retryNumber) {
               withCredentials([usernameColonPassword(credentialsId: creds, variable: 'ct_auth')]) {
                   def res = httpPostRequest("${cerediraTess}/executeScript/${scriptName}", requestBody, [[maskValue: true, name: 'Authorization', value: "Basic " + "${ct_auth}".bytes.encodeBase64().toString()]], timeoutSeconds)
                   check.call(res)
               }
           }
       }
   }
   parallel parallelTasks
}
источник

u

unixshaman in jenkins_ru
Это функция для выполнения 1 скрипта на многих агентах в параллель. Агенты подаются списком обычным. Есть retry - если выполнить с первого раза не удалось  - а скрипты идемпотентные и можно бахнуть еще раз, и таймаут можно тоже внутри retry указать.

В моем примере вызов специального сервиса, который команды выполняет, в вашем примере будет просто sh - и через remote выполняете команды.

Результат выполнения смотрите через Blue Ocean
источник

t

tsla in jenkins_ru
я короче сделал так -

def servers = ["172.16.2.201", "172.16.2.211", "172.16.2.212"]

def parallelStagesMap = servers.collectEntries {
   ["${it}" : generateStage(it)]
}

def generateStage(servers) {
   return {
       stage("stage: ${servers}") {
               echo "This is ${servers}."
               sh '''
               ssh -oStrictHostKeyChecking=no -i /var/lib/jenkins/.ssh/id_rsa ubuntu@172.16.2.201 "scp -rp 192.168.1.201:/home/ubuntu/flask-app/templates/index.html /home/ubuntu/flask-app/templates/index.html && sleep 15"
               '''
       }
   }
}



pipeline {
   agent any
options {
   parallelsAlwaysFailFast()
}
     stages {
       stage('parallel stage') {
           steps {
               script {
                   parallel parallelStagesMap
               }
           }
       }
     }
}
источник

t

tsla in jenkins_ru
просто ужас, что я творю😱🙈
источник

t

tsla in jenkins_ru
круто выглядит 👍

но я не осиливаю его понять, где список он берёт
источник