📁
til
  • Today I Learned
  • Bookmarks
    • Bookmarks
  • Centos
    • How to limit bandwidth on CentOS
  • CI/CD
    • Add a mac as a GitLab runner
    • Setup CI pipeline for iOS projects on gitlab.com
  • cocoapods
    • private-spec-repo
    • CocoaPods save project.pbxproj file in XML plist format on Xcode 7.3.1
  • git
    • Git keeps asking password after El Capitan Upgrade
    • change-case-sensitivity-of-filename
    • interactive-rebase
    • Fork a repo
  • hacking
    • Decompile Android apk
  • homebrew
    • Bash Completion
  • ios
    • ats
    • Failed to open Xcode (LSOpenURLsWithRole() failed with error -10699)
    • Redirect to Settings Page
    • Retrieve expiry date of Provisioning Profile Certificate from .ipa
    • WKWebView set custom HTTP headers
    • IAP applicationUsername is nil
  • Jenkins
    • Create stage dynamically in declarative pipeline
  • mac
    • Catalina failed to sync iPhone with Finder
  • networking
    • shadowsocks vs. VPN
  • Objective-C
    • Keep subview in Scroll View always on screen
    • Custom View using xib
    • Scroll up TextField when keyboard shows
    • autolayout-hugging-vs-resistance
  • Regex
    • regex-chinese-char
  • SQL
    • update-json-value-in-postgresql
    • select-random-row-in-sql
  • SSH
    • verify-ssh-passphrase
  • SVN
    • Svn Checkout Directories only
  • swift
    • equatable
  • unix
    • Create and Grant Sudo Privileges to user
    • Create and Change Current Directory
    • Show ASCII Text welcome message when login with SSH
  • vim
    • Vim with Multiple Files
Powered by GitBook
On this page

Was this helpful?

  1. Jenkins

Create stage dynamically in declarative pipeline

// in a declarative pipeline
stage('Trigger Building') {
  when {
    environment(name: 'DO_BUILD_PACKAGES', value: 'true')
  }
  steps {
    executeModuleScripts('build') // local method, see at the end of this script
  }
}


// at the end of the file or in a shared library
void executeModuleScripts(String operation) {

  def allModules = ['module1', 'module2', 'module3', 'module4', 'module11']

  allModules.each { module ->
    String action = "${operation}:${module}"
  
    echo("---- ${action.toUpperCase()} ----")
    String command = "npm run ${action} -ddd"
  
    // here is the trick
    script {
      stage(module) {
        bat(command)
      }
    }
  }
}

References

PreviousIAP applicationUsername is nilNextCatalina failed to sync iPhone with Finder

Last updated 5 years ago

Was this helpful?

https://stackoverflow.com/questions/42837066/can-i-create-dynamically-stages-in-a-jenkins-pipeline