Automate Gitpod Docker image testing and promotion
Overview
Our Gitpod integration uses GDK under the hood which is built into a Docker image called registry.gitlab.com/gitlab-org/gitlab-development-kit/gitpod-workspace:stable
(note the stable
tag. The stable
tag is created via a manual process that begins with !60384 (closed) where we manually test the nightly built registry.gitlab.com/gitlab-org/gitlab-development-kit/gitpod-workspace:main
(note the main
tag) image and promote to stable
if the manual tests pass.
Here's the steps we currently issue to make this happen:
- Visit !60384 (closed)
- Rebase
gdk-gitpod-integration-branch
branch that's associated with !60384 (closed) - Open https://gitlab.com/gitlab-org/gitlab/-/tree/gdk-gitpod-integration-branch in a new tab to bring up the tree view for the
gdk-gitpod-integration-branch
branch which then displays the 'Gitpod' button. - Click the 'Gitpod' button which will create a new instance using
registry.gitlab.com/gitlab-org/gitlab-development-kit/gitpod-workspace:main
(note themain
tag). - After a few moments, the Gitpod interface will appear as will some familiar GDK output in the log window at the bottom of the page.
- Back on !60384 (closed), we create a new comment using the template provided in step 3 at !60384 (closed).
- We then perform each test.
- If all tests pass, we visit the most recently ' Rebuild Gitpod workspace image ' pipeline execution at https://gitlab.com/gitlab-org/gitlab-development-kit/-/pipeline_schedules and then press 'Play' on the manual
deploy-gitpod-workspace-image
job which updatesregistry.gitlab.com/gitlab-org/gitlab-development-kit/gitpod-workspace:stable
to be the same ref asregistry.gitlab.com/gitlab-org/gitlab-development-kit/gitpod-workspace:main
.
New Gitpod instances created from now on will use the updated registry.gitlab.com/gitlab-org/gitlab-development-kit/gitpod-workspace:stable
Docker image.
Challenge
As you can see, there's quite a few steps that are a little burdensome so we'd love to automate it as much as possible so:
- As many steps as possible are run automatically.
- The entire process is run regularly without intervention.
- Any failures result in a new Issue or Slack error being generated and the
stable
tag remains untouched.
Thoughts @gl-quality/eng-prod ?