[LRUG] Continuous * (Happy New Year!)
tansaku at gmail.com
Tue Jan 8 01:50:50 PST 2019
On 07/01/2019 11:02, Matthias Berth wrote:
> I guess you want to solve a real problem:
>> It seems like we can now create our own automatic pipeline
>> progression with cron jobs so that, say, on Monday at noon, the develop
>> code is rebased into staging, and at noon on wednesday the staging code
>> is rebased into production, and in each cases tests and deploys would be
>> kicked off.
>> My main motivation to automate this is to remove the manual step which is a chore and can get put off.
> My guess: you're not there yet. The manual steps are in your process
> to mitigate some risks.
> You'll run into these risks when you start doing the rebases on a
> schedule. Say, next Monday the develop code is rebased onto staging,
> you see a bug that you cannot fix until Wedesday noon. Now what?
Remove the feature, switch of the feature flag, the usual suspects, but
perhaps that was a rhetorical question :-)
> Continuous Deployment is really hard (or impossible) unless you have a
> few things in place:
> - release really small changes, like one pull request. That implies
> IMHO developing with very short-lived branches and keeping master in a
> releasable state all the time.
> - be able to back out of (revert) a bad release
> - be able to switch off a feature, or activate it selectively to
> testers / reviewers / beta customers
> - be really sure that it works, before you deploy (unit tests,
> functional tests etc)
Absolutely - I'm a huge huge fan of very small PRs and short lived
branches. We have extensive testing (perhaps too extensive) feature
flags and we've reverted features in the past.
> Based on your post, I guess you're now releasing a few times per
> month. How often is that successful, i.e. no surprises between staging
> and production?
I would say that once every couple of months we have a surprise.
> How much manual testing / checking do you have to do
> for a typical release?
We usually spend maybe 20 minutes on a manual sanity check each time a
release goes to staging, and to production.
> What is your next goal? Release to production once a week? Once a day?
I'd like us to be automatically releasing to production every week, and
when we are on the ball pushing the changes along the pipeline manually
that happens. However the rebasing along the pipeline and waiting for
the deploy and THEN manually checking the system is a chore mainly
because of the need to remember to kick it off and come back for those
manual sanity tests. I speculate that if the rebasing along the
pipeline was automated we'd be more likely to release each week and not
end up with a backlog of changes that aren't in production.
What I'm keen to know is if any CI or hosting providers offer the
feature of automated rebasing along the pipeline, and if not we'll go
ahead with rolling ourselves some cron jobs and referring to that as our
Continuous Deployment, or Delivery, or Pipeline, or something ... :-)
Thanks so much for taking the time to reply.
More information about the Chat