জেনকিনস 2 পাইপলাইনে কোনও ম্যানুয়াল অনুমোদন toোকানোর কোনও উপায় আছে কি?


19

জেনকিন্স 2 পাইপলাইনে প্রথম শ্রেণির নাগরিক রয়েছে। যাইহোক, উদাহরণগুলিতে কার্যগুলি একক ক্রম হিসাবে সম্পাদিত হবে বলে মনে হয়:

node {
   // Mark the code checkout 'stage'....
   stage 'Checkout'

   // Get some code from a GitHub repository
   git url: 'git@github.com:elifesciences/elife-bot.git'

   // Mark the code build 'stage'....
   stage 'Build'
   echo "Unit tests will run here"

   stage "Production"
   echo "Deploying to production environment"
}

উত্পাদন সিস্টেমে মোতায়েনের জন্য এটি ম্যানুয়াল অনুমোদনের জন্য প্রায়শই কার্যকর; পাইপলাইনের ভিতরে টিপে ম্যানুয়াল বোতাম toোকানোর কোনও উপায় আছে?

আমি ডক্সগুলিতে এটি সম্পাদন করার জন্য সম্ভাব্য পদক্ষেপগুলি খুঁজছি , কোনও লাভ হয়নি।


আমি জেনকিন্সকে চিনি না, তবে আপনার বিল্ড প্ল্যানকে কয়েকটি ধাপে বিভক্ত করার কোনও উপায় নেই, এবং এই ধাপগুলির কিছুটি কেবল "ম্যানুয়াল ট্রিগার" তে চালানো হবে?
টিকটাক

এখন অবধি সেরা আংশিক সমাধান: inputপাইপলাইনের একটি পদক্ষেপ যা ব্যবহারকারীকে ইনপুট (বা বিল্ডটি বাতিল করতে) জিজ্ঞাসা করে। যাইহোক, আমি একটি স্থিতিশীল রাষ্ট্র
চাইবার

উত্তর:


18

ইনপুট হ'ল বিকল্পটি আপনি সন্ধান করছেন। আমি এটি যেভাবে ব্যবহার করছি তা এখানে। নোডের বাইরের পদক্ষেপটি রাখা গুরুত্বপূর্ণ, অন্যথায় জেনকিন্স পরবর্তী পদক্ষেপের জন্য অপেক্ষা করা কোনও এজেন্টকে ধরে রাখবে। মনে রাখবেন দ্বিতীয় নোড প্রথমটির মতো একই ওয়ার্কস্পেস ব্যবহার করতে পারে না।

node {
    stage('build'){
        echo "building"
    }
}
stage('Deploy approval'){
    input "Deploy to prod?"
}
node {
    stage('deploy to prod'){
        echo "deploying"
    }
}

একাধিক পাইপলাইন সেখানে যেতে পারে, প্রবীণদের যারা প্রযোজনায় নিয়োজিত হন না তাদের কী ঘটে? অপূর্ণ অবস্থায় প্রবীণদের সেখানে থাকার থেকে বিরত রাখার কোনও উপায় আছে (তারা ঝলকানি হবে কিনা তা জানেন না)?
জিওরজিওসিরোনি

1
যতদূর আমি বলতে পারি এটি গর্ভে ক্লিক না করা অবধি চিরকাল ফ্ল্যাশ হয়ে যাবে, যা বেশ কৃপণ is এর কিছু হারিয়ে যাওয়ার হাত থেকে রক্ষা পেতে আপনি সম্ভবত একটি টাইমআউট সেটআপ করতে পারেন। সময়সীমা শেষ হওয়ার পরে আপনি যদিও এটি মোতায়েনের ক্ষমতা হারাবেন। jenkins.io/doc/pipline/steps/workflow-basic-steps/…
স্টিভ মিসকিউইচ

1
আমি বুঝতে পারিনি যে কোনও এজেন্টকে ধরে না রাখার জন্য ইনপুটটি কনফিগার করা যেতে পারে । এটি ইনপুট উপায়ে আরও দরকারী করে তোলে।
djhaskin987

বিল্ডিং ব্যতীত কোনও সংস্করণ পুনরায় প্রচার করার বা পূর্ববর্তী সংস্করণটি মোতায়েন করার সম্ভাবনাটি খুব ভাল লাগবে।
tehnicaorg

1

শেষ পর্যন্ত আমি পৃথক test-projectএবং prod-projectপাইপলাইন তৈরি করেছি , যেখানে test-projectকোডের শেষে একটি approvedশাখায় মার্জ করা হয়েছে ।

তারপরে, prod-projectপাইপলাইনটি প্রতিটি নতুন প্রতিশ্রুতির জন্য ট্রিগার না করার জন্য সেট আপ করা যায় যাতে এটি অন-চাহিদা মোতায়েন করা যায়।


0

অতিরিক্তভাবে, আপনি নীচের মতো অটো-টাইমআউটও যুক্ত করতে পারেন

        stage('build') {
        steps {
            sh  """
                # Some commands
                """
            script {
              timeout(time: 10, unit: 'MINUTES') {
                input(id: "Deploy Gate", message: "Deploy ${params.project_name}?", ok: 'Deploy')
              }
            }
        }
    }

    stage('deploy') {
        when {
            branch 'master'
        }
        steps {
            sh  """
                # some commands
                """
        }
    }

আপনি যদি এটি সন্ধান করেন তবে আপনি জেনকিন্স অ্যাক্সেস করা ব্যবহারকারীদের শংসাপত্রগুলিতে জেনকিন্স ইনপুটকেও বেঁধে রাখতে পারেন যদি আপনি কেবল নির্দিষ্ট ব্যক্তিকে উত্তর দেওয়ার পক্ষে সক্ষম হতে চান - এটি আপনার গিট নিয়ন্ত্রণও যথেষ্ট যে সত্য তা দ্বারা আন্ডারপিনডও রয়েছে।


0

এটি কেবল একটি সাধারণ উদাহরণ তবে আপনি এটি প্রয়োজন তবে এটি ট্রিগার করতে পারেন।

stage{
    script{
        input "Continue?"
        ...enter code here
        ...
    }
}

0

আমি এই ডক্সটি https://jenkins.io/doc/book/pipline/syntax/ পড়ে নীচের মতো দেখিয়েছি

pipeline {
environment {
    BRANCH_NAME = "${env.BRANCH_NAME}"
}
agent any
stages{
    stage('Build-Initiator-Info'){
            steps{
                sh 'echo "Send Info"'
            }
    }
    stage('Build') {
        steps{
             catchError {
                sh 'echo "This is build"'
            }
         }
         post {
            success {
                echo 'Compile Stage Successful . . .'
            }
            failure {
                echo 'Compile stage failed'
                error('Stopping early…')

             }
    }
   }
  stage ('Deploy To Prod'){
  input{
    message "Do you want to proceed for production deployment?"
  }
    steps {
                sh 'echo "Deploy into Prod"'

              }
        }
  }
   }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.