Nano Hash - криптовалюты, майнинг, программирование

Запускайте параллельные этапы Jenkins на разных узлах, используя декларативный синтаксис.

Удалось успешно запустить интеграционные тесты параллельно на одном узле, и теперь я хотел бы распределить их по разным узлам. В приведенном ниже примере я хочу, чтобы этапы IT 1 и IT 2 выполнялись на разных узлах, а IT 3 выполнялся на исходном узле. Пробовал несколько комбинаций, используя node в качестве родителя stage('IT 1') и node в качестве дочернего, но я получаю синтаксические ошибки для обоих. Каков правильный синтаксис для достижения этого?

pipeline {

  agent { label '!master' }

  stages {
    stage('Integration Tests') {
      parallel {
        stage('IT 1 (slow)') {
          steps {
            sh 'run-it-1.sh'
          }
        }
        stage('IT 2 (slow)') {
          steps {
            sh 'run-it-2.sh'
          }
        }
        stage('IT 3 (quick)') {
          steps {
            sh 'run-it-3.sh'
          }
        }
      }
    }
  }
}

Изменить: использование label вместо node работает для декларативных конвейеров. Пример ниже:

stage('IT 1 (slow)') {
  agent { label '!master' }
  steps {
    sh 'run-it-1.sh'
  }
}

Ответы:


1

Начиная с декларативной версии 1.2, вы можете напрямую объявлять тип агента, который хотите использовать для каждого параллельного этапа: https://jenkins.io/blog/2017/09/25/declarative-1/

Этот конкретный вариант использования не тестировался, но я предполагаю, что если вы не объявите какой-либо агент{} для этапа "IT 3", он будет выполняться на исходном узле.

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

07.12.2017
  • Спасибо. Я все еще пытаюсь подтвердить это, но моя проблема, похоже, связана с использованием node вместо label. Из stackoverflow.com/questions/42050626/ : Агент предназначен для декларативных конвейеров, а узел — для скриптовых конвейеров. 07.12.2017
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..