screwdriver-cd / screwdriver

An open source build platform designed for continuous delivery.
http://screwdriver.cd
Other
1.01k stars 170 forks source link

Manual trigger to continue a pipeline #1323

Open yuichi10 opened 5 years ago

yuichi10 commented 5 years ago

What happened: In some project, I want to deploy services after passed the test job and human check. Now when I try to create such pipeline, I need to put job require [], just for click trigger. That makes my pipeline complex.

What you expected to happen: I want another require component which is triggered by human click or I want to some human approval system to trigger next job.

How to reproduce it: Nothing.

jithine commented 5 years ago

@yuichi10 how do you propose human click to be captured ? Click trigger for Detached jobs is the human click/approval in my opinion.

yuichi10 commented 5 years ago

@jithin1987 sorry for my late response In my image, I want to make the pipeline like below. (just example)

jobs:
  test:
    require: [ ~commit ]
    steps:
       - test: do test
  deploy:
    require: [ test, manual ]
    steps:
      - deploy: do deploy

In this pipeline, it's deploy service after pass test job and human click.

Now If I try to do same thing. I need to create a pipeline like below

jobs:
  test:
    require: [ ~commit ]
    steps:
       - test: do test
  human-trigger:
    steps:
      - click: do click
  deploy:
    require: [ human-tigger, manual ]
    steps:
      - deploy: do deploy

If I require some human trigger, I need to put some detached job. This makes my pipeline look complex.

yuichi10 commented 5 years ago

Also if, possible, I want approval system. For example, when trigger deploy job, an Email is sent to the Product Owner or someone, and after the person are approved, the deploy job is start.

tk3fftk commented 5 years ago

I think it's like input step on Jenkins. https://jenkins.io/doc/tutorials/create-a-pipeline-in-blue-ocean/#add-a-final-deliver-stage-to-your-pipeline https://jenkins.io/doc/pipeline/steps/pipeline-input-step/

jithine commented 5 years ago

We can use existing functionality of "Start pipeline from here" for manually starting a job.

The example in https://github.com/screwdriver-cd/screwdriver/issues/1323#issuecomment-428783954 will become like this

jobs:
  test:
    require: [ ~commit ]
    steps:
       - test: do test
  deploy:
    humanTrigger: true
    require: [ test ]
    steps:
      - deploy: do deploy

When Screwdriver executor sees humanTrigger: true config for a job, it does not start the job in a regular pipeline flow and marks it's status as PAUSED. When user clicks on the pipeline graph UI should show Continue message (refer screen

screen shot 2018-10-14 at 3 14 42 pm

shot)

Unlike "Start pipeline from here message" Continue pipeline should resume the same event, rather than creating a new event.

jithine commented 5 years ago

@yuichi10 thanks for this request. Please find my comment here for https://github.com/screwdriver-cd/screwdriver/issues/1323#issuecomment-429667973 for a feature proposal.

yuichi10 commented 5 years ago

That's looking good. It will be better to change the color of job prod. It makes easy to user to judge which job requires humanTrigger.

Also, if we think this problem as a approve problem, it will be better to put a type of method in humanTrigger such as click, email and slack. This makes more flexible. In the future, I think it will be better to add who can approve this trigger.
But I think to make this all approve system will take a lot of time, so it will be better to add click approve system as a first pass.