Hi…I have been using Jenkins all the while and trying to checkout CircleCI, i did some playing around in my dev orgs for simple deployments. Few questions came in, will be great if anyone can respond
How can we trigger a deployment job manually - we had been using specific jobs like prod or UAT deployments with a manual trigger option so we can deploy when we are ready. But i see in CircleCI i cant find a manual trigger switch and everything seems to be triggered by git pushes
In jenkins i used to show certain input screens to user to ask what type of deployments they would like to do, how much data would they like in the new sandbox. But in circleCI i dont see any option where you can show a user input web screen during a job run. Is it possible or i am not seeing it right?
You can trigger a build using the API https://circleci.com/docs/2.0/api-job-trigger/
Or, as documented here, you can use git tags or manual approvals in/as your event triggers https://circleci.com/docs/2.0/workflows/#git-tag-job-execution
But if you want a human to decide when to push a particular button, i’d recommend a workflow that starts itself when appropriate, but doesn’t do the deploy until manually approved.
(as to conditional builds, I’ve had luck using the API to look at past builds, git diff the current commit, and build only applicable jobs by running circleci-agent step halt if a job isn’t needed to gracefully end before building the section in question)
As to question 2, to my knowledge circle will run what’s in your config.yml and doesn’t have a space to accept arbitrary user input.
This information could be used as an external data source that gets imported in at runtime for example (curl cdn.company.tld/buildConfigs.json and read them into your process)
It can’t affect the circle layer which is compiled down at trigger time, but it can affect your code running inside.
All that to say Circle is opinionated towards jobs that run themselves, and not all concepts from systems like Bamboo/Jenkins map cleanly onto the Circle way of doing things. But that comes with some big wins like auto-scaling dockerized build environments.
Yes, an approval step sounds like a good fit here. I’ve not used them myself, but I’ve seen them mentioned from time to time in the forum. I imagine they are detailed in the docs.
The problem I see with the approval step during deployment, it puts the whole pipeline on hold and doesn’t complete. For protected environments like Staging or Prod, we need the capability to be able to manually trigger them when wanted, but would like to see a green completed pipeline. I’m not sure if this is an already solved problem or I’m missing something.
Also, you now have the ability to manually trigger pipelines from the UI via a “Run Pipeline” button, which is accessible when you’re on a specific project’s pipelines page and you’ve selected a branch from the branch filter.
I think we are on a different page when talking about this. The question isn’t about triggering the pipeline. I have a few jobs in the pipeline, lets say these are the jobs: Build, RunTests, Run E2eTests, Deploy to Dev, Deploy to Staging and Deploy to Prod. I’ve a workflow which automatically triggers the jobs Build, Run Tests, Run E2eTests and then deploy to dev. I’ve added two approval steps to trigger Deploy to Staging and Deploy to Prod. These approval type steps are holding the pipeline in the “Hold” state. Ideally I’d like the pipeline itself to say success after deploying to dev and we can manually deploy to staging and prod whenever we want. How can I acheive this?