When learning a deployment platform, I now prefer to get one deployment working manually before creating the pipeline.

The manual process might be:

Build

Test

Push

Deploy

Verify

Only after that works do I automate it:

git push

Pipeline

Build

Push

Deploy

The advantage is troubleshooting.

If this pipeline command fails:

docker build ...

I already know the image builds outside CI.

If:

docker push ...

fails, I know the image and registry path have already worked manually.

The same applies to the deployment command.

Without that baseline, a failed pipeline can simultaneously be:

  • an application problem
  • a container problem
  • an authentication problem
  • a registry problem
  • a deployment problem
  • a CI runner problem

Doing it manually first removes several unknowns.

The objective isn’t to keep deploying manually.

It’s to make the eventual automation describe a process I already understand.